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

第二步:通过这个二进制代码 int "1" 的位置将计算如下

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

第三步:计算仓位

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

第四步:

       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 回答