snakemake - 蛇制造。创建多个目标时如何从命令行传递目标
问题描述
在上一个问题的帮助下,此代码在两个目录中的每一个中创建目标(名为“practice_phased_reversed.vcf”的文件的副本。
dirs=['k_1','k2_10']
rule all:
input:
expand("{f}/practice_phased_reversed.vcf",f=dirs)
rule r1:
input:
"practice_phased_reversed.vcf"
output:
"{f}/{input}"
shell:
"cp {input} {output}"
但是,我想在snakemake 命令行上传递目标文件。
我尝试了这个(如下),使用命令“snakemake practice_phased_reversed.vcf”,但它给出了一个错误:“MissingRuleException:没有规则产生 practice_phased_reversed.vcf”
dirs=['k_1','k2_10']
rule all:
input:
expand("{f}/{{base}}_phased_reversed.vcf",f=dirs)
rule r1:
input:
"{base}_phased_reversed.vcf"
output:
"{f}/{input}"
shell:
"cp {input} {output}"
谢谢你的帮助
解决方案
我认为您应该在命令行上将目标文件名作为配置选项传递,并使用该选项在 Snakefile 中构造文件名:
target = config['target']
dirs = ['k_1','k2_10']
rule all:
input:
expand("{f}/%s" % target, f=dirs),
rule r1:
input:
target,
output:
"{f}/%s" % target,
shell:
"cp {input} {output}"
要执行为:
snakemake -C target=practice_phased_reversed.vcf
推荐阅读
- c# - Xamarin.iOS 底部视图部分超出视口,直到滚动(LargeTitle、SearchBar、ListView 和 BoxView 组合)
- c++ - 如何在文件仍然打开时删除文本文件的内容(不重新打开文件)?
- python - 如何将不同的函数分配给一个变量,以便根据条件使用不同的函数
- c++ - 程序因 While 循环而崩溃
- keras - 如何在模型创建期间在 keras/tensorflow 中执行层的笛卡尔积?
- java - 断开连接后重试 AWS IoT 作业执行
- java - 我的 JavaFx 应用程序在 jdk 8 和 Mac OSX 中随机冻结
- spring-boot - 我应该如何更改 JUNIT 中布尔变量的值?
- openssl - 从 base64 字符串中的证书获取可分辨名称(DN)
- python - 无法导入 QUERY_TERMS