无法在snakemake中执行shell脚本

pvabu6sv  于 2022-12-23  发布在  Shell
关注(0)|答案(2)|浏览(260)

我最近开始使用snakemake,想在我的snakefile中运行一个shell脚本。但是,我在访问inputoutputparams时遇到了麻烦。我将非常感谢您的建议!
以下是相关代码片段:
1.从我的蛇文件

rule ..:
    input:
        munged = 'results/munged.sumstats.gz'
    output:
        ldsc = 'results/ldsc.txt'
    params:
        mkdir = 'results/ldsc_results/',
        ldsc_sumstats = '/resources/ldsc_sumstats/',
    shell:
        'scripts/run_gc.sh'

1.和脚本:

chmod 770 {input.munged}
mkdir -p {params.mkdir}

ldsc=$(ls {params.ldsc_sumstats})
for i in $ldsc; do
...

我收到以下错误消息:

...
chmod: cannot access '{input.munged}': No such file or directory
ls: cannot access '{params.ldsc_sumstats}': No such file or directory
...
uoifb46i

uoifb46i1#

使用{}语句的语法仅适用于在Snakefile中定义的shell脚本,而在您提供的示例中,脚本是在外部定义的。
如果你想将脚本作为外部脚本使用,你需要传递相关的参数(并在shell脚本中解析它们),否则,可以将脚本内容复制粘贴到shell指令中,并让snakemake替换{}变量。

velaa5lx

velaa5lx2#

从v7.14.0开始,Snakemake现在支持执行外部Bash脚本,可以访问内部的Snakemake对象。

相关问题