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

时间:2014-05-19 17:46:23

标签: python python-2.7 biopython sequence-alignment

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

将子对齐拼凑在一起
align[:, :10] + align[:, -10:]

align是使用

生成的MSA对象
from Bio import AlignIO
align = AlignIO.read("Clustalw/opuntia.aln", "clustal")

但是,有可能,根据位置列表提取列。例如, 如果我有以下列表:

a=[12, 52, 68,45]

有没有办法从对齐align中提取这些列。

名为R的{​​{1}}程序包可以通过提供列表作为输入来过滤对齐(通过执行:bio3d),但如果我可以从python中使用它,那就太棒了。

谢谢

1 个答案:

答案 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])
相关问题