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 に答える