というプログラムを使っています。ミニマップ読み取りを参照ゲノムにソートするために使用されます(計算生物学の問題)。このプログラムは、位置引数として2つのファイルを入力する必要があります。まず、形式の参照.fasta
と形式の読み取り結果ファイルですfastq
。
問題は、fastq
ファイルが複数あることです。 1つのオプションは、cat *.fastq > cat_all.fastq
まず呼び出しを使用してすべてを接続することですminimap
。しかし、ストレージスペースを無駄にしないように、すべてのファイルをリンクし、そのファイルを保存せずにminimap
パイプで接続したいと思います。cat_all.fastq
cat
出力を保存せずにプレースホルダとして保存し、同様のものにminimap
パイプする方法はありますか?
cat *.fastq | minimap2 -ax map-ont /path/to/a/file.fasta {placeholder_for_the_cat_command} > output_file.sam
minimap
以下は、単一の(接続された)ファイルを呼び出す方法の例ですPD180425_cat_all.fastq
。
minimap2 -ax map-ont /path/to/a/file.fasta PD180425_cat_all.fastq > PD180425_aligned_minimap.sam
答え1
はい、bash
シェルで使用できますプロセスの交換:
minimap -ax map-ont /path/to/fasta.file <( cat *.fastq ) >output.sam
これは<( ... )
プロセスの置き換えです。/dev/fd/XXX
読み取り時にコマンド出力が生成される名前付きパイプ(と同様)のパス名に置き換えられます。プロセス置換コマンドの出力はディスクに保存されません。
ツールminimap
がfastqデータから前後に移動する必要がなく、順次読み取る限り、これは機能します。
sh
プロセスを置き換えることなくこれを行うことができます(これはすべてのPOSIXシェルでも機能します)。
mkfifo fastq_data
cat *.fastq >fastq_data &
minimap -ax map-ont /path/to/fasta.file fastq_data >output.sam
rm fastq_data
これは、最初のコマンドとほぼ同じことを行います。名前付きパイプを作成し、fastqデータをここにリンクします(cat
すべての出力が読み込まれるまでバックグラウンドジョブとして実行され、minimap
終了します)。minimap
次に、名前付きパイプを使用してツールを呼び出してfastqデータを取得します。完了すると、名前付きパイプが削除されます。
fastq_data
パイプから読み込むとは、一時cat
ファイルではなくコマンドから直接読み取ることを意味します。同様に、結果はcat
ディスクに保存されません。
minimap
何らかの理由でツールが特定のファイル名サフィックスを含むfastqファイルを必要とする場合は、これが最良のオプションかもしれません。名前付きパイプdata.fastq
または同様の名前を指定するだけです。