翻译理论:DNA ⇒ RNA ⇒ 蛋白质
生命取决于细胞储存、检索和翻译遗传指令的能力。这些指令是制造和维持生物体所必需的。长期以来,尚不清楚哪些分子能够复制和传递遗传信息。我们现在知道,这些信息是由所有生物的双氧核糖核酸或 DNA 携带的。
DNA: DNA 是一种离散代码,物理上存在于生物体的几乎每个细胞中。我们可以把DNA作为四个字符可供选择字符的一个维字符串。这些字符是 A、C、G 和 T。它们代表用于构建 DNA 的四个核苷酸的第一个字母。这些核苷酸的全名是腺嘌呤、胞嘧啶、鸟嘌呤和胸腺嘧啶。每个独特的三字符核苷酸序列,有时称为核苷酸三联体,对应一个氨基酸。每种蛋白质的氨基酸序列都是独一无二的,所有蛋白质都是由所有生物的同一组仅 20 个氨基酸构成的。
DNA 中的指令首先被转录成 RNA,然后 RNA 被翻译成蛋白质。我们可以把 DNA 看作是由三个字母组成的序列,就像一本生命词典。
目标:将给定的 DNA 序列转换为其蛋白质等价物。
来源:从 NCBI 的基于 Web 的公共 DNA 序列存储库下载文本文件形式的 DNA 链。核苷酸样本为 (NM_207618.2),可在此处找到。下载文件:
步骤:将 DNA 序列转换为氨基酸序列所需的步骤是:
1. Code to translate the DNA sequence to a sequence of Amino acids where each Amino acid is
represented by a unique letter.
2. Download the Amino acid sequence from NCBI to check our solution.
编码翻译
第一步是将原始未更改的 DNA 序列文本文件放入工作路径目录。在Python shell 中检查您的工作路径目录,
>>>pwd
接下来,我们需要在Python打开文件并读取它。默认情况下,文本文件包含一些未格式化的隐藏字符。这些隐藏字符如“/n”或“/r”需要格式化和删除。所以我们使用replace()函数,从原始txt文件中获取修改后的DNA序列txt文件。
inputfile ="DNA_sequence_original.txt"
f = open(inputfile, "r")
seq = f.read()
seq = seq.replace("\n", "")
seq = seq.replace("\r", "")
接下来,我们将构建一个名为 translate() 的函数,它将改变的 DNA 序列转换为它的蛋白质等价物并返回它。我们将修改后的 DNA 序列作为函数的参数。
def translate(seq):
table = {
'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',
'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',
'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K',
'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R',
'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L',
'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P',
'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q',
'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R',
'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V',
'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A',
'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E',
'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G',
'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S',
'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L',
'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_',
'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W',
}
protein =""
if len(seq)%3 == 0:
for i in range(0, len(seq), 3):
codon = seq[i:i + 3]
protein+= table[codon]
return protein
上面代码中的表格供参考,可以在生物学手册中找到。由于称为密码子的三联核苷酸形成单个氨基酸,因此我们检查更改的 DNA 序列是否可以被 3 in ( if len(seq)%3 == 0: ) 整除。接下来,代码是不言自明的,我们在其中形成密码子并将它们与表中的氨基酸匹配。 Atlast,我们形成氨基酸序列,也称为蛋白质,并返回它。
最后一步是将我们的氨基酸序列与在 NCBI 网站上找到的原始序列相匹配。我们将通过字符比较两种Python中的氨基酸序列,字符,如果这两个是完全一样的副本返回true。
首先下载未改变的氨基酸序列txt文件,用Python打开。我们将构建一个名为 read_seq() 的函数来删除不需要的字符并形成更改后的氨基酸序列 txt 文件。
def read_seq(inputfile):
with open(inputfile, "r") as f:
seq = f.read()
seq = seq.replace("\n", "")
seq = seq.replace("\r", "")
return seq
最后一步是比较两个文件并检查两者是否相同。如果输出为真,我们就成功地将 DNA 翻译成蛋白质。
最终代码
# Python program to conver
# altered DNA to protein
inputfile ="DNA_sequence_original.txt"
f = open(inputfile, "r")
seq = f.read()
seq = seq.replace("\n", "")
seq = seq.replace("\r", "")
def translate(seq):
table = {
'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',
'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',
'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K',
'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R',
'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L',
'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P',
'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q',
'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R',
'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V',
'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A',
'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E',
'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G',
'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S',
'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L',
'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_',
'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W',
}
protein =""
if len(seq)%3 == 0:
for i in range(0, len(seq), 3):
codon = seq[i:i + 3]
protein+= table[codon]
return protein
def read_seq(inputfile):
with open(inputfile, "r") as f:
seq = f.read()
seq = seq.replace("\n", "")
seq = seq.replace("\r", "")
return seq
prt = read_seq("amino_acid_sequence_original.txt")
dna = read_seq("DNA_sequence_original.txt")
p = translate(dna[20:935])
p == prt
输出:真
参考 :
- edX –HarvardX – 使用Python进行研究