2013-10-17 54 views
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 

我的第一個問題已經解決了我所期望的方式輸出,如@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

另外,請寫出每個職位只有一個問題。 –

+0

對於你的第一個問題,你只需要在你的打印中加一個逗號:'打印代碼,'。我不完全理解你的第二個問題。你只是想找到1的位置?您可能想要重述這個問題,因爲大多數人都不知道肽序列是什麼。 – goncalopp

+0

@ goncalopp我編輯了我的帖子,請提出建議。 – JAZs

回答

1

試試這個:

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

本文將結合各個琴絃。

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