Skip to main content
 首页 » 编程设计

python之从多序列比对中输出相同的列

2025年05月04日11zhoujg

你好。我正在编写一个函数来查找相同的对齐列,然后将这些列存储在字典中,这样键应该是列(作为字符串),值是包含列索引的列表。我遇到了一些困难。我当前的代码只能进行一次对齐:

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]