我正在获取两个具有文件名和路径的列表,并使用 gnu-parallel 处理这两个列表中的文件。但是,当我检查输出时,该命令只能使用第一个列表中的文件,而不能使用第二个列表中的文件。我尝试了此中的各种选项。例如给出文件类型--readFilesIn
(这是错误所在)
reads_list=/comb_fastq/fq1.list
reads_list2=/comb_fastq/fq2.list
for fastq in `cat $reads_list`;do
rsync -av $fastq $TMPDIR/input/
done
for fastq in `cat $reads_list2`;do
rsync -av $fastq $TMPDIR/input2/
done
parallel -j $NSLOTS --xapply \
"STAR \
--genomeDir $TMPDIR/reference_genome \
--genomeLoad LoadAndKeep \
--runThreadN 4 \
--readFilesIn ../input/{1} ../input2/{1}
答案1
您没有告诉 GNU Parallel $reads_list 和 $reads_list2。所以我很困惑你怎么会期望 GNU Parallel 猜测它应该使用这些。
通过并行同步(而不是运行第一个作业之前的所有内容),它也可能会更快。我的猜测是这已经足够了:
parallel -j $NSLOTS --xapply \
"rsync {1} $TMPDIR/input/{1};\
rsync {2} $TMPDIR/input2/{2};\
STAR \
--genomeDir $TMPDIR/reference_genome \
--genomeLoad LoadAndKeep \
--runThreadN 4 \
--readFilesIn ../input/{1} ../input2/{2}" :::: $reads_list $reads_list2
考虑完成本教程http://www.gnu.org/software/parallel/parallel_tutorial.html其中涵盖了这一点以及更多内容。您的命令行会因此而喜欢您。