Biopython-sequence-alignments

提供:Dev Guides
移動先:案内検索

Biopython-配列アライメント

  • 配列アラインメント*は、2つ以上の配列(DNA、RNAまたはタンパク質配列)を特定の順序で配列して、それらの間の類似領域を識別するプロセスです。

同様の領域を特定することで、種間で保存されている特性、遺伝的に異なる種の近さ、種の進化方法などの多くの情報を推測できます。 Biopythonは、配列アライメントの広範なサポートを提供します。

この章でBiopythonが提供する重要な機能のいくつかを学びましょう-

解析シーケンスのアライメント

Biopythonは、配列アライメントを読み書きするためのモジュールBio.AlignIOを提供します。 バイオインフォマティクスでは、以前に学習したシーケンスデータと同様に、シーケンスアラインメントデータを指定するために利用できる多くの形式があります。 Bio.AlignIOは、Bio.SeqIOがシーケンスデータで動作し、Bio.AlignIOがシーケンスアラインメントデータで動作することを除いて、Bio.SeqIOと同様のAPIを提供します。

学習を開始する前に、インターネットからサンプルの配列アライメントファイルをダウンロードしてみましょう。

サンプルファイルをダウンロードするには、以下の手順に従ってください-

  • ステップ1 *-お気に入りのブラウザを開き、http://pfam.xfam.org/family/browse Webサイトにアクセスします。 すべてのPfamファミリがアルファベット順に表示されます。
  • ステップ2 *-シード値の数が少ないファミリを1つ選択します。 最小限のデータが含まれており、アライメントを簡単に操作できます。 ここで、PF18225を選択/クリックすると、http://pfam.xfam.org/family/PF18225に移動して、配列アライメントなどの詳細が表示されます。
  • ステップ3 *-アラインメントセクションに移動し、ストックホルム形式のシーケンスアラインメントファイル(PF18225_seed.txt)をダウンロードします。

以下のようにBio.AlignIOを使用して、ダウンロードした配列アライメントファイルを読み取ってみましょう-

Bio.AlignIOモジュールのインポート

>>> from Bio import AlignIO

読み取りメソッドを使用した読み取りアライメント。 readメソッドは、指定されたファイルで使用可能な単一のアライメントデータを読み取るために使用されます。 指定されたファイルに多くのアライメントが含まれている場合、解析メソッドを使用できます。 parseメソッドは、Bio.SeqIOモジュールのparseメソッドと同様の反復可能なアライメントオブジェクトを返します。

>>> alignment = AlignIO.read(open("PF18225_seed.txt"), "stockholm")

整列オブジェクトを印刷します。

>>> print(alignment)
SingleLetterAlphabet() alignment with 6 rows and 65 columns
MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVA...EGP B7RZ31_9GAMM/59-123
AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADIT...KKP A0A0C3NPG9_9PROT/58-119
ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMA...KKP A0A143HL37_9GAMM/57-121
TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMA...NKP A0A0X3UC67_9GAMM/57-121
AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIM...NRK B3PFT7_CELJU/62-126
AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVA...NRT K4KEM7_SIMAS/61-125
>>>

また、配列だけでなく、以下で利用可能なシーケンス(SeqRecord)を確認することができます-

>>> for align in alignment:
... print(align.seq)
...
MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVATVANQLRGRKRRAFARHREGP
AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADITA---RLDRRREHGEHGVRKKP
ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMAPMLIALNYRNRESHAQVDKKP
TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMAPLFKVLSFRNREDQGLVNNKP
AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIMVLAPRLTAKHPYDKVQDRNRK
AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVADLMRKLDLDRPFKKLERKNRT
>>>

複数の配置

一般に、ほとんどの配列アライメントファイルには単一のアライメントデータが含まれており、 read メソッドを使用して解析するだけで十分です。 マルチシーケンスアラインメントの概念では、2つ以上のシーケンスが比較され、それらの間のサブシーケンスの最適な一致が得られ、単一ファイルで複数のシーケンスアラインメントが行われます。

