2

いくつかのタンパク質配列を含むFASTAファイルがあります。フォーマットは次のようなものです

----------------------
>protein1
MYRALRLLARSRPLVRAPAAALASAPGLGGAAVPSFWPPNAAR
MASQNSFRIEYDTFGELKVPNDKYYGAQTVRSTMNFKIGGVTE
RMPTPVIKAFGILKRAAAEVNQDYGLDPKIANAIMKAADEVAE
GKLNDHFPLVVWQTGSGTQTNMNVNEVISNRAIEMLGGELGSK
IPVHPNDHVNKSQ

>protein2
MRSRPAGPALLLLLLFLGAAESVRRAQPPRRYTPDWPSLDSRP
LPAWFDEAKFGVFIHWGVFSVPAWGSEWFWWHWQGEGRPYQRF
MRDNYPPGFSYADFGPQFTARFFHPEEWADLFQAAGAKYVVLT
TKHHEGFTNW*

>protein3
MKTLLLLAVIMIFGLLQAHGNLVNFHRMIKLTTGKEAALSYGF
CHCGVGGRGSPKDATDRCCVTHDCCYKRLEKRGCGTKFLSYKF
SNSGSRITCAKQDSCRSQLCECDKAAATCFARNKTTY`

-----------------------------------

このファイルを読み込んでシーケンスを個別に保存する良い方法はありますか?

ありがとう

4

3 に答える 3

6

これを行う 1 つの方法は次のとおりです。

  1. 各場所が名前とシーケンスを保持するベクトルを作成します
  2. ファイルを 1 行ずつ調べる

    • 行が で始まる場合は>、要素をベクターの最後に追加し、その要素に line.substring(1) をタンパク質名として保存します。要素内のシーケンスを equal に初期化します""
    • line.length == 0 の場合、空白で何もしません
    • それ以外の場合、行は> シーケンスの一部であるため、現在のベクター element.sequence += 行に移動します。>protein2このように、 との間の各行>protein3は連結され、 のシーケンスに保存されますprotein2
于 2010-06-22T20:58:22.987 に答える
5

正確なファイル構造についてもう少し詳しく教えていただけると助かります。あなたが持っているものを見るだけで(そしてウィキペディアのサンプルをざっと見てみると)、タンパク質の名前の先頭に があり>、その後に少なくとも1つの改行が続くことが示唆されているので、そこから始めるのが良いでしょう.

>ファイルを改行で分割し、名前を決定する文字を探すことができます。

そこからは、シーケンスデータがすべて 1 行 (改行なし) であるかどうか、または改行が含まれている可能性があるかどうかわからないため、少し明確ではありません。何もない場合は、その配列情報を保存して、次のタンパク質名に進むことができるはずです. このようなもの:

var reader = new StreamReader("C:\myfile.fasta");
while(true)
{
    var line = reader.ReadLine();
    if(string.IsNullOrEmpty(line))
        break;
    if(line.StartsWith(">"))
        StoreProteinName(line);
    else
        StoreSequence(line);
}

私だったら、TDD といくつかのサンプル データを使用して単純なパーサーを構築し、フォーマットの主な違いをすべてカバーしたと感じるまで、サンプルをプラグインし続けるでしょう。

于 2010-06-22T21:04:00.267 に答える
2

C# 以外の言語を使用できますか? Perl、Python、Ruby、Java、および R には、FASTA ファイルやその他の生物学的シーケンスを処理するための優れたライブラリがあります (頭の中で)。それらは通常、Bio* というブランド名です (つまり、BioPerl、BioJava など)。

C または C++ に興味がある場合は、Biostar でこの質問に対する回答を確認してください: http://biostar.stackexchange.com/questions/1516/cc-libraries-for-bioinformatics

必要がなければ、車輪を再発明しないでください。

于 2010-06-23T19:18:57.133 に答える