0

「.fastq」形式の2〜59GBのテキストファイルがあります。fastqファイルは、シーケンサーからのゲノミクス読み取りファイルです。4行ごとに新しい読み取りが行われますが、行のサイズは可変です。

ファイルサイズは約59GBで、約211Mの読み取りがあります。つまり、約211M * 4=844M行です。私が使用しているプログラム、Bowtieには、現在、次のオプションを実行する機能があります。

"--skip 105M --qupto 105M"

これは基本的に、「最初の105M読み取りをスキップし、次の105M読み取りまでのみ処理する」ことを意味します。このようにして、ファイルの処理を分割できます。問題は、スキップを実行する方法が非常に遅いことです。通常どおりに最初の105Mの読み取りを読み取るだけで、それらを処理しません。次に、指定された読み取り値に到達すると、比較を開始します。

C / C ++のfsetposのようなものを使用して、ファイルの中央(またはどこでも)に位置を設定できるかどうか疑問に思っています。おそらく、行の途中に配置され、そこから最初の完全読み取りは、必要な場所に到達するまで約422M行を読み取るのを待つのではなく、処理を開始します。誰かがそのような大きなファイルでfsetposを実行した経験があり、パフォーマンスが現在の実行方法よりも優れているかどうかを知っていますか?

ありがとう-ニック

4

1 に答える 1

0

はい、C++を使用してファイルの中央に配置できます。

巨大なファイルの場合、通常、パフォーマンスはデータの読み取りよりも優れています。

一般に、ファイル内での配置のプロセスは次のとおりです。

  1. ファイルのディレクトリエントリを読み取るように要求されます。
  2. ディレクトリを検索して、ファイル位置のトラックとセクターを見つけます。
  3. 注:一部のファイルシステムには、大きなファイル用のディレクトリ拡張子が付いている場合があるため、より多くのデータを読み取る必要があります。
  4. 次の読み取りで、ハードドライブは指定されたトラックとセクターに移動し、データを読み込むように指示されます。

以前のすべてのデータから通信ポートを通過してメモリに入る(または無視される)時間を節約できます。

于 2012-09-27T19:47:11.223 に答える