Python 3.x python正在尝试编写名为one_frame的函数。似乎不起作用。非常感谢您的帮助
现在,这是我的代码:Python 3.x python正在尝试编写名为one_frame的函数。似乎不起作用。非常感谢您的帮助,python-3.x,Python 3.x,现在,这是我的代码: def get_orf(DNA): codon = '' if(DNA[0:3] == 'ATG'): codon = DNA[0:3] for x in range(3,len(DNA)+1,3): if DNA[x:x+3] == "TAG" or DNA[x:x+3] == "TAA" or DNA[x:x+3] == "TGA": return codon
def get_orf(DNA):
codon = ''
if(DNA[0:3] == 'ATG'):
codon = DNA[0:3]
for x in range(3,len(DNA)+1,3):
if DNA[x:x+3] == "TAG" or DNA[x:x+3] == "TAA" or DNA[x:x+3] == "TGA":
return codon
else: codon = codon + DNA[x:x+3]
if codon[-3:] in ["TAG", "TAA", "TGA"]:
return codon
else: return 'No ORF'
def one_frame(DNA):
x = 0
ORFlist = []
while x < len(DNA):
codon = DNA[x:]
if DNA.startswith('ATG'):
get_orf(DNA[x:])
if codon:
ORFlist.append(codon)
x += len(codon)
return(ORFlist)
def get_orf(DNA):
密码子=''
如果(DNA[0:3]=“ATG”):
密码子=DNA[0:3]
对于范围(3,len(DNA)+1,3)内的x:
如果DNA[x:x+3]=“标记”或DNA[x:x+3]=“TAA”或DNA[x:x+3]=“TGA”:
返回密码子
else:密码子=密码子+DNA[x:x+3]
如果密码子[-3:]位于[“TAG”,“TAA”,“TGA”]:
返回密码子
其他:返回“无ORF”
def一个_框架(DNA):
x=0
ORFlist=[]
而x
get_orf函数工作正常,但我的单帧函数不工作。
单帧函数应该以一个DNA字符串作为输入。它搜索到
以三个核苷酸的倍数从左到右排列,也就是说,在一个阅读框中。什么时候
它在从起始密码子开始的字符串片段上点击一个起始密码子“ATG”,并调用get_orf
(直到最后)获取ORF。该ORF被添加到ORF列表中,然后函数跳过
在DNA序列的前面,在我们刚刚找到并开始寻找的ORF之后
下一个ORF。这将重复,直到我们遍历了整个DNA字符串。我可以看到一些明显的问题,但不确定您到底想要什么,希望这能有所帮助。首先,您的
for
循环在一帧中将永远不会结束,除非DNA以“ATG”开头。我想您应该检查密码子。开始时使用,而不是e> DNA.startswith
。您还需要在if语句之外执行x+=
命令,否则当您不点击“ATG”时,它将永远不会更新,因此您的循环将永远继续。您也根本没有使用get\u orf
的值
我想这就行了
def one_frame(DNA):
x = 0
ORFlist = []
while x < len(DNA):
codon = DNA[x:]
# Check codon instead of DNA
if codon.startswith('ATG'):
# Record the return value of get_orf
orf_return_value = get_orf(DNA[x:])
if orf_return_value:
ORFlist.append(orf_return_value)
x += len(orf_return_value)
# Increment by 3 if we don't hit ATG
else:
x += 3
return(ORFlist)
def一帧(DNA):
x=0
ORFlist=[]
而x
以何种方式不起作用?向我们展示一些预期输出的示例,以及它与实际结果的差异。以下是一些预期输出的示例:>>>one_frame(“AATGCCATGCCCTAA”)['ATG'、'ATGCCC']>>>one_frame(“ATGCCCATGGGAATTGACC”)['ATGCCCATGGGAATTGGAATTCC']但是我甚至不能运行函数是主要的问题。我的答案给出了这两个示例的正确输出。它还有其他问题吗?每次我运行函数时,控制台根本不打印任何东西。我用代码点击运行按钮。但是,我仍然没有得到任何输出。你正在打印输出吗?试试p打印(一帧(“AATGCCATGATGATGCCCTAA”)