Python3「文字列置換」の基本と応用

スポンサーリンク

バイオインフォマティクスは、コンピュータを使用して生物学的データを解析する分野であり、特にDNA、RNA、タンパク質の配列データの解析が重要です。Pythonはその簡潔さと豊富なライブラリにより、バイオインフォマティクスで広く使われています。本記事では、Python3を使って「文字列を置き換える」方法について基本から応用まで解説します。

1. 文字列置換の基本

まずはPythonの標準機能を使った基本的な文字列置換方法について説明します。

str.replace()

Pythonの文字列メソッドreplace()を使えば、特定の文字列を別の文字列に置き換えることができます。

# 例
original_string = "ACGTACGTACGT"
replaced_string = original_string.replace("ACGT", "TGCA")
print(replaced_string)  # 出力: TGCATGCATGCA

このメソッドは、指定された文字列をすべて新しい文字列に置き換えます。

部分的な置換

str.replace()は、特定の回数だけ置き換えることもできます。

# 例
original_string = "ACGTACGTACGT"
replaced_string = original_string.replace("ACGT", "TGCA", 1)
print(replaced_string)  # 出力: TGCAACGTACGT

この例では、最初の一回だけ「ACGT」が「TGCA」に置き換えられています。

2. 応用: 正規表現を使った置換

複雑な文字列置換が必要な場合は、正規表現(regex)を使うことが有効です。Pythonではreモジュールを使って正規表現を扱います。

re.sub()

正規表現を使った置換にはre.sub()を使用します。この関数は、指定したパターンに一致する部分を新しい文字列に置き換えます。

import re

# 例
original_string = "ACGT1234ACGT5678ACGT"
pattern = r'\d+'  # 数字のパターン
replaced_string = re.sub(pattern, "NNNN", original_string)
print(replaced_string)  # 出力: ACGTNNNNACGTNNNNACGT

この例では、数字を「NNNN」に置き換えています。

キャプチャグループを使った置換

正規表現のキャプチャグループを使うと、置き換える文字列に一致した部分を再利用することができます。

import re

# 例
original_string = "gene1: ATGCGT, gene2: ATGCCA"
pattern = r'(gene\d+): (\w+)'
replacement = r'\1: XXXX'
replaced_string = re.sub(pattern, replacement, original_string)
print(replaced_string)  # 出力: gene1: XXXX, gene2: XXXX

この例では、遺伝子名を保持しつつ、配列部分だけを「XXXX」に置き換えています。

3. バイオインフォマティクスでの実践例

実際のバイオインフォマティクスのデータ処理において、文字列置換は頻繁に使われます。ここでは、DNA配列のデータクリーニングの例を紹介します。

ファイルからのデータ読み込みと置換

まず、ファイルからDNA配列データを読み込み、特定のヌクレオチドシーケンスを置き換える例を見てみましょう。

# 例
filename = "dna_sequences.txt"

with open(filename, 'r') as file:
    sequences = file.readlines()

cleaned_sequences = [seq.strip().replace("N", "") for seq in sequences]

with open("cleaned_dna_sequences.txt", 'w') as file:
    for seq in cleaned_sequences:
        file.write(seq + "\n")

この例では、DNA配列データから「N」という不明なヌクレオチドを取り除いています。

アミノ酸配列の変異置換

次に、アミノ酸配列の特定の変異を置き換える方法を見てみましょう。これは、特定の遺伝子変異を解析する際に有用です。

import re

# 例
amino_acid_sequence = "MKVLYLAGYTGSRAG"
mutation_pattern = r'Y(\w)G'  # YとGに挟まれた任意のアミノ酸
replaced_sequence = re.sub(mutation_pattern, "Y*G", amino_acid_sequence)
print(replaced_sequence)  # 出力: MKVLYLAG*TGSRAG

この例では、「Y」と「G」に挟まれたアミノ酸を「*」に置き換えています。

4. まとめ

Python3を使った文字列置換は、バイオインフォマティクスのデータ解析において非常に強力なツールです。基本的なstr.replace()メソッドから、正規表現を活用したre.sub()まで、多様な置換方法を駆使してデータのクリーニングや解析を行うことができます。これらの技術を活用して、より効率的で正確なデータ解析を目指しましょう。

タイトルとURLをコピーしました