我正在尝试访问由biopython中的成对对齐器生成的对齐对象中的各个字符串,但没有到达任何地方。我正在谈论已经对齐的序列,显示出间隙,如 print(alignment) 给出的那样,但试图单独获取它们甚至切片。文档规定这是可能的,但我遇到了错误。
from Bio import Align
aligner = Align.PairwiseAligner(mode='global',gap_score=-5)
my_target= 'CAGGTGCAGCTGGTGCAGAGCGGCGCGGAAGTGAAAAAACCGGGCAGCAGCG'
my_query='CAGTGCAGCTGGTGCAGAGCGACGCGGAAGTGAAAAAACCGGGAGCAGCG'
aln= aligner.align(my_target,my_query)
print(aln[0])
结果是:
CAGGTGCAGCTGGTGCAGAGCGGCGCGGAAGTGAAAAAACCGGGCAGCAGCG
|||-||||||||||||||||||.|||||||||||||||||||||-|||||||
CAG-TGCAGCTGGTGCAGAGCGACGCGGAAGTGAAAAAACCGGG-AGCAGCG
现在,我想单独获取底行中的“查询”序列。 我可以访问 aln[0].query 但这似乎只是裸查询序列没有对齐(有间隙)。
文档规定对齐对象应该是可迭代的以对其进行切片,但这根本不起作用。
我得到的是:
aln.alignment[1]
File c:\Anaconda3\lib\site-packages\Bio\Align\__init__.py:1024, in PairwiseAlignment.__getitem__(self, key)
1022 raise NotImplementedError
1023 if isinstance(key, int):
-> 1024 raise NotImplementedError
1025 if isinstance(key, tuple):
1026 try:
NotImplementedError:
文档:
我希望得到一些帮助和指点。 干杯。
最佳答案
回答自己的问题。 在biopython 1.81和python 3.11.3中,对齐对象似乎是可迭代的,并且每次迭代都可以进一步迭代以访问显示删除/插入的对齐字符串。 所以在我正在做的原始问题的代码中:
aln[0][1]
获取:
CAG-TGCAGCTGGTGCAGAGCGACGCGGAAGTGAAAAAACCGGG-AGCAGCG
或分割字符串:
aln[0][1][start:stop]
它在 python 3.9.12 中不起作用(尝试 aln[0][N] 时出现“未实现”错误),N 为 0 或 1。
关于python - 无法访问biopython成对对齐中的各个对齐字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76359855/