我最近开始使用snakemake
,想在我的snakefile中运行一个shell
脚本。但是,我在访问input
,output
和params
时遇到了麻烦。我将非常感谢您的建议!
以下是相关代码片段:
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
...
2条答案
按热度按时间uoifb46i1#
使用
{}
语句的语法仅适用于在Snakefile
中定义的shell脚本,而在您提供的示例中,脚本是在外部定义的。如果你想将脚本作为外部脚本使用,你需要传递相关的参数(并在shell脚本中解析它们),否则,可以将脚本内容复制粘贴到
shell
指令中,并让snakemake替换{}
变量。velaa5lx2#
从v7.14.0开始,Snakemake现在支持执行外部Bash脚本,可以访问内部的Snakemake对象。