我正在尝试编写代码,以便为文件夹中单个fasta路线的100多个文件中的每一个获得一致序列。首先,我只想获得一个序列的共识(然后我将使用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',其中对齐中存在多态性,我似乎无法解决这个问题。任何关于如何纠正这一点的建议将不胜感激。 谢谢!
答案 0 :(得分:1)
目前简单的共识方法并不能满足您的需求。听起来你问的是IUPAC模糊代码(可能有一些阈值?)和间隙的特殊处理。您必须自己编写一些代码,可能基于现有方法。