GNU 并行读取多个文件
GNU parallel read from several files
我正在尝试使用 GNU parallel 通过名为 vcf2maf 的生物信息学工具转换单个文件。
我的命令看起来像这样:
${parallel} --link "perl ${vcf2maf} --input-vcf \
--output-maf ${maf_dir}/.maf \
--tumor-id \
--tmp-dir ${vcf_dir} \
--vep-path ${vep_script} \
--vep-data ${vep_data} \
--ref-fasta ${fasta} \
--filter-vcf ${filter_vcf}" :::: ${VCF_files} ${results} ${tumor_ids}
VCF_files
、results
和tumor_ids
每行一个条目,一一对应。
当我尝试 运行 命令时,每个文件都出现以下错误:
ERROR: Both input-vcf and output-maf must be defined!
这让我很困惑,因为如果我手动 运行 命令,程序会按预期运行,所以我认为 input/outpit 路径没有错。为了证实这一点,我还 运行
${parallel} --link "cat " :::: ${VCF_files} ${results} ${tumor_ids}
,
正确打印 VCF 文件的内容,其路径在 VCF_files
.
中列出
我真的很困惑我做错了什么,如果有人能帮助我,我将不胜感激!
谢谢!
对于这么长的命令,我通常会定义一个函数:
doit() {
...
}
export -f doit
然后在单个输入上进行测试。
何时有效:
parallel --link doit :::: ${VCF_files} ${results} ${tumor_ids}
但是如果你想使用单个命令,它将看起来像:
${parallel} --link "perl ${vcf2maf} --input-vcf {1} \
--output-maf ${maf_dir}/{2}.maf \
--tumor-id {3} \
--tmp-dir ${vcf_dir} \
--vep-path ${vep_script} \
--vep-data ${vep_data} \
--ref-fasta ${fasta} \
--filter-vcf ${filter_vcf}" :::: ${VCF_files} ${results} ${tumor_ids}
GNU Parallel 的替换字符串是 {1}、{2} 和 {3} - 而不是 ${1}、${2} 和 ${3}。
--dryrun
当 GNU Parallel 没有按照您的预期去做时,它是您的朋友。
我正在尝试使用 GNU parallel 通过名为 vcf2maf 的生物信息学工具转换单个文件。
我的命令看起来像这样:
${parallel} --link "perl ${vcf2maf} --input-vcf \
--output-maf ${maf_dir}/.maf \
--tumor-id \
--tmp-dir ${vcf_dir} \
--vep-path ${vep_script} \
--vep-data ${vep_data} \
--ref-fasta ${fasta} \
--filter-vcf ${filter_vcf}" :::: ${VCF_files} ${results} ${tumor_ids}
VCF_files
、results
和tumor_ids
每行一个条目,一一对应。
当我尝试 运行 命令时,每个文件都出现以下错误:
ERROR: Both input-vcf and output-maf must be defined!
这让我很困惑,因为如果我手动 运行 命令,程序会按预期运行,所以我认为 input/outpit 路径没有错。为了证实这一点,我还 运行
${parallel} --link "cat " :::: ${VCF_files} ${results} ${tumor_ids}
,
正确打印 VCF 文件的内容,其路径在 VCF_files
.
我真的很困惑我做错了什么,如果有人能帮助我,我将不胜感激!
谢谢!
对于这么长的命令,我通常会定义一个函数:
doit() {
...
}
export -f doit
然后在单个输入上进行测试。
何时有效:
parallel --link doit :::: ${VCF_files} ${results} ${tumor_ids}
但是如果你想使用单个命令,它将看起来像:
${parallel} --link "perl ${vcf2maf} --input-vcf {1} \
--output-maf ${maf_dir}/{2}.maf \
--tumor-id {3} \
--tmp-dir ${vcf_dir} \
--vep-path ${vep_script} \
--vep-data ${vep_data} \
--ref-fasta ${fasta} \
--filter-vcf ${filter_vcf}" :::: ${VCF_files} ${results} ${tumor_ids}
GNU Parallel 的替换字符串是 {1}、{2} 和 {3} - 而不是 ${1}、${2} 和 ${3}。
--dryrun
当 GNU Parallel 没有按照您的预期去做时,它是您的朋友。