我正在尝试编写代码来为文件夹中的 100 多个单独的 fasta 对齐文件中的每一个获得一致序列。一开始我只是想获得一个序列的共识(然后我将使用一个 for 循环来处理所有序列),但是我在共识的字母表上遇到了麻烦。我的测试fasta对齐是:
>seq1
ACGTACGATCGTTACTCCTA
>seq2
ACGTACGA---TTACTCGTA
我希望达成的共识是:
ACGTACGANNNTTACTCSTA
我希望任何包含间隙的列都用“N”表示,而任何没有 100% 相同核苷酸的列都用歧义代码表示。
我的代码不起作用是:
from Bio import AlignIO
from Bio.Align import AlignInfo
from Bio.Alphabet import IUPAC, Gapped
alphabet = Gapped(IUPAC.ambiguous_dna)
alignment = AlignIO.read(open("fasta_align_for_consensus.fa"), "fasta")
summary_align = AlignInfo.SummaryInfo(alignment)
consensus = summary_align.gap_consensus(threshold = 1.0, ambiguous = 'N', consensus_alpha \
= alphabet, require_multiple = 2)
对象“歧义”只接受一个字符串并将一个“N”放置在一致性中存在对齐多态性的任何位置,我似乎无法解决这个问题。任何有关如何纠正此问题的建议将不胜感激。谢谢!