如何根据biopython中的位置列表过滤对齐列?

如何根据biopython中的位置列表过滤对齐列?,python,python-2.7,biopython,sequence-alignment,Python,Python 2.7,Biopython,Sequence Alignment,基于biopython帮助页面,我可以根据第一个或最后一个10过滤对齐列,甚至可以使用 align[:, :10] + align[:, -10:] align是MSA对象,使用 from Bio import AlignIO align = AlignIO.read("Clustalw/opuntia.aln", "clustal") 但是,是否可以,比如说,根据位置列表提取列。例如 如果我有以下清单: a=[12, 52, 68,45] 是否有方法仅从对齐方式中提取这些列align 一

基于biopython帮助页面,我可以根据第一个或最后一个10过滤对齐列,甚至可以使用

align[:, :10] + align[:, -10:]
align
是MSA对象,使用

from Bio import AlignIO
align = AlignIO.read("Clustalw/opuntia.aln", "clustal")
但是,是否可以,比如说,根据位置列表提取列。例如 如果我有以下清单:

a=[12, 52, 68,45]
是否有方法仅从对齐方式中提取这些列
align

一个名为
bio3d
R
包通过提供列表作为输入(通过执行:
filtered\u align=align[,a]
)来方便地过滤对齐,但如果我能从python中使用它,那就太好了

谢谢

根据,您可以使用

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])