0

我有一个用于创建 FASTA 序列文件的程序。

input=['ARIMALTHNAEYSDSFTAL','ARIMFLTHNFEYSESFTAL','AHIMNPTENAEYHESFTAL','AHIMNPTENTEYWDSFTAL','AHIMNDTHNFEYHDSFTAL','AHIMNDTNNTEYWESFTAL','ARIMFDTENAEYHDSFTAL','AHIMADTNNTEYWDSFTAL','ARIMFLTENTEYHESFTAL']

l = len(input[0])

my_residues = [set() for _ in xrange(l)]
for h in input: 
    for i, x in enumerate(h): 
        my_residues[i].add(x)

my_residues = [list(x) for x in my_residues]
print my_residues

这将给出这样的输出

[['A'], ['H', 'R'], ['I'], ['M'], ['A', 'N', 'F'], ['P', 'L', 'D'], ['T'], ['H', 'E', 'N'], ['N'], ['A', 'T', 'F'], ['E'], ['Y'], ['H', 'S', 'W'], ['E', 'D'], ['S'], ['F'], ['T'], ['A'], ['L']]

但我希望以这样一种方式输出,如果它包含多个残基,则所有氨基酸残基都在一组中。所以输出应该是这样的:

[['A'], ['A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y'], ['I'], ['M'], ['A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y'], ['A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y'], ['T'], ['A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y'],......  ['F'], ['T'], ['A'], ['L']]
4

1 回答 1

1

您需要在构建时跟踪所有氨基酸残基my_residues,然后当您再次循环创建列表时,如果长度不是 1,则将集合替换为所有可能的氨基酸残基列表:

import string
all_residues = sorted(set(string.ascii_uppercase) - set('BJOUXZ'))

my_residues=[set() for _ in xrange(len(input[0]))]
for h in input: 
    for i, x in enumerate(h): 
        my_residues[i].add(x)

my_residues=[list(x) if len(x) == 1 else all_residues for x in my_residues]
print my_residues

这打印:

[['A'], ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'], ['I'], ['M'], ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'], ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'], ['T'], ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'], ['N'], ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'], ['E'], ['Y'], ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'], ['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'], ['S'], ['F'], ['T'], ['A'], ['L']]
于 2013-04-11T09:24:39.110 回答