2014-05-19 40 views
1

基於biopython幫助頁面here,我可以基於第一或最後10過濾對準的列,我可以甚至拼湊使用如何根據biopython中的位置列表過濾對齊列?

align[:, :10] + align[:, -10:] 

align作爲一個MSA對象,生成subalignment使用

from Bio import AlignIO 
align = AlignIO.read("Clustalw/opuntia.aln", "clustal") 

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

a=[12, 52, 68,45] 

有沒有辦法從對準align只提取這些列。

R呼包bio3d就派上用場了由輸入(通過做:filtered_align = align[, a])提供列表過濾比對,但將是巨大的,如果我可以用這個從蟒蛇。

謝謝

回答

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]) 
相關問題