2017-02-27 2 views
1

Ich bin relativ neu in der Informatik, und habe gerade die Tugenden der parallel Befehl entdeckt. Ich habe jedoch Probleme, dies in Verbindung mit Rohrleitungen und Output zu verwenden.parallel gnu Befehl in Verbindung mit Rohrleitungen

Ich verwende diesen Befehl ein:

parallel -j 2 echo ./hisat2 --dta -p 32 -x path/to/index -U {} | ./samtools view -b - > /path/to/storage/folder/{/.}.bam :::: fs1 > executable.sh 

fs1 enthält eine Liste aller Dateien, die ich ausführen möchten. executable.sh ist die ausführbare Befehlsliste. Ich möchte, dass jede Datei, die in fs1 aufgelistet ist, einzeln von einem Programm (hisat2) verarbeitet wird und die sam-Datei der Ausgabe in das bam-Format konvertiert wird. Es scheint jedoch nicht die Rohrleitungen - es klagt mit dem folgenden:

bash: /path/to/storage/folder/{/.}.bam: No such file or directory 
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit. 

Wie kann ich das überwinden? Ist der einzige Weg um dies zu tun, zuerst alle Dateien zu sam verarbeiten, und dann parallel Bam konvertieren?

Antwort

0

Sie müssen das Rohr und die Umleitung zitieren:

parallel -j 2 "./hisat2 --dta -p 32 -x path/to/index -U {} | ./samtools view -b - > /path/to/storage/folder/{/.}.bam" :::: fs1 

Verwenden --dry-run zu sehen, was laufen würde:

parallel --dry-run -j 2 "./hisat2 --dta -p 32 -x path/to/index -U {} | ./samtools view -b - > /path/to/storage/folder/{/.}.bam" :::: fs1 

(Sind Sie sicher, samtools in aktuellen Verzeichnis ist in der Regel, dass installiert ist für ein breiteres Publikum.)

Darf ich vorschlagen, Sie verbringen eine Stunde zu Fuß durch man parallel_tutorial? Ihre Befehlszeile wird Sie dafür lieben.

+0

funktioniert das immer noch nicht für mich, sorry ... sollte> ein '>' haben? Ich werde auf das Tutorial schauen, Prost –

+0

Nein, aber versuchen Sie --dry-run. –

Verwandte Themen