2016-11-14 57 views
1

我試圖創建一個程序其轉化使用以下詞典由用戶輸入到3替代蛋白序列的DNA序列(密碼子是鍵,氨基酸是值):DNA與蛋白質序列

{'TGA': '*', 'GCG': 'A', 'CGA': 'R', 'ATA': 'I', 'AGA': 'R', 'TAA': '*', 'TTT': 'F', 'GAG': 'E', 'CTT': 'L', 'CGT': 'R', 'CTC': 'L', 'CTG': 'L', 'TGT': 'C', 'CCA': 'P', 'AAT': 'N', 'GTC': 'V', 'GAC': 'D', 'GAT': 'D', 'TAT': 'Y', 'AAA': 'K', 'GTA': 'V', 'TAG': '*', 'CGC': 'R', 'GCA': 'A', 'TCG': 'S', 'GCT': 'A', 'GCC': 'A', 'TGG': 'W', 'TTC': 'F', 'CCC': 'P', 'TTG': 'L', 'CGG': 'R', 'GGC': 'G', 'AGG': 'R', 'TCC': 'S', 'CCT': 'P', 'GGT': 'G', 'GGG': 'G', 'TCA': 'S', 'AGC': 'S', 'CAG': 'Q', 'CAC': 'H', 'ATC': 'I', 'GAA': 'E', 'GTG': 'V', 'CCG': 'P', 'CAT': 'H', 'AAG': 'K', 'ATG': 'M', 'AAC': 'N', 'TAC': 'Y', 'TGC': 'C', 'CTA': 'L', 'TCT': 'S', 'ATT': 'I', 'ACG': 'T', 'AGT': 'S', 'GTT': 'V', 'TTA': 'L', 'CAA': 'Q', 'GGA': 'G', 'ACC': 'T', 'ACA': 'T', 'ACT': 'T'}

我想只使用映射而不是biopython。 所以,當程序運行它應該是這樣的:

Please enter a DNA sequence: GCTgttaagactatgaaaagaataagcaacaccatcaat 

Frame 1 is AVKTMKRISNTIN 

Frame 2 is LLRL*KE*ATPS 

Frame 3 is C*DYEKNKQHHQ 

我創建從一個文件本詞典,但我不能確定如何從這裏開始。任何幫助將不勝感激。謝謝!

回答

1

聲明字典:

prot_match = {'TGA': '*', 'GCG': 'A', 'CGA': 'R', 'ATA': 'I', 'AGA': 'R', 'TAA': '*', 'TTT': 'F', 'GAG': 'E', 'CTT': 'L', 'CGT': 'R', 'CTC': 'L', 'CTG': 'L', 'TGT': 'C', 'CCA': 'P', 'AAT': 'N', 'GTC': 'V', 'GAC': 'D', 'GAT': 'D', 'TAT': 'Y', 'AAA': 'K', 'GTA': 'V', 'TAG': '*', 'CGC': 'R', 'GCA': 'A', 'TCG': 'S', 'GCT': 'A', 'GCC': 'A', 'TGG': 'W', 'TTC': 'F', 'CCC': 'P', 'TTG': 'L', 'CGG': 'R', 'GGC': 'G', 'AGG': 'R', 'TCC': 'S', 'CCT': 'P', 'GGT': 'G', 'GGG': 'G', 'TCA': 'S', 'AGC': 'S', 'CAG': 'Q', 'CAC': 'H', 'ATC': 'I', 'GAA': 'E', 'GTG': 'V', 'CCG': 'P', 'CAT': 'H', 'AAG': 'K', 'ATG': 'M', 'AAC': 'N', 'TAC': 'Y', 'TGC': 'C', 'CTA': 'L', 'TCT': 'S', 'ATT': 'I', 'ACG': 'T', 'AGT': 'S', 'GTT': 'V', 'TTA': 'L', 'CAA': 'Q', 'GGA': 'G', 'ACC': 'T', 'ACA': 'T', 'ACT': 'T'} 

切片的字符串的3個字符塊:

def chunks (arr, size = 1, frame = 1): 
    return [arr[i: i+size] for i in range(frame - 1, len(arr), size)] 
dna = input('Enter DNA: ').upper() 

然後,圖當前序列prot_match值(如果使用get安全你沒有確定的序列):

frames = 3 
for frame in range(frames): 
    chunked_dna = chunks(dna, 3, frame + 1) 
    prot_seq = map(lambda seq: prot_match.get(seq, '0'), chunked_dna) 

Final LY,使用join得到的蛋白質序列從地圖的字符串:

prot_seq = ''.join(prot_seq) 
    print('Protein sequence number', frame + 1, ':', prot_seq) 

例(這些片段放在一個文件):

Enter DNA: GCTgttaagactatgaaaagaataagcaacaccatcaat 
Protein sequence number 1 : AVKTMKRISNTIN 
Protein sequence number 2 : LLRL*KE*ATPS0 
Protein sequence number 3 : C*DYEKNKQHHQ0 
+0

感謝這麼多的快速響應! 這適用於第1幀,所以我假設其他幀我必須編輯返回[arr [i:i +尺寸]爲我在範圍內(0,len(arr),尺寸)]至 範圍(1,len (arr),大小)? – zmoores1

+0

@ zmoores1我不知道你如何確定其他框架。你有其他的字典嗎?不熟悉蛋白質。 – Uriel

+0

框架1從序列中的字符1開始 框架2應該從第二個字符開始,並且框架3從第三個字符開始 忽略整個蛋白質/ DNA的方面,並從字典映射視圖看它 – zmoores1