DNA到蛋白质序列

时间:2016-11-14 15:08:20

标签: python python-3.x dictionary mapping dna-sequence

我正在尝试使用以下字典创建一个程序,将用户输入的DNA序列翻译成3个替代蛋白质序列(密码子是键,氨基酸是值):

{'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 个答案:

答案 0 :(得分: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 )

最后,使用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