我为一个将DNA转录成氨基酸的项目编写了一些Python代码,但是它似乎没有正确显示(读作:根本没有[至少是氨基酸部分])。有人知道我的缺点在哪里吗?顺便说一句,我对Python还不熟悉,所以如果代码看起来有点难以控制,那是因为我对Python中的约定缺乏经验。谢谢您!在
#DNA strand - does not need to be transcribed to RNA
dna = raw_input("What is the DNA strand that you need to be transcribed?")
#Start and Stop codons
start = "ATG"
stop1 = "TAA"
stop2 = "TAG"
stop3 = "TGA"
#Number of codons
divide = len(dna)
codon_number = divide / 3
total_codons = codon_number
#Now, to split the DNA!
codon_groups = []
multiplier = 1
if(total_codons > 0):
codon_groups.append(dna[0:3])
while (codon_number > 0):
first = multiplier * 3
second = first + 3
up_next = dna[first:second]
codon_groups.append(up_next)
codon_number = codon_number - 1
multiplier = multiplier + 1
print(codon_groups)
#The fun part is up next!
amino_acids = []
traverse = 0
up = 1
started = 0
stopped = 0
for codon in codon_groups:
if(stopped == 0):
acid = codon_groups[traverse:up]
if (started == 0):
if(acid == start):
started = 1
amino_acids.append("Start Start - ATG")
print(amino_acids)
else:
if(acid == "ATT" or acid == "ATC" or acid == "ATA"):
amino_acids.append("Isoleucine Ile I ATT ATC ATA")
if(acid == "CTT" or acid == "CTC" or acid == "CTA" or acid == "CTG" or acid == "TTA" or acid == "TTG"):
amino_acids.append("Leucine Leu L CTT CTC CTA CTG TTA TTG")
if(acid == "GTT" or acid == "GTC" or acid == "GTA" or acid == "GTG"):
amino_acids.append("Valine Val V GTT GTC GTA GTG")
if(acid == "TTT" or acid == "TTC"):
amino_acids.append("Phenylalanine Phe F TTT TTC")
if(acid == "ATG"):
amino_acids.append("Methionine Met M ATG")
if(acid == "TGT" or acid == "TGC"):
amino_acids.append("Cysteine Cys C TGT TGC")
if(acid == "GCT" or acid == "GCC" or acid == "GCA" or acid == "GCG"):
amino_acids.append("Alanine Ala A GCT GCC GCA GCG")
if(acid == "GGT" or acid == "GGA" or acid == "GGC" or acid == "GGG"):
amino_acids.append("Glycine Gly G GGT GGA GGC GGG")
if(acid == "CCT" or acid == "CCA" or acid == "CCG" or acid == "CCC"):
amino_acids.append("Proline Pro P CCT CCA CCG CCC")
if(acid == "ACT" or acid == "ACG" or acid == "ACC" or acid == "ACA"):
amino_acids.append("Threonine Thr T ACT ACG ACC ACA")
if(acid == "TCT" or acid == "TCC" or acid == "TCA" or acid == "TCG" or acid == "AGT" or acid == "AGC"):
amino_acids.append("Serine Ser S TCT TCC TCA TCG AGT AGC")
if(acid == "TAT" or acid == "TAC"):
amino_acids.append("Tyrosine Tyr Y TAT TAC")
if(acid == "TGG"):
amino_acids.append("Tryptophan Trp W TGG")
if(acid == "CAA" or acid == "CAG"):
amino_acids.append("Glutamine Glu Q CAA CAG")
if(acid == "AAT" or acid == "AAC"):
amino_acids.append("Asparagine Asn N AAT AAC")
if(acid == "CAT" or acid == "CAC"):
amino_acids.append("Histidine His H CAT CAC")
if(acid == "GAA" or acid == "GAG"):
amino_acids.append("GlutamicAcid Gln G GAA GAG")
if(acid == "GAT" or acid == "GAC"):
amino_acids.append("AsparticAcid Asn D GAT GAC")
if(acid == "AAA" or acid == "AAG"):
amino_acids.append("Lysine Lys K AAA AAG")
if(acid == "CGT" or acid == "CGC" or acid == "CGA" or acid == "CGG" or acid == "AGA" or acid == "AGG"):
amino_acids.append("Arginine Arg R CGT CGC CGA CGG AGA AGG")
if(acid == stop1 or acid == stop2 or acid == stop3):
amino_acids.append("Stop Stop + TAA TAG TGA")
stopped = 1
traverse = traverse + 1
up = up + 1
#Now it's display time
go = 0
gadget = 1
for amino in amino_acids:
print(amino_acids[go:gadget])
go = go + 1
gadget = gadget + 1
也许马特莫的回答会更方便。但是,我认为我已经通过对现有代码的最细微的修改来修复它。我相信您误解了
for codon in codon_groups
的意思;它只是从分解的字符串中遍历密码子列表,将一个项分配给变量codon
,并在移动到列表中的下一个密码子之前,将其提供给您在每个循环中直接使用。所以:
给出输出:
^{pr2}$只需更改这一部分即可运行:
实际上不需要生成
acid = codon
,如果输出是您所期望的,那么只需删除'acid'的用法或重命名为for acid in codon_group
。使用Biopython会让你的生活变得更好。您可以阅读tutorial开始。下面是一个将DNA转化为蛋白质序列的例子:
给予
^{pr2}$以及
给出了简单的序列:
相关问题 更多 >
编程相关推荐