我正在尝试从多重比对s文件(fasta格式)中获取一致序列。
我有一些 fasta 文件,每个文件都包含多个序列比对。当我尝试运行下面的这个函数时,我得到一个 AttributeError: 'generator' object has no attribute 'get_alignment_length'
。
我无法找到任何使用 AlignIO.parse
的代码示例,我只看到使用 AlignIO.read
的示例。
def get_consensus_seq(filename):
alignments = (AlignIO.parse(filename,"fasta"))
summary_align = AlignInfo.SummaryInfo(alignments)
consensus_seq = summary_align.dumb_consensus(0.7,"N")
print(consensus_seq)
最佳答案
如果我理解你的情况正确,问题是无法从多个对齐中获取 SummaryInfo
。他们应该合而为一。
from __future__ import annotations
from pathlib import Path
from itertools import chain
import Bio
from Bio import AlignIO
from Bio.Align import MultipleSeqAlignment
from Bio.Align.AlignInfo import SummaryInfo
SeqRecord = Bio.SeqRecord.SeqRecord
def get_consensus_seq(filename: Path | str) -> SeqRecord:
common_alignment = MultipleSeqAlignment(
chain(*AlignIO.parse(filename, "fasta"))
)
summary = SummaryInfo(common_alignment)
consensus = summary.dumb_consensus(0.7, "N")
return consensus
关于python - 如何使用 Biopython 获得多个序列比对的共识?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73702044/