2016-06-30 6 views
0

Ich führe einen Befehl, der zwei Ausgabedateien generiert, diese zwei Dateien sind sehr groß und ich würde die Ausgabe als bgzip pipe, anstatt bgzip auf der Ausgabe nach dem Schreiben ausführen.Wie zwei Ausgabedateien zu bgzip sie Pipe?

Das sind meine aktuellen Befehle:

samtools sort -n --threads 16 -l 0 $file --reference $ref.fa | samtools fastq - -1 $file_1.fastq -2 $file_2.fastq 
bgzip $file_1.fastq 
bgzip $file_2.fastq 

Ist es möglich, in einem einzigen Befehl alle diejenigen zu tun?

Vielen Dank!

Antwort

0

Was bedeuten diese "-1" und "-2" Flags?

Wenn sie bedeuten "stdout umleiten in Datei" und "redirect stderr Datei", dann alles, was Sie könnte so etwas wie:

((YOUR_COMMAND) | bzip> $ file_1.fastq.bz) 2> 1 | bzip> $ file_2.fastq.bz

Wo Your_COMMAND ist das gleiche wie das, was Sie tun, nur ohne die -1 und -2. Die Idee hier ist, stdout eine Pipeline und stderr die andere runter zu schicken. Ja, es ist ein bisschen klapprig. (Wenn in Ihrer Pipeline früher ein Fehler gemeldet wird, wird dieser in Datei 2 angezeigt.)

Wenn das nicht das ist, was -1 und -2 bedeuten, dann ... kenne ich keine Tricks dafür.

+0

Danke, aber ich denke nicht, dass das funktioniert. Der Befehl nimmt eine Datei als Eingabe und sortiert sie je nach Inhalt in 2 verschiedene Dateien, so dass Sie -1 und -2 angeben müssen. Danke für den Versuch! – FairyDuster

0

Ich habe es herausgefunden!

samtools sort -n --threads 16 -l 0 $file --reference $ref.fa | samtools fastq - -1 >(pigz -p 12 > $file_1.fastq.gz) -2 >(pigz -p 12 > $file_2.fastq.gz) 
Verwandte Themen