Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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计算值之间的距离_Python_Bioinformatics - Fatal编程技术网

使用python计算值之间的距离

使用python计算值之间的距离,python,bioinformatics,Python,Bioinformatics,我是python新手,希望能得到一些帮助 我有一个脚本,它在一个序列中每三个碱基计数一次,直到识别出一个终止密码子,然后断开并返回值。这适用于每个读取帧0、+1、+2 我希望它返回一个值0,如果脚本运行到序列的末尾,那么在识别终止密码子之前。此时,脚本为count0返回18,当序列在找到“TAG”或“TAA”之前结束时,count0应为0 任何帮助都将不胜感激 seq="TCATTCTaTTTAAAAAAatATAAAaGGGgTTTTGGGgTTTtGGGGTTTtGGGG" stop_co

我是python新手,希望能得到一些帮助

我有一个脚本,它在一个序列中每三个碱基计数一次,直到识别出一个终止密码子,然后断开并返回值。这适用于每个读取帧0、+1、+2

我希望它返回一个值0,如果脚本运行到序列的末尾,那么在识别终止密码子之前。此时,脚本为count0返回18,当序列在找到“TAG”或“TAA”之前结束时,count0应为0

任何帮助都将不胜感激

seq="TCATTCTaTTTAAAAAAatATAAAaGGGgTTTTGGGgTTTtGGGGTTTtGGGG"

stop_codons = ["TAG", "TAA"]
count0 = 0
n = 0
while n < len(seq):
    if seq[n:n+3] in stop_codons:
        break
    count0 += 1
    n += 3
print count0      

count1 = 0
n = 1
while n < len(seq):
    if seq[n:n+3] in stop_codons:
        break
    count1 += 1
    n += 3
print count1      

count2 = 0
n = 2
while n < len(seq):
    if seq[n:n+3] in stop_codons:
        break
    count2 += 1
    n += 3
print count2 

一个简单的解决方法就是这样做。不过,你应该考虑重构你的代码。

stop_codons = ["TAG", "TAA"]
count0 = 0
n = 0
found = False
while n < len(seq):
    if seq[n:n+3] in stop_codons:
        found = True
        break
    count0 += 1
    n += 3

if not found:
    count0 = 0
stop_密码子=[“TAG”,“TAA”]
count0=0
n=0
发现=错误
当n
一个简单的修复方法就是这样做。不过,你应该考虑重构你的代码。

stop_codons = ["TAG", "TAA"]
count0 = 0
n = 0
found = False
while n < len(seq):
    if seq[n:n+3] in stop_codons:
        found = True
        break
    count0 += 1
    n += 3

if not found:
    count0 = 0
stop_密码子=[“TAG”,“TAA”]
count0=0
n=0
发现=错误
当n
您搜索停止密码子,如果找到它,它会过早退出循环。 否则,它将运行完整的循环,在
n==len(seq)
时退出循环,然后仍然打印计数

两种解决方案:

仅在找到终止密码时打印:

count1 = 0
n = 1
while n < len(seq):
    if seq[n:n+3] in stop_codons:
        print count1
        break
    count1 += 1
    n += 3

你搜索停止密码子,如果它找到了,它就会过早地退出循环。 否则,它将运行完整的循环,在
n==len(seq)
时退出循环,然后仍然打印计数

两种解决方案:

仅在找到终止密码时打印:

count1 = 0
n = 1
while n < len(seq):
    if seq[n:n+3] in stop_codons:
        print count1
        break
    count1 += 1
    n += 3
seq=“tcattctattataaaaaaaaaaaaaggttggttggttggttggttggttgggggg”
stop_密码子=[“TAG”,“TAA”]
def打印计数(顺序、停止密码、开始):
发现=错误
计数=0
n=开始
当n
seq=“tcattctatttaaaaaaaaataaaggggttggttggttggttggttggttgggggg”
stop_密码子=[“TAG”,“TAA”]
def打印计数(顺序、停止密码、开始):
发现=错误
计数=0
n=开始
当n
我建议将迭代代码推送到函数中:

def get_codon_index(seq, start_idx):
    count = 0
    n = start_idx
    while n < len(seq):
        if seq[n:n+3] in stop_codons:
            return count
        count += 1
        n += 3
    return -1
def get_codon_索引(seq,start_idx):
计数=0
n=开始\u idx
当n
这样可以省去引入布尔标志的工作量,避免代码重复


我返回
-1
而不是
0
,因为
0
可能是密码子的实际索引(如果密码子正好位于序列的开头)。

我建议将迭代代码推到函数中:

def get_codon_index(seq, start_idx):
    count = 0
    n = start_idx
    while n < len(seq):
        if seq[n:n+3] in stop_codons:
            return count
        count += 1
        n += 3
    return -1
def get_codon_索引(seq,start_idx):
计数=0
n=开始\u idx
当n
这样可以省去引入布尔标志的工作量,避免代码重复


我返回
-1
而不是
0
,因为
0
可能是密码子的实际索引(如果密码子正好位于序列的开头)。

此代码将在序列中循环,并在找到返回停止密码子第一个字符位置的TAA或标记序列时停止

seq="TCATTCTaTTTAAAAAAatATAAAaGGGgTTTTGGGgTTTtGGGGTTTtGGGG"

list = ["z", "z", "z"] # otherwise the list will not be of 3 characters
i = 0

for letter in seq:
    list.pop(0)
    list.append(letter)
    codon = "".join(list)
    i = i + 1
    if codon == "TAG" or codon == "TAA":
        print i - 2 # to print the position of T
        break

该代码将在序列中循环并在找到返回终止密码子第一个字符位置的TAA或标记序列时停止

seq="TCATTCTaTTTAAAAAAatATAAAaGGGgTTTTGGGgTTTtGGGGTTTtGGGG"

list = ["z", "z", "z"] # otherwise the list will not be of 3 characters
i = 0

for letter in seq:
    list.pop(0)
    list.append(letter)
    codon = "".join(list)
    i = i + 1
    if codon == "TAG" or codon == "TAA":
        print i - 2 # to print the position of T
        break

帮你自己一个忙,不要再发明轮子,特别是当它是免费的和广泛使用的时候。

帮你自己一个忙,不要再发明轮子,特别是当它是免费的和广泛使用的时候。

在你的样品中它发现了TAA(我也能看到),所以它打印了18。但是你说它“应该是0,因为在找到“TAG”或“TAA”之前序列结束了”,请写一个以n为参数的函数。您将避免大量代码重复和错误@doctorlove TAA在第+1帧中。那是从卡特开始的。。。在第0帧TCATTCT中没有停止…在您的示例中它找到了TAA(我也可以看到),所以它打印18。但是你说它“应该是0,因为在找到“TAG”或“TAA”之前序列结束了”,请写一个以n为参数的函数。您将避免大量代码重复和错误@doctorlove TAA在第+1帧中。那是从卡特开始的。。。第0帧中没有停止TCATTCT…谢谢你的帮助JohannesThanks谢谢你的帮助Johannest这正是我想要做的。谢谢你的帮助!不客气。请接受我(或其他人之一)的答案。这正是我想要做的。谢谢你的帮助!不客气。请接受我(或其他人之一)的答案。