Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7 Python:嵌套for循环-未定义名称_Python 2.7_For Loop_Nested_Bioinformatics_Dna Sequence - Fatal编程技术网

Python 2.7 Python:嵌套for循环-未定义名称

Python 2.7 Python:嵌套for循环-未定义名称,python-2.7,for-loop,nested,bioinformatics,dna-sequence,Python 2.7,For Loop,Nested,Bioinformatics,Dna Sequence,首先,我必须指出,我不是程序员,所以这可能是一个愚蠢的问题,但我想了解这里发生了什么 程序应该遍历字符串(基因组),并滑动任意长度的窗口(在本例中为“l”)。它搜索给定长度(k)的重复字符序列,并记录序列的出现次数。我确实在整个字符串中找到了重复的序列,但所说的窗口让我感到不安。我尝试使用嵌套循环: for i in range(len(genome) - k + 1): for c in range(len(genome))[c:c+l]: kmer = genome[

首先,我必须指出,我不是程序员,所以这可能是一个愚蠢的问题,但我想了解这里发生了什么

程序应该遍历字符串(基因组),并滑动任意长度的窗口(在本例中为“l”)。它搜索给定长度(k)的重复字符序列,并记录序列的出现次数。我确实在整个字符串中找到了重复的序列,但所说的窗口让我感到不安。我尝试使用嵌套循环:

for i in range(len(genome) - k + 1):
    for c in range(len(genome))[c:c+l]:
        kmer = genome[i:i+k]
        if kmer in d:
            d[kmer] += 1
        else:
            d[kmer] = 1
我收到一个错误:“NameError:未定义名称“c” 这个问题的原因是什么?有没有一种简单易懂的解决方法?效率并不是很重要,所以我想保持一个类似的结构(我发现很多主题描述了避免使用嵌套for循环的方法,但我发现目前它非常混乱)


提前感谢。

您在第二个
for
循环中定义了
c
,并尝试在同一语句中使用它。因此,
c
在开始
for
循环之前不会被定义,因此不会被定义

编辑

从你的评论来看,我相信你想做的是沿着基因组滑动一个长度为l的窗口。然后,您希望找到为一些k-mer(s)而丰富的窗口。为此,我将修改您的第二个循环,从当前窗口开始查看下一个
l
位置:

for c in range(i, i+l):

在第二个
for
循环中定义
c
,并尝试在同一语句中使用它。因此,
c
在开始
for
循环之前不会被定义,因此不会被定义

编辑

从你的评论来看,我相信你想做的是沿着基因组滑动一个长度为l的窗口。然后,您希望找到为一些k-mer(s)而丰富的窗口。为此,我将修改您的第二个循环,从当前窗口开始查看下一个
l
位置:

for c in range(i, i+l):

你打算对范围内的c(len(基因组))[c:c+l]做什么?for的
应该定义要迭代的
c
,因此不能在
for
表达式中使用
c
。谢谢,我理解这是一个多么愚蠢的错误。基本上,我希望第二个循环将原始字符串“限制”到某个长度,并在该窗口中查找重复性最强的字符序列-这就是问题的条件,查找最常见的序列,但同样,仅在字符串的一段中。“…我们的计划是沿着基因组滑动一个固定长度L的窗口,寻找一个k-mer连续出现几次的区域…”你能解释一下你想要
c
k
代表什么吗?我知道你正在滑动一个长度为
l
的窗口,但我不明白你想在该窗口内做什么。另外,我假设
d
是一个dict holding counts,但它应该保存看到的
kmer
s的总数,还是仅保存当前窗口中的数字?假设我有一个字符串“atcgatcgtagcgggcacggactgctgctagta”。这就是“基因组”变量。我需要找出最常出现的字母序列(在某个窗口中),其长度应为“k”。我使用“c”只是为了有一个计数器,它可以指示窗口的开始和结束,以便比较序列--edit--D保存长度“k”的每个不同序列在任何窗口中出现的次数。我只使用最大值,如果有更多相同出现的序列,我只打印它们,我已经在一个更简单的问题上这样做了。@user2984872:我已经编辑了我的答案,我认为您正在尝试实现的目标。您打算对范围内的c(len(基因组))[c:c+l]
做什么?for的
应该定义要迭代的
c
,因此不能在
for
表达式中使用
c
。谢谢,我理解这是一个多么愚蠢的错误。基本上,我希望第二个循环将原始字符串“限制”到某个长度,并在该窗口中查找重复性最强的字符序列-这就是问题的条件,查找最常见的序列,但同样,仅在字符串的一段中。“…我们的计划是沿着基因组滑动一个固定长度L的窗口,寻找一个k-mer连续出现几次的区域…”你能解释一下你想要
c
k
代表什么吗?我知道你正在滑动一个长度为
l
的窗口,但我不明白你想在该窗口内做什么。另外,我假设
d
是一个dict holding counts,但它应该保存看到的
kmer
s的总数,还是仅保存当前窗口中的数字?假设我有一个字符串“atcgatcgtagcgggcacggactgctgctagta”。这就是“基因组”变量。我需要找出最常出现的字母序列(在某个窗口中),其长度应为“k”。我使用“c”只是为了有一个计数器,它可以指示窗口的开始和结束,以便比较序列--edit--D保存长度“k”的每个不同序列在任何窗口中出现的次数。我只使用最大值,如果有更多的序列出现相同的情况,我只打印它们,我已经在一个更简单的问题上这样做了。@user2984872:我已经编辑了我的答案,我认为您正在尝试实现的目标。