入力配列アライメント形式に複数の配列アライメントが含まれている場合、以下に指定されているように*読み取り*メソッドの代わりに*解析*メソッドを使用する必要があります-

>>> from Bio import AlignIO
>>> alignments = AlignIO.parse(open("PF18225_seed.txt"), "stockholm")
>>> print(alignments)
<generator object parse at 0x000001CD1C7E0360>
>>> for alignment in alignments:
... print(alignment)
...
SingleLetterAlphabet() alignment with 6 rows and 65 columns
MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVA...EGP B7RZ31_9GAMM/59-123
AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADIT...KKP A0A0C3NPG9_9PROT/58-119
ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMA...KKP A0A143HL37_9GAMM/57-121
TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMA...NKP A0A0X3UC67_9GAMM/57-121
AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIM...NRK B3PFT7_CELJU/62-126
AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVA...NRT K4KEM7_SIMAS/61-125
>>>

ここで、parseメソッドは反復可能なアライメントオブジェクトを返し、実際のアライメントを取得するために反復できます。

ペアワイズ配列アライメント

ペアごとの配列アライメント*は、一度に2つの配列のみを比較し、可能な限り最良の配列アライメントを提供します。 *Pairwise は理解しやすく、結果として生じる配列アライメントから推測するのに例外的です。

Biopythonには、ペアワイズ法を使用してアライメントシーケンスを識別するための特別なモジュール Bio.pairwise2 が用意されています。 Biopythonは、アライメントシーケンスを見つけるために最適なアルゴリズムを適用し、他のソフトウェアと同等です。

ペアワイズモジュールを使用して、2つの単純で仮説的なシーケンスのシーケンスアラインメントを見つける例を作成しましょう。 これは、配列アライメントの概念と、Biopythonを使用してプログラムする方法を理解するのに役立ちます。

ステップ1

以下のコマンドでモジュール pairwise2 をインポートします-

>>> from Bio import pairwise2

ステップ2

2つのシーケンス、seq1とseq2を作成します-

>>> from Bio.Seq import Seq
>>> seq1 = Seq("ACCGGT")
>>> seq2 = Seq("ACGT")

ステップ3

seq1およびseq2とともにメソッドpairwise2.align.globalxxを呼び出して、以下のコード行を使用してアライメントを見つけます-

>>> alignments = pairwise2.align.globalxx(seq1, seq2)

ここで、 globalxx メソッドは実際の作業を実行し、指定されたシーケンスで可能な限り最良のアライメントを見つけます。 実際、Bio.pairwise2は、さまざまなシナリオでアライメントを見つけるために、以下の規則に従う一連のメソッドを提供します。

<sequence alignment type>XY

ここで、シーケンスアライメントタイプとは、global_または_localのアライメントタイプを指します。 global typeは、シーケンス全体を考慮してシーケンスのアライメントを検出しています。 ローカルタイプは、指定されたシーケンスのサブセットも調べて、シーケンスのアライメントを検出します。 これは面倒ですが、指定されたシーケンス間の類似性についてのより良いアイデアを提供します。

  • Xは一致スコアを指します。 可能な値は、x(完全一致)、m(同一の文字に基づくスコア)、d(文字と一致スコアを備えたユーザー提供辞書)、最後にc(カスタムスコアリングアルゴリズムを提供するユーザー定義関数)です。
  • Yはギャップペナルティを表します。 可能な値は、x(ギャップペナルティなし)、s(両方のシーケンスに同じペナルティ)、d(各シーケンスに異なるペナルティ)、最後にc(カスタムギャップペナルティを提供するユーザー定義関数)です。

したがって、localdsも有効なメソッドであり、ローカルアライメント手法、一致用のユーザー指定辞書、および両方のシーケンスのユーザー指定ギャップペナルティを使用してシーケンスのアライメントを検索します。

>>> test_alignments = pairwise2.align.localds(seq1, seq2, blosum62, -10, -1)

