我尝试按以下方式使用并行命令:
cat asm.contig.fasta | parallel -k --block 1k --recstart '>' --pipe 'blat -t=dnax -q=prot - ../swissprot.fasta out{#}.psl -noHead'
但不幸的是我收到了这个错误:
mustOpen: Can't open - to read: No such file or directory
我做错了什么?
答案1
该错误不是来自 GNU Parallel,因此它来自blat
.我已经多年没有使用过blat
,所以我不能 100% 确定以下内容。
我的猜测是,您不能使用 use-
来表示blat
.
挠痒痒的方法有好几种blat
。在许多系统上使用/dev/stdin
它将标准输入作为先进先出:
cat asm.contig.fasta | parallel -k --block 1k --recstart '>' --pipe 'blat -t=dnax -q=prot /dev/stdin ../swissprot.fasta out{#}.psl -noHead'
使用--fifo
它将创建一个 fifo/命名管道,它将在所有支持的系统上将标准输入作为 fifo。命令完成后,fifo 将被删除:
cat asm.contig.fasta | parallel --fifo -k --block 1k --recstart '>' --pipe 'blat -t=dnax -q=prot {} ../swissprot.fasta out{#}.psl -noHead'
使用--cat
它将创建一个包含 1k 数据块的常规文件。命令完成后,文件将被删除。
cat asm.contig.fasta | parallel --cat -k --block 1k --recstart '>' --pipe 'blat -t=dnax -q=prot {} ../swissprot.fasta out{#}.psl -noHead'
--cat
通常是最慢的(预计--block 1k
每个作业会多花 1 毫秒),但几乎可以保证可以工作。
让我们知道哪一个有效。