我想编写一个Snakemake管道来处理短或长读排序文件,或者这两种类型,这取决于输入文件中提供的文件类型。首先,我的Snakefile调用一个shell脚本,该脚本创建一个配置文件,其名称为输入目录中标题short_reads下的所有短读文件和标题long_reads下的所有长读文件。以下是我的全部规则:
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
我如何设计规则--在某种程度上,它可以只处理短读或长读,以及作为输入处理两种序列类型?
谢谢你的帮忙!
发布于 2020-12-16 12:14:05
下面的方法有效吗?
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,
...https://stackoverflow.com/questions/65314358
复制相似问题