1

ネイティブ Python (標準ライブラリ以外のもの) で解決したい興味深い遺伝学の問題があります。これは、ユーザーが追加のモジュールをインストールする必要なく、どのコンピューターでもソリューションを非常に簡単に使用できるようにするためです。

ここにあります。454 回の新世代シーケンシング ランから、100,000 の DNA シーケンス (最大 20 億) を受け取りました。両端に存在する可能性のあるプライマーを削除するために、両端をトリミングしたいと考えています。通常のシーケンスとセンス シーケンスの両方です。例:

seq001: ACTGACGGATAGCTGACCTGATGATGGGTTGACCAGTGATC
        --primer-1---                 --primer-2-

プライマーは、1 回または複数回 (次々と) 存在できます。通常の感覚は常に左側にあり、逆は右側にあります。したがって、私の目標は、プライマーを見つけて、プライマーのない部分だけが残るように配列を切断することです。このために、ネイティブ Python で実装されている (つまり、biopython ではなく) 古典的なアライメント アルゴリズム (つまり、Smith-Waterman) を使用したいと考えています。これにはかなりの時間がかかる場合があることを認識しています (最大数時間)。

注: これは直接的な「単語」検索ではありません。配列とプライマーの両方の DNA がさまざまな技術的理由で「変異」する可能性があるためです。

何を使いますか?

4

3 に答える 3

1

これは、ほぼその主題に関する論文です。

Rocke、DNA 配列における新規のギャップのあるモチーフの発見について、1998 年

その論文とその参考文献、および上記を引用している他の論文から、アルゴリズムに関する多くのアイデアを見つけることができれば幸いです。Python コードは見つかりませんが、Python で実装できるアルゴリズムの説明が見つかる場合があります。

于 2010-03-10T19:55:25.087 に答える
1

正規表現を使用してこれを非常に簡単に行うことができますか? それほど複雑ではないと思います!実際、ここの大学の 1 人のために、これとほぼ同じことを行うためのコードを完成させました!

突然変異のためにプライマーの正確なコピーを探していない場合は、ファジーマッチングの要素を適用できます! 私が行ったバージョンは、次のコードを使用して、最初と最後で正確なプライマーの一致を非常に単純に検索し、それらのプライマーを差し引いた値を返しました。

pattern = "^" + start_primer + "([A-Z]+)" + end_primer + "$" # start primer and end primer are sequences you are looking to match
regex = re.match(pattern, sequence) # sequence is the DNA sequence you are analyzing
print regex.group(1) # prints the sequence between the start and end primers

これはPythonのファジー正規表現に関するリンクですhttp://hackerboss.com/approximate-regex-matching-in-python/

于 2010-09-10T08:01:41.680 に答える