筛选。
我们的细胞经历了一个叫做蛋白质合成的过程,将DNA中的指令转化为氨基酸链,或多肽。
你的工作就是复制这个过程!
第1步:转录
你的输入将是一串DNA,看起来像这样。
"tacagctcgctatgaatc"
然后你必须将其转录为mRNA。每个字母,或碱基,都会被转录。
A -> U
T -> A
G -> C
C -> G
...
此外,你将把它分成三组,或称_codons_
上面的例子会变成。
"AUG UCG AGC GAU ACU UAG"
第2步:翻译
有了mRNA链之后,你将把它变成一个氨基酸链。
每个密码子对应一个氨基酸。
Ala GCU, GCC, GCA, GCG
Leu UUA, UUG, CUU, CUC,
CUA, CUG Arg CGU, CGC,
CGA, CGG, AGA, AGG Lys
AAA, AAG Asn AAU, AAC
Met AUG Asp GAU, GAC
Phe UU, UUC Cys UGU, UGC
Pro CCU, CCC, CCA, CCG
Gln CAA, CAG Ser UCU,
UCC, UCA, UCG, AGU, AGC
Glu GAA, GAG Thr ACU,
ACC, ACA, ACG Gly GGU,
GGC, GGA, GGG Trp UGG
His CAU, CAC Tyr UAU,
UAC Ile AUU, AUC, AUA
Val GUU, GUC, GUA, GUG
Stop UAG, UGA, UAA
...
唷,这是一个很长的列表!
上面的例子将变成
"Met Ser Ser Thr Asp Stop"
任何不在三组中的额外碱基组都不包括在内。比如说。
"AUG C"
将变成 "Met"
总之,你的最终输出将是mRNA序列和多肽。
下面是一些例子
"tacagctcgctatgaatc"
输出
["AUG UCG AGC GAU ACU UAG",
"Met Ser Ser Asp Thr Stop"]
In:
"ACGTG"
输出
["UGC AC", "Cys"]
。
import re
TABLE = str.maketrans('ACGT','UGCA')
def protein_synthesis(dna):
rna = re.findall(r'.{1,3}', dna.translate(TABLE))
return ' '.join(rna), ' '.join(x for x in map(CODON_DICT.get, rna) if x)
More details
B={'T':'A','A':'U','G':'C','C':'G'}
A={'Ala':['GCU', 'GCC', 'GCA', 'GCG'],
'Leu':['UUA', 'UUG', 'CUU', 'CUC', 'CUA', 'CUG'],
'Arg':['CGU', 'CGC', 'CGA', 'CGG', 'AGA', 'AGG'],
'Lys':['AAA', 'AAG'], 'Asn':['AAU', 'AAC'],
'Met':['AUG'], 'Asp':['GAU', 'GAC'], 'Phe':['UUU', 'UUC'],
'Cys':['UGU', 'UGC'], 'Pro':['CCU', 'CCC', 'CCA', 'CCG'],
'Gln':['CAA', 'CAG'], 'Ser':['UCU', 'UCC', 'UCA', 'UCG', 'AGU', 'AGC'],
'Glu':['GAA', 'GAG'], 'Thr':['ACU', 'ACC', 'ACA', 'ACG'],
'Gly':['GGU', 'GGC', 'GGA', 'GGG'], 'Trp':['UGG'], 'His':['CAU', 'CAC'],
'Tyr':['UAU', 'UAC'], 'Ile':['AUU', 'AUC', 'AUA'],
'Val':['GUU', 'GUC', 'GUA', 'GUG'], 'Stop':['UAG', 'UGA', 'UAA']}
def getAA(s):
for a in A:
if s in A[a]: return a
return 'codon not found'
def protein_synthesis(dna):
print(dna)
r,s='',''
i=0
c=''
while i<len(dna):
c+=B[dna[i]]
i+=1
if i%3==0:
r+=c+' '
s+=getAA(c)+' '
c=''
if len(c)>0: r+=c+' '
return (r[:-1],s[:-1])
本文由mdnice多平台发布
网友评论