0

私はすでに複数の配列アラインメントを行った 520 のインフルエンザ配列のセットを持っており、ペアごとの同一性マトリックスを計算しました。別のシーケンスを追加したい場合は、すべてを再調整し、PWI マトリックス全体を再計算する必要があります。この他のシーケンスをアラインメントに「追加」し、他のすべてのシーケンスに対してのみ PWI を計算するために使用できるプログラムはありますか?

簡単な例は次のようになります。次のスコアの 2x2 アライメントがあります。

     SeqA SeqB
SeqA 1.00 0.98
SeqB 0.98 1.00

完全なアラインメントを再実行せずに、他のすべての配列に対して「SeqC」を実行するだけで、次のマトリックスを取得したいと思います。

     SeqA SeqB SeqC
SeqA 1.00 0.98 0.99
SeqB 0.98 1.00 0.97
SeqC 0.99 0.97 1.00

私は BioPython パッケージを使用しており、Python が好みの言語ですが、必要に応じて Java でも問題ありません。

[BioStars に参加していない専門家がここにいる場合に備えて、BioStars からの相互投稿であることをここでは断言します。BioStars の投稿はhttp://www.biostars.org/p/77607/ですが、内容はまったく同じです。]

4

1 に答える 1

1

アライメントの再実行にかかる時間の主な問題 (PWI マトリックスの再計算は計算コストがかからないはずです) の場合、MUSCLEには、探していることを実行する機能があります。これは、一般に「プロファイル間のアライメント」と呼ばれる手順です。 " .

プロファイル間のアライメント

フラグを渡す-profileと、配置は「互いに再配置され、入力列はそのまま維持され、必要に応じてギャップの列が挿入されます。」:

関連する配列の既存のアラインメントが 2 つある場合は、MUSCLE の –profile オプションを使用して、これら 2 つの配列をアラインメントできます。一般的な使用法は次のとおりです。

   muscle -profile -in1 one.afa -in2 two.afa -out both.afa

Biopython での実装

BiopythonにはMUSCLE のラッパーがありますが、単にsubprocessMUSCLE を呼び出して結果を解析してMultipleSeqAlignment:

# Do profile-profile alignment (one sequence to many aligned)
seq_fn = "influenza_seq.fasta"
aligned_fn = "520_influenza_seqs.afasta"
cmd = ['muscle', '-clwstrict', '-profile', '-in1', seq_fn, '-in2', aligned_fn]
aligner = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = aligner.communicate()

# Get resulting alignment (MultipleSeqAlignment)
alignment =  AlignIO.read(StringIO(stdout), "clustal",
                          alphabet=Alphabet.ProteinAlphabet())
于 2013-08-07T16:50:58.547 に答える