Snakemake bash执行失败,但打印规则工作正常

问题描述

我在Stackoverflow上看到了与此类似的问题,但是抱歉,我无法解决它。

我正在使用一条蛇形管道中的规则之一对fasta文件进行一些操作:

rule prep_headers:
        input:
                "reads_prepped/{sample}_good.fasta"
        output:
                "reads_prepped/{sample}_prepped.fasta"
        shell:
                "source bin/functions.sh; trimheaders {input} 50 | makeidsuniq > {output}"

其中functions.sh文件包含以下两个功能

function trimheaders() {
        cat $1 | awk -v max=${2} "{if(\$0~\">\"){printf(\"%s\n\",substr(\$1,1,max))}else{print \$0}}";
}
function makeidsuniq() {
        perl -pe 's/$/_$seen{$_}/ if ++$seen{$_}>1 and /^>/; ' $1 ;
}

Snakemake但是此规则有误:

Error in rule prep_headers:
    jobid: 0
    output: reads_prepped/Horizontal_prepped.fasta
    shell:
        source bin/functions.sh; trimheaders reads_prepped/Horizontal_good.fasta 50 | makeidsuniq > reads_prepped/Horizontal_prepped.fasta
        (one of the commands exited with non-zero exit code; note that snakemake uses bash strict mode!)

Removing output files of Failed job prep_headers since they might be corrupted:
reads_prepped/Horizontal_prepped.fasta
Shutting down,this might take some time.
Exiting because a job execution Failed. Look above for error message

奇怪的是,如果我接着将上面显示的命令直接复制并粘贴到终端中,它就可以正常工作...

我已经尝试按照其他帖子的建议设置+ o pipefail,但这并不能解决问题。

有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)