7

R を使用して大きな DNA シーケンス ファイル (fastq ファイル、それぞれ数ギガバイト) を分析しようとしていますが、これらのファイルへの標準の R インターフェイス (ShortRead) はファイル全体を一度に読み取る必要があります。これはメモリに収まらないため、エラーが発生します。一度に数 (千) 行を読み取り、それらをメモリ内ファイルに詰め込み、ShortRead を使用してそのメモリ内ファイルから読み取る方法はありますか?

R 用の Perl の IO::Scalar のようなものを探しています。

4

4 に答える 4

2

ShortReadは、私が望むことを実行する「FastqStreamer」クラスをまもなく追加するようです。

于 2012-06-21T19:01:37.030 に答える
2

Rについてはよくわかりませんが、mmapパッケージをご覧になったことはありますか?

于 2010-11-08T16:42:48.927 に答える
1

まあ、ファイル以外のものを受け入れる readFastq については知りません...

しかし、他の関数については、R 関数の pipe() を使用して UNIX 接続を開くことができれば、UNIX コマンドの head と tail およびいくつかのパイプを組み合わせてこれを行うことができます。

たとえば、90 行目から 100 行目を取得するには、次のようにします。

head file.txt -n 100 | tail -n 10

したがって、ファイルをチャンクで読み取ることができます。

必要に応じて、いつでもこれらの UNIX ユーティリティを使用して一時ファイルを作成し、それを shortRead で読み込むことができます。面倒ですが、ファイルしか取得できない場合は、少なくとも機能します。

于 2011-09-15T14:14:13.300 に答える
1

ちなみに、R でインメモリ ファイルを作成する一般的な方法 (Perl の IO::Scalar など) に対する答えはtextConnection関数です。悲しいことに、ShortRead パッケージは textConnection オブジェクトを入力として処理できないため、ファイルを小さなチャンクでメモリ内ファイルに読み込み、ビットごとに解析するという質問で述べたアイデアは、多くのアプリケーションで確かに可能ですが、 ShortRead は textConnections を好まないため、特定のアプリケーションには適していません。したがって、解決策は上記の FastqStreamer クラスです。

于 2012-06-22T20:14:38.383 に答える