0
bin_dict = {
'A':'10000000000000000000',
'C':'01000000000000000000',
'D':'00100000000000000000',
'E':'00010000000000000000',
'F':'00001000000000000000',
'G':'00000100000000000000',
'H':'00000010000000000000',
'I':'00000001000000000000',
'K':'00000000100000000000',
'L':'00000000010000000000',
'M':'00000000001000000000',
'N':'00000000000100000000',
'P':'00000000000010000000',
'Q':'00000000000001000000',
'R':'00000000000000100000',
'S':'00000000000000010000',
'T':'00000000000000001000',
'V':'00000000000000000100',
'W':'00000000000000000010',
'Y':'00000000000000000001'
}

seq1="ACDE"

bin_string=''
svm_string=''
for letter in seq:
    code = bin_dict[letter]
    print code

このコードの出力は次のようになります

10000000000000000000
01000000000000000000
00100000000000000000
00010000000000000000

私の最初の質問は解決され、望ましい方法で出力が得られました.AS @goncaloppは、理解を深めるためにQtnを再導入しようとしています。

 Fig 1.

最初のステップ: Seq = ACDE

ステップ 2: このバイナリ コードを通じて、int "1" の位置は以下のように計算されます。

       10000000000000000000010000000000000000000010000000000000000000010000000000000000
       |                    |                    |                    |
      1:1                   1:22                1:42                 1:58

ステップ 3: 計算された位置

            1:1 1:22 1:42 1:58

ステップ 4:

       Ultimate output should be a text file having code only 1:1 1:22 1:42 1:58  to represent the string ACDE

今、これのためのpythonコードは何であるかを私に提案してください。

4

2 に答える 2

1

これを試して:

print("".join([bin_dict[l] for l in seq1]))

これにより、個々の文字列が結合されます。

于 2013-10-17T13:03:02.747 に答える
1
binstring = ''.join([bindict.get(l) for l in seq1])

最初にすべきです。次に、別の辞書を用意して、それを使用します。

最終的には 1 つの位置だけが必要で、各アイテムはシーケンスを 20 ずつ大きくするので、おそらくそこまでスキップできます。

pos_dict = {'A':1, 'C':2, 'D':3, 'E':4, 'F':5, 'G':6, 'H':7, 'I':8,
             'K':9, 'L':10, 'M':11, 'N':12, 'P':13, 'Q':14, 'R':15,
             'S':16, 'T':17, 'V':18, 'W':19, 'Y':20 }
S = 1
for Seq in Seqences:
    so_far = 0
    for l in Seq:
       print "%d:%d" % (S, so_far + pos_dict.get(l,-999)),
       so_far += 20
于 2013-10-17T13:03:23.457 に答える