基于biopython帮助页面here,我可以根据第一个或最后一个10来过滤对齐列,我甚至可以使用
将子对齐拼凑在一起align[:, :10] + align[:, -10:]
align
是使用
from Bio import AlignIO
align = AlignIO.read("Clustalw/opuntia.aln", "clustal")
但是,有可能,根据位置列表提取列。例如, 如果我有以下列表:
a=[12, 52, 68,45]
有没有办法从对齐align
中提取这些列。
名为R
的{{1}}程序包可以通过提供列表作为输入来过滤对齐(通过执行:bio3d
),但如果我可以从python中使用它,那就太棒了。
谢谢
答案 0 :(得分:2)
根据Biopython docs,您可以使用
获取第x列align[:, x]
所以以下内容应该为您完成这项工作:
from Bio import AlignIO
align = AlignIO.read("Clustalw/opuntia.aln", "clustal")
indices = [12, 52, 68, 45]
columns_as_strings = []
for column in indices:
columns_as_strings.append(align[:, column])