おそらく単純な質問ですが、MultipleSeqAlignmentオブジェクトの単純なリストを作成するのに問題があります。
from Bio import AlignIO
import Bio.Align
#Read multi-aligned fasta file
alignment = AlignIO.read(sys.argv[1], "fasta")
#some testing values
first_POI = 10 #base position
major = "a" #major allele
minor = "g" #minor allele
#create lists of sequence ids that are major or minor allele
align_major = Bio.Align.MultipleSeqAlignment([])
align_minor = Bio.Align.MultipleSeqAlignment([])
for record in alignment:
if (record.seq[first_POI] == major):
#compile the sequences that have major allele
align_major = align_major + record
elif (record.seq[first_POI] == minor):
#compile sequences with minor allele
align_minor = align_minor + record
このエラーが発生します:
File "FindHaplotypes.py", line 53, in <module>
align_major=align_major+record
File "C:\Python34\lib\site-packages\Bio\Align\__init__.py", line 385, in __add__
raise NotImplementedError
だから私は少し混乱していて、MultipleSeqAlignment
fromBio.Align
はおそらくに格納されているのと同じタイプのオブジェクトではないことをすでに想像できますBio.AlignIO
。どちらもMSAを扱っているので、同じだと思いました。私は自分のAlignIO
オブジェクトを文字列のように一緒に追加できることを知っていますが、問題はAlignIO
、上記の方法でそれらを一緒に追加するために空のオブジェクトを初期化する方法がわからないことです。以前は、最初のレコードを新しい変数に設定し、forループを入力して追加することで、醜い方法でそれを行う必要がありました。
エラーはかなり明白です:NotImplementedError
。inのBiopython実装で__add__
はMultipleSeqAlignment
、2つのオブジェクトがのインスタンスである必要がありますMultipleSeqAlignment
。他のオブジェクトを含む追加は実装されていません。
あなたはappend()
あなたのmsaの方法を使うべきです:
for record in alignment:
if (record.seq[first_POI]==major):
#compile the sequences that have major allele
align_major.append(record)
elif (record.seq[first_POI]==minor):
#compile sequences with minor allele
align_minor.append(record)
これが必要record
であることをSeqRecord
同じで、Alphabet
のalign_mayor
とalign_minor
同じな長さ。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加