私が何を望んでいるのかを理解することが重要であるため、最初に私の問題を説明します:-)。
私は、いくつかの外部ツールを使用していくつかのゲノミクス データ分析を実行する Python で記述されたパイプラインに取り組んでいます。このツールの 1 つは非常に巨大な fastq ファイルで動作しますが、最終的にはプレーン テキスト ファイルではなくなります。
通常、この fastq ファイルは gzip 圧縮されており、プレーン テキストであるため、圧縮率が非常に高くなります。ほとんどのデータ分析ツールは gzip ファイルで動作しますが、動作しないものもいくつかあります。そのため、ファイルを解凍し、それらを操作して、最後に再圧縮しています。
ご想像のとおり、このプロセスは次のとおりです。
- もっとゆっくり
- ディスク消費量が多い
- 帯域幅の消費 (NFS ファイルシステムで作業している場合)
そこで私は、ツールのソース コードに手を加えることなく、これらのツールを「だまして」gzip 圧縮されたファイルを直接操作する方法を見つけようとしています。
FIFO ファイルを使用することを考え、それを試してみましたが、ツールがファイルを複数回読み取ったり、ツールがファイルをシークしたりすると機能しません。
だから基本的に私は質問する必要があります:
次のようなことができるように、ファイルをメモリにマップする方法はありますか?
./tool mapped_file
(ここで、mapped_file は実際にはファイルではなく、メモリ マップ ファイルへの参照です。どうすれば目標を達成できるかについて、他に何か提案はありますか?
みなさん、本当にありがとうございました!