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代码。
答案 0 :(得分:1)
试试这个:
print("".join([bin_dict[l] for l in seq1]))
这将合并各个字符串。
答案 1 :(得分: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