Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能在python中将DNA转换为mRNA?_Python_Python 3.x_Dna Sequence - Fatal编程技术网

为什么我不能在python中将DNA转换为mRNA?

为什么我不能在python中将DNA转换为mRNA?,python,python-3.x,dna-sequence,Python,Python 3.x,Dna Sequence,代码: n=3 DNA序列={DNA字典 苯丙氨酸:[UUU,UUC], 亮氨酸:[UUA,CUU,CUC,CUA,CUG,UUG], 异亮氨酸:[AUU,AUC,AUA], 蛋氨酸:8月, 缬氨酸:[咕,咕,咕,咕], 丝氨酸:[UCU,UCC,UCA,UCG], 脯氨酸:[CCU,CCC,CCA,CCG], 苏氨酸:[ACU、ACC、ACA、ACG], 丙氨酸:[GCU,GCC,GCA,GCG], 酪氨酸:[UAU,UAC], 组氨酸:[CAU,CAC], 谷氨酰胺:[CAA,CAG], 天

代码:

n=3 DNA序列={DNA字典 苯丙氨酸:[UUU,UUC], 亮氨酸:[UUA,CUU,CUC,CUA,CUG,UUG], 异亮氨酸:[AUU,AUC,AUA], 蛋氨酸:8月, 缬氨酸:[咕,咕,咕,咕], 丝氨酸:[UCU,UCC,UCA,UCG], 脯氨酸:[CCU,CCC,CCA,CCG], 苏氨酸:[ACU、ACC、ACA、ACG], 丙氨酸:[GCU,GCC,GCA,GCG], 酪氨酸:[UAU,UAC], 组氨酸:[CAU,CAC], 谷氨酰胺:[CAA,CAG], 天冬酰胺:[AAU,AAC], 赖氨酸:[AAA,AAG], 天冬氨酸:[GAU,GAC], 谷氨酸:[GAA,GAG], 半胱氨酸:[UGU,UGC], Trytophan:UGG, 精氨酸:[CGU,CGC,CGA,CGG,AGG,AGA], 丝氨酸:[AGU,AGC], 甘氨酸:[GGU,GGC,GGA,GGG] } lookup_dict={k:key for key,value in DNA-Sequence.items for k in values}这用于使用inputDNA在字典中查找值 inputDNA=输入您的DNA序列: inputDNA=inputDNA.upper 打印你的DNA序列是,输入DNA 条纹DNA RNA=输入DNA。替换“C”,“G”这是我试图将DNA序列转换为RNA RNA=RNA。替换“A”,这是我试图将DNA序列转换成RNA RNA=RNA。替换“T”,“A”这是我试图将DNA序列转换为RNA 印刷核糖核酸 b=脱氧核糖核酸 如果b%3==0:如果inputDNA的长度是3的倍数 对于输入DNA中的k[i:i+n],对于范围0中的i,n: 对于u,DNA-Sequence.items中的值: 如果k值为: printlookup_dict[k],end= 打破 否则:如果输入DNA的长度不是3的倍数 我恨你 发生了什么:

Enter your DNA sequence: CCATAGCACGTT
Your DNA sequence is: CCATAGCACGTT
GGUAUGGUGGAA
Proline I hate u
Histidine I hate u
我想发生的事:

Enter your DNA sequence: CCATAGCACGTT
Your DNA sequence is: CCATAGCACGTT #this is because I need to convert DNA sequence to RNA but I am not sure of the formula and how to do it in python
GGUAUCGUGCAA
Your amino acids chain is: Glycine, Isoleucine, Valine, Glutamine
为什么我要得到A的输出,如何将其修复为我想要的输出?我知道我不是在做RNA=RNA。替换“G”,“C”,但当我这样做时,输出变成

Enter your DNA sequence: CAACAUGCU
Your DNA sequence is CAACAUGCU
A
Glutamine Histidine Alanine 

或者类似的事情,但肯定不是我所知道的。请提供帮助?

据我所知,您可以在遇到问题的地方对更换进行以下操作;根据您的偏好,可使用1个翻译呼叫或2个翻译呼叫完成:

a = input("Enter your DNA sequence: ")
a = a.upper()
print("Your DNA sequence is", a)
# RNA = a.translate(str.maketrans({'G': 'C', 'C': 'G'}))
# RNA = RNA.translate(str.maketrans({'A': 'U', 'T': 'A'}))
RNA = a.translate(str.maketrans({'G': 'C', 'C': 'G', 'A': 'U', 'T': 'A'}))
print(RNA)
输出为:

Enter your DNA sequence: CCATAGCACGTT
Your DNA sequence is CCATAGCACGTT
GGUAUCGUGCAA
关于氨基酸的印刷:

b = len(RNA)

if b % 3 == 0: #if the length of inputDNA is a multiple of 3
  for k in (RNA[i:i + n] for i in range(0, len(RNA), n)):
    for kk, val in DNA_Sequence.items():
      if k in val:
        print(kk, end=" ")
        break
else: #if the length of inputDNA is not a multiple of 3
    print("I hate u")
通知

该表不是一个DNA表,而是一个有U的RNA表,因此需要在循环中使用RNA,输出为:

Enter your DNA sequence: CCATAGCACGTT
Your DNA sequence is CCATAGCACGTT
GGUAUCGUGCAA
甘氨酸异亮氨酸缬氨酸谷氨酰胺


我为另一个人写了一个解决方案:

import pandas as pd
df =  pd.DataFrame(list(xdict.items()))

import re
def lookupKeys(df, key):
  name = []
  matches = re.findall(r'...', key)
  for match in matches:
      name.append(df[df[1].apply(lambda x: True if key in x else x) == True][0].reset_index()[0][0])
  return name


lookupKeys(df, 'GGUAUCGUGCAA')                                                                                                                                                      
# ['Glycine', 'Isoleucine', 'Valine', 'Glutamine']

好的,有一些语法错误,但使它启动并运行

n = 3

xdict = {
    "Phenylalanine": ["UUU", "UUC"],
    "Leucine": ["UUA", "CUU", "CUC", "CUA", "CUG", "UUG"],
    "Isoleucine": ["AUU", "AUC", "AUA"],
    # Put the 'AUG' on brackets []
    "Methionine": ["AUG"],
    "Valine": ["GUU", "GUC", "GUA", "GUG"],
    "Serine": ["UCU", "UCC", "UCA", "UCG"],
    "Proline": ["CCU", "CCC", "CCA", "CCG"],
    "Threonine": ["ACU", "ACC", "ACA", "ACG"],
    "Alanine": ["GCU", "GCC", "GCA", "GCG"],
    "Tyrosine": ["UAU", "UAC"],
    "Histidine": ["CAU", "CAC"],
    "Glutamine": ["CAA", "CAG"],
    "Asparagine": ["AAU", "AAC"],
    "Lysine": ["AAA", "AAG"],
    "Asparatic Acid": ["GAU", "GAC"],
    "Glutamic Acid": ["GAA", "GAG"],
    "Cysteine": ["UGU", "UGC"],
    "Trytophan": "UGG",
    "Arginine": ["CGU", "CGC", "CGA", "CGG", "AGG", "AGA"],
    "Serine": ["AGU", "AGC"],
    "Glycine": ["GGU", "GGC", "GGA", "GGG"]
}

lookup_dict = {k: key for key, values in xdict.items() for k in values}
a = input("Enter your DNA sequence: ")
a = a.upper()
print("Your DNA sequence is", a)
str(a)
RNA = a.replace('C', 'G')
RNA = RNA.replace('A', "U")
RNA = RNA.replace('T', 'A')
print(RNA)

b = len(a)

# Introduced a new flag variable
val = ''

if b % 3 == 0:
    # a replaced with RNA
  for k in (RNA[i:i + n] for i in range(0, len(a), n)):
      val += lookup_dict[k] + ' '

elif b % 3 != 0:
  print("Try again.")


print('Name', val)
你通过“a”循环,但它应该是RNA。
阅读注释以了解其他更改…

您能简化代码并做些事情使其更易于阅读吗?更好的变量名会更好,例如,甚至可能是一些注释。例如,您想将GUCAT序列转换为CAGTA吗?我说得对吗?这就是问题所在吗?例如,最内层的for循环是痛苦的。如果xdict.values中的k有什么问题?最后一道菜是什么?如果b%3==0为false,则b%3!=0必须是真的,不是吗?让我试着编辑一下,让它更清楚一点。@GuyOverThere我不是生物学家,这并不能让事情更清楚……不能在一次翻译操作中完成吗?@AlexanderCécile可以,我想让用户更清楚一点。我想你可以在函数之外创建dict,这些通常很容易阅读,因为它们可以自然地分布在多行上。