Python を使用して DNA ストランドの逆補完を取得する
- DNA 鎖の逆相補
-
Python の
for
ループを使用して DNA ストランドの逆補完を取得する -
Python で
join()
メソッドを使用して DNA ストランドの逆補数を取得する -
Python で
get()
メソッドを使用して DNA ストランドの逆補数を取得する - Python でリスト内包表記を使用して DNA 鎖の逆補完を取得する
-
Python で
translate()
メソッドを使用して DNA ストランドの逆補数を取得する - Python の Biopython モジュールを使用して DNA 鎖の逆相補体を取得する
- まとめ
Python で科学的なタスクに取り組んでいる間、特定のタスクを実行する必要があります。この記事では、Python を使用して DNA 鎖の逆相補体を取得するさまざまな方法について説明します。
DNA 鎖の逆相補
DNA 鎖は、主にアデニン(A)、チミン(T)、グアニン(G)、シトシン(C)の 4 種類の塩基で表されます。他の種類の基地もあるかもしれません。
各 DNA 鎖は、一連の文字 A、T、G、および C で表されます。たとえば、ACGTAATTGGCC は DNA 鎖の 1つである可能性があります。
DNA 鎖の補体を取得するには、元の鎖の A を T に、C を G に、G を C に、T を A に置き換えます。たとえば、ACGTAATTGGCC の補数は TGCATTAACCGG です。
DNA 鎖の補集合を逆にするために、DNA 鎖の補集合の文字を逆にします。したがって、逆補数は GGCCAATTACGT になります。
ここで、Python を使用して DNA 文字列の逆補数を取得する方法について説明します。
Python の for
ループを使用して DNA ストランドの逆補完を取得する
次の手順に従って、Python の for
ループを使用して DNA 鎖の逆補数を取得します。
-
まず、出力文字列を格納するために、
reversed_strand
という名前の空の文字列を定義します。 -
次に、
len()
関数を使用して入力 DNA 鎖の長さを見つけます。len()
関数は、DNA 鎖の文字列を受け取り、長さを返します。 -
その後、
for
ループを逆の順序で使用して、入力された DNA 鎖の文字を繰り返し処理します。 -
反復中に、文字 A に遭遇した場合、
reversed_strand
に T を追加します。同様に、シーケンスで A、C、および G に遭遇した場合、reversed_strand
に T、G、および C を追加します。 -
入力 DNA 鎖に他の文字が見つかった場合は、同じ文字を
reversed_strand
に追加します。 -
for
ループを実行した後、変数reversed_strand
で逆 DNA 鎖を取得します。
これは、次の例で確認できます。
input_strand = "ACGTAATTGGCC"
reversed_strand = ""
length = len(input_strand)
for i in range(length):
character = input_strand[length - 1 - i]
if character == "A":
reversed_strand = reversed_strand + "T"
elif character == "T":
reversed_strand = reversed_strand + "A"
elif character == "G":
reversed_strand = reversed_strand + "C"
elif character == "C":
reversed_strand = reversed_strand + "G"
else:
reversed_strand = reversed_strand + character
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)
出力:
The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT
Python で join()
メソッドを使用して DNA ストランドの逆補数を取得する
上記のアプローチでは、reversed_strand
を作成するときに、入力 DNA ストランドの文字ごとに新しい文字列が作成されます。入力 DNA 鎖が長すぎる場合、これは時間とメモリの点でコストがかかる可能性があります。
これを回避するために、リストを使用して、Python を使用して DNA 鎖の逆補数を取得できます。
次の手順を使用して、for
ループ、リスト、および join()
メソッドを使用して DNA 鎖を逆相補します。
-
まず、
complement_chars
という名前の空のリストを作成して、DNA 鎖の逆補数の文字を格納します。 -
次に、
len()
関数を使用して入力 DNA 鎖の長さを見つけます。 -
その後、
for
ループを逆の順序で使用して、入力された DNA 鎖の文字を繰り返し処理します。 -
反復では、文字 A に遭遇した場合、
append()
メソッドを使用してcomplement_chars
に T を追加します。append()
メソッドは、complement_chars
で呼び出されると、入力引数として文字を受け取り、それをcomplement_chars
に追加します。 -
同様に、シーケンスで A、C、および G に遭遇した場合、
complement_chars
に T、G、および C を追加します。 -
入力 DNA 鎖に他の文字が見つかった場合は、同じ文字を
complement_chars
に追加します。 -
for
ループを実行した後、complement_chars
に入力 DNA 鎖の逆補数の文字のリストを取得します。 -
この後、
join()
メソッドを使用して、元の DNA 鎖の逆相補体を取得します。join()
メソッドは、input_string
で呼び出されると、入力引数として反復可能なオブジェクトを取ります。実行後、反復可能オブジェクトの要素を文字として含む新しい文字列を、input_string
で区切って返します。 -
join()
メソッドを使用して DNA 鎖の逆補数を取得するには、入力引数としてcomplement_chars
を使用して空の文字列でjoin()
メソッドを呼び出します。join()
メソッドを実行した後、入力 DNA 鎖の逆補数を取得します。
これは、次の例で確認できます。
input_strand = "ACGTAATTGGCC"
reversed_strand = ""
complement_chars = []
length = len(input_strand)
for i in range(length):
character = input_strand[length - 1 - i]
if character == "A":
complement_chars.append("T")
elif character == "T":
complement_chars.append("A")
elif character == "G":
complement_chars.append("C")
elif character == "C":
complement_chars.append("G")
else:
complement_chars.append(character)
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)
出力:
The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT
Python で get()
メソッドを使用して DNA ストランドの逆補数を取得する
for
ループで if-else
ブロックを使用する代わりに、辞書と get()
メソッドを使用して、Python を使用して DNA 鎖の逆補数を取得できます。このタスクでは、次の辞書を作成します。
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
get()
メソッドは、ディクショナリ内のキーに関連付けられた値を取得します。ディクショナリで呼び出されると、get()
メソッドは最初の入力引数としてキーを取り、2 番目の入力引数としてオプションの値を取ります。
キーがディクショナリに存在する場合、それに関連付けられた値を返します。それ以外の場合、get()
メソッドは 2 番目の引数として渡されたオプションの値を返します。
次の手順を使用して、get()
メソッドと reverse_dict
を使用して DNA 鎖の補体を反転させます。
-
まず、出力文字列を格納するために、
reversed_strand
という名前の空の文字列を定義します。 -
次に、
len()
関数を使用して入力 DNA 鎖の長さを見つけます。 -
その後、
for
ループを使用して、入力された DNA 鎖の文字を逆の順序で繰り返します。 -
反復中に、現在の文字を最初と 2 番目の引数として、
reverse_dict
でget()
メソッドを呼び出します。現在の文字がreverse_dict
に存在する場合、get()
メソッドは DNA 鎖補体を返します。それ以外の場合、get()
メソッドは現在の文字を返します。 -
get()
メソッドの出力をreversed_strand
に追加します。 -
for
ループを実行した後、変数reversed_strand
で逆 DNA 鎖を取得します。
これは、次の例で確認できます。
input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
length = len(input_strand)
for i in range(length):
character = input_strand[length - 1 - i]
reversed_strand = reversed_strand + reverse_dict.get(character, character)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)
出力:
The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT
前に説明したように、for
ループで文字列を作成するアプローチにはコストがかかります。したがって、次の例に示すように、リストと join()
メソッドを get()
メソッドとともに使用して、Python を使用して DNA 鎖の逆補数を取得できます。
input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
complement_chars = []
length = len(input_strand)
for i in range(length):
character = input_strand[length - 1 - i]
complement_chars.append(reverse_dict.get(character, character))
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)
出力:
The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT
ここでは、最初に、入力 DNA 鎖を反復しながら、逆補数の文字のリストを作成しました。その後、join()
メソッドを使用して文字を結合することにより、逆補完を作成しました。
Python でリスト内包表記を使用して DNA 鎖の逆補完を取得する
for
ループを使用する代わりに、リスト内包表記を使用して、Python を使用して DNA 鎖を逆補完することもできます。
まず、リスト内包表記を使用して DNA 鎖を補完するために、インデックスを使用して入力 DNA 鎖を反転します。その後、最後の例で作成した get()
メソッドと reverse_dict
でリスト内包表記を使用して、逆補数の文字のリストを取得します。
文字のリストを取得したら、次の例に示すように、join()
メソッドを使用して、入力 DNA 鎖の逆補数を見つけます。
input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
temp = input_strand[::-1]
complement_chars = [reverse_dict.get(character) for character in temp]
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)
出力:
The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT
Python で translate()
メソッドを使用して DNA ストランドの逆補数を取得する
translate()
メソッドを使用して、DNA 鎖の逆相補体を見つけることもできます。このために、次の手順を使用します。
-
まず、文字列のインデックスを使用して、入力 DNA 鎖を反転します。その後、
maketrans()
関数を使用して変換テーブルを作成します。 -
maketrans()
関数は入力引数として 2つの文字列を取り、両方の文字列の長さは同じである必要があります。実行後、最初の文字列の各文字が 2 番目の文字列の同じ位置にある文字にマップされている変換テーブルを返します。 -
入力 DNA ストランドで
maketrans()
メソッドを呼び出している間、最初の入力引数として"ATGC"
を渡し、2 番目の入力引数として"TACG"
を渡します。このようにして、入力 DNA 鎖の各文字がその補集合にマッピングされます。 -
翻訳テーブルを作成した後、
translate()
メソッドを使用して、DNA 鎖の逆相補体を取得します。 -
translate()
メソッドは、文字列で呼び出されると、入力引数として変換テーブルを取ります。実行後、変換テーブルに従って呼び出された文字列の文字を置き換えることにより、新しい文字列を返します。文字のマッピングが変換テーブルに見つからない場合は、同じ文字が出力文字列にコピーされます。 -
入力引数として変換テーブルを使用して、反転した DNA 鎖に対して
translate()
メソッドを呼び出します。 -
translate()
メソッドを実行した後、入力 DNA 鎖の逆補数を取得します。
これは、次の例で確認できます。
input_strand = "ACGTAATTGGCC"
translation_table = input_strand.maketrans("ATCG", "TAGC")
temp = input_strand[::-1]
reversed_strand = temp.translate(translation_table)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)
出力:
The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT
Python の Biopython モジュールを使用して DNA 鎖の逆相補体を取得する
Python の Biopython モジュールを使用して、DNA 鎖を逆相補することもできます。次のステートメントを使用すると、PythonPIP3 のパッケージインストーラーを使用して Biopython モジュールをインストールできます。
pip3 install Bio
Biopython モジュールは、Python を使用して DNA 鎖を逆相補するための reverse_complement()
メソッドを提供します。DNA シーケンスオブジェクトで呼び出されると、reverse_complement()
メソッドは DNA シーケンスの逆補数を返します。
次の手順を使用して、Python の reverse_complement()
メソッドを使用して DNA 鎖の逆補数を取得します。
-
まず、
Seq()
関数を使用して、DNA 鎖から DNA シーケンスを作成します。Seq()
関数は、入力として DNA 鎖を表す文字列を受け取り、DNA シーケンスを返します。 -
DNA シーケンスオブジェクトを取得した後、次の例に示すように、シーケンスに対して
reverse_complement()
メソッドを呼び出して、DNA 鎖の逆補数を取得します。
from Bio.Seq import Seq
input_strand = "ACGTAATTGGCC"
sequence = Seq(input_strand)
reversed_strand = sequence.reverse_complement()
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)
出力:
The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT
まとめ
この記事では、Python を使用して DNA 鎖を逆相補するためのさまざまなアプローチについて説明しました。これらすべてのメソッドの中から、外部ライブラリの使用が許可されていない場合は、translate()
メソッドを使用してアプローチを選択できます。それ以外の場合は、Biopython モジュールを使用して、Python の DNA 鎖を逆補完することができます。
この記事を楽しんでいただけたでしょうか。より有益な記事をお楽しみに。
Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.
GitHub