ここで、blosum62は、一致スコアを提供するためにpairwise2モジュールで使用可能な辞書を指します。 -10はギャップオープンペナルティを示し、-1はギャップ拡張ペナルティを示します。

ステップ4

反復可能な整列オブジェクトをループし、個々の整列オブジェクトを取得して印刷します。

>>> for alignment in alignments:
... print(alignment)
...
('ACCGGT', 'A-C-GT', 4.0, 0, 6)
('ACCGGT', 'AC--GT', 4.0, 0, 6)
('ACCGGT', 'A-CG-T', 4.0, 0, 6)
('ACCGGT', 'AC-G-T', 4.0, 0, 6)

ステップ5

Bio.pairwise2モジュールは、フォーマットメソッド、format_alignmentを提供して、結果をよりよく視覚化します-

>>> from Bio.pairwise2 import format_alignment
>>> alignments = pairwise2.align.globalxx(seq1, seq2)
>>> for alignment in alignments:
... print(format_alignment(*alignment))
...

ACCGGT
| | ||
A-C-GT
   Score=4

ACCGGT
|| ||
AC--GT
   Score=4

ACCGGT
| || |
A-CG-T
   Score=4

ACCGGT
|| | |
AC-G-T
   Score=4

>>>

Biopythonには、配列アライメントを行うための別のモジュールAlignもあります。 このモジュールは、アルゴリズム、モード、マッチスコア、ギャップペナルティなどのパラメータの設定だけに異なるAPIセットを提供します。Alignオブジェクトの簡単な外観は次のとおりです-

>>> from Bio import Align
>>> aligner = Align.PairwiseAligner()
>>> print(aligner)
Pairwise sequence aligner with parameters
   match score: 1.000000
   mismatch score: 0.000000
   target open gap score: 0.000000
   target extend gap score: 0.000000
   target left open gap score: 0.000000
   target left extend gap score: 0.000000
   target right open gap score: 0.000000
   target right extend gap score: 0.000000
   query open gap score: 0.000000
   query extend gap score: 0.000000
   query left open gap score: 0.000000
   query left extend gap score: 0.000000
   query right open gap score: 0.000000
   query right extend gap score: 0.000000
   mode: global
>>>

配列アライメントツールのサポート

Biopythonは、Bio.Align.Applicationsモジュールを介して多くの配列アライメントツールへのインターフェイスを提供します。 ツールの一部を以下に示します-

  • ClustalW
  • エンボス針と水

最も一般的なアライメントツールClustalWを使用して、配列アライメントを作成するBiopythonの簡単な例を作成しましょう。

  • ステップ1 *-Clustalwプログラムをhttp://www.clustal.org/download/current/からダウンロードしてインストールします。 また、システムパスを「clustal」インストールパスで更新します。
  • ステップ2 *-モジュールBio.Align.ApplicationsからClustalwCommanLineをインポートします。
>>> from Bio.Align.Applications import ClustalwCommandline
>>> cmd = ClustalwCommandline("clustalw2",
infile="/path/to/biopython/sample/opuntia.fasta")
>>> print(cmd)
clustalw2 -infile=fasta/opuntia.fasta
  • ステップ4 *-cmd()を呼び出すと、clustalwコマンドが実行され、結果のアライメントファイルopuntia.alnの出力が提供されます。
>>> stdout, stderr = cmd()
  • ステップ5 *-以下のようにアライメントファイルを読み取り、印刷します-
>>> from Bio import AlignIO
>>> align = AlignIO.read("/path/to/biopython/sample/opuntia.aln", "clustal")
>>> print(align)
SingleLetterAlphabet() alignment with 7 rows and 906 columns
TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273285|gb|AF191659.1|AF191
TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273284|gb|AF191658.1|AF191
TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273287|gb|AF191661.1|AF191
TATACATAAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273286|gb|AF191660.1|AF191
TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273290|gb|AF191664.1|AF191
TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273289|gb|AF191663.1|AF191
TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273291|gb|AF191665.1|AF191
>>>