1

まず第一に、私はプログラマーではないことを指摘しなければなりません。したがって、これはおそらくばかげた質問ですが、ここで何が起こっているのかを理解したいと思います。

プログラムは文字列 (ゲノム) を通過し、任意の長さのウィンドウ (この場合は '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 ループの使用を回避する方法を説明する多くのトピックを見つけましたが、現在はかなり混乱しています)。

前もって感謝します。

4

1 に答える 1

4

c2 番目のループで定義しfor、同じステートメントで使用しようとしています。したがって、はループcを開始するまで定義されないため、 は定義されません。for

編集

あなたのコメントから判断すると、あなたがやろうとしていることはl、ゲノムに沿って長さのウィンドウをスライドさせることだと思います. 次に、いくつかの k-mer が強化されたウィンドウを見つけたいと考えています。これを行うには、2 番目のループを変更してl、現在のウィンドウの開始位置から次の場所を確認します。

for c in range(i, i+l):
于 2013-11-12T20:25:57.103 に答える