2

2 つのシーケンス間のローカル アラインメントを見つけるコードを書いています。これは、私が取り組んできた最小限の実用的な例です。

from Bio import pairwise2
from Bio.pairwise2 import format_alignment
seq1 = "GTGGTCCTAGGC"
seq2 = "GCCTAGGACCAC"
# scores for the alignment
match =1
mismatch = -2
gapopen = -2
gapext = 0
# see: http://biopython.org/DIST/docs/api/Bio.pairwise2-module.html
# 'localms' takes <seq1,seq2, match,mismatch,open,extend>
for a in pairwise2.align.localms(seq1,seq2,match,mismatch,gapopen,gapext):
    print(format_alignment(*a))

次のコードは、出力で実行されます

GTGGTCCTAGGC----
      |||||
----GCCTAGGACCAC
  Score=5

しかし、次のように、5 つのアラインメントの横にある「CC」を見つけて、「6」のスコアが可能であるはずです。

GTGGTCCTAGGC----
     ||||||
----GCCTAGGACCAC
  Score=6

何が起こっているかについてのアイデアはありますか?

4

1 に答える 1

4

これは、Biopython の pairwise2 モジュールのローカル アラインメントの現在の実装におけるバグのようです。Biopython の GitHubに最近のプル リクエスト (#782) があり、問題を解決するはずです。

>>> from Bio import pairwise2  # This is the version from the pull request
>>> seq1 = 'GTGGTCCTAGGC'
>>> seq2 = 'GCCTAGGACCAC'
>>> for a in pairwise2.align.localms(seq1, seq2, 1, -2, -2, 0):
        print pairwise2.format_alignment(*a)


GTGGTCCTAGGC----
     ||||||
----GCCTAGGACCAC
  Score=6
  1. 短いシーケンスのみを使用している場合は、pairwise2.py上記のプル リクエストからコードをダウンロードできます。さらに、名前を変更するか、 ( )の末尾にある C 関数のインポートを削除するなどして 、それぞれの C モジュール (cpairwise2.pydまたは ) を「非アクティブ化」する必要があります。cpairwise2.sopairwise2.pyfrom .cpairwise import ...

  2. より長いシーケンスで作業している場合は、C モジュールの速度向上が必要になります。cpairwise2module.cしたがって、プル リクエストからダウンロード して、 cpairwise2.pyd(Windows システムの場合) または cpairwise2.so(Unix、Linux) にコンパイルする必要もあります。

編集: Biopython 1.68 では、問題は解決されています。

于 2016-03-17T08:51:49.630 に答える