你好。我正在编写一个函数来查找相同的对齐列,然后将这些列存储在字典中,这样键应该是列(作为字符串),值是包含列索引的列表。我遇到了一些困难。我当前的代码只能进行一次对齐:
from Bio.Align import MultipleSeqAlignment
from Bio.Alphabet import IUPAC, Gapped, generic_dna
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
align1 = MultipleSeqAlignment([
SeqRecord(Seq("ACTGCTAGCTAG", generic_dna), id="Alpha"),
SeqRecord(Seq("ACT-CTAGCTAG", generic_dna), id="Beta"),
SeqRecord(Seq("ACTGCTAGDTAG", generic_dna), id="Gamma"),
])
print align1.format("phylip")
我不确定如何从这里开始。
输出应该是一个字典,包含相同的对齐列作为键和相同列的索引作为值。
请您参考如下方法:
您可以使用 align1[:,index] 访问列。
要创建字典,请使用此循环:
dict = {}
for i in range(0,align1.get_alignment_length()):
if align1[:,i] in dict:
dict[align1[:,i]].append(i)
else:
dict[align1[:,i]] = [i]
