首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写Snakemake规则- all,其中展开语句可以处理所有特定输入文件的缺失。

如何编写Snakemake规则- all,其中展开语句可以处理所有特定输入文件的缺失。
EN

Stack Overflow用户
提问于 2020-12-15 22:05:02
回答 1查看 201关注 0票数 0

我想编写一个Snakemake管道来处理短或长读排序文件,或者这两种类型,这取决于输入文件中提供的文件类型。首先,我的Snakefile调用一个shell脚本,该脚本创建一个配置文件,其名称为输入目录中标题short_reads下的所有短读文件和标题long_reads下的所有长读文件。以下是我的全部规则:

代码语言:javascript
复制
rule all:
input:
expand("../qc/id/{sample}/fastqc_raw/{sample}_R1_fastqc.html", sample=config["samples_short"]),
expand("../qc/id/{sample}/nanoplot_raw/NanoPlot-report.html", sample=config["samples_long"])
...

但是,如果没有提供其中一个文件类型(长读或短读),Snakemake就会在KeyError中失败。如果我修改配置文件的方式仍然是标题,但没有示例名称,Snakemake尝试用值None调用输入。

缺少规则nanoplot_raw的输入文件:../raw_reads/None_ files .Fastq.gz

我如何设计规则--在某种程度上,它可以只处理短读或长读,以及作为输入处理两种序列类型?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-16 12:14:05

下面的方法有效吗?

代码语言:javascript
复制
if config["samples_short"]:
    fastqc_short = expand("../qc/id/{sample}/fastqc_raw/{sample}_R1_fastqc.html", sample=config["samples_short"])
else:
    fastqc_short = []

if config["samples_long"]:
    nanoplot_long = expand("../qc/id/{sample}/nanoplot_raw/NanoPlot-report.html", sample=config["samples_long"])
else:
    nanoplot_long = []

rule all:
    input:
        fastqc_short,
        nanoplot_long,
        ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65314358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档