我使用snakemake,我试图在对齐上编写工作流程并创建bigwig。 我想在一个文件上使用星形对齐后引入一个创建用于给我一个方法来运行假发生成只有在所有样本对齐后。
我有这个错误:
snakemake --core 3 --configfile config_tardis.yml -np
RuleException in line 40 of /home/centos/rna_test/rules/star2.rules:
Could not resolve wildcards in rule star_map:
sample
我尝试使用此代码:
rule star_map:
input:
dt="trim/{sample}/",
forward_paired="trim/{sample}/{sample}_forward_paired.fq.gz",
reverse_paired="trim/{sample}/{sample}_reverse_paired.fq.gz",
forward_unpaired="trim/{sample}/{sample}_forward_unpaired.fq.gz",
reverse_unpaired="trim/{sample}/{sample}_reverse_unpaired.fq.gz",
t1p="database.done",
output:
out1="ALIGN/{sample}/Aligned.sortedByCoord.out.bam",
out2=touch("Star.align.done")
params:
genomedir = config['references']['basepath'],
sample=config["samples"],
platform_unit=config['platform'],
cente=config['center']
threads: 12
log: "ALIGN/log/{params.sample}_star.log"
shell:
'STAR --runMode alignReads --genomeDir {params.genomedir} '
r' --outSAMattrRGline ID:{params.sample} SM:{params.sample} PL:{config[platform]} PU:{params.platform_unit} CN:{params.cente} '
'--readFilesIn {input.forward_paired} {input.reverse_paired} {input.forward_unpaired} {input.reverse_unpaired} \
--readFilesCommand zcat \
--outStd Log \
--outSAMunmapped Within \
--outSAMtype BAM SortedByCoordinate \
--runThreadN {threads} --outFileNamePrefix {output.out1};{output.out2} 2> {log} '
rule star_wigg_file:
input:
f1= "ALIGN/{sample}/Aligned.sortedByCoord.out.bam",
t1p="Star.align.done",
output:
"ALIGN/{sample}/wiggle/"
threads: 12
shell:
'STAR --runMode inputAlignmentsFromBAM -inputBAMfile {input.f1} --outWigType wiggle \
--outWigStrand Stranded '
因此,问题似乎与引入触摸有关
答案 0 :(得分:1)
您没有为Snakemake提供任何确定{sample}值的机制。在Snakemake最远的输出中,是一个显式字符串。 Snakemake需要使用此字符串进行比较,并尝试匹配每个规则输出的模式。
我喜欢将{sample}定义为扩展,作为规则all as per the author's suggestion的输入。
将这样的内容添加到当前文件的顶部,并在config_tardis.yml中定义样本列表“sampleLIST”:
在Snakefile中作为最重要的规则:
rule all:
input:
expand("ALIGN/{sample}/wiggle", sample=config["sampleLIST"])
在配置文件config_tardis.yml中添加:
sampleLIST: ['Patient1','Patient2','Patient3']
旁注,根据评论。我也有兴趣解决触摸的使用问题。意图是管道设计应该依赖于Snakemake对实际输出文件的依赖性确定。文件“Star.align.done”看起来像是一个代理文件,如果是这样,没有它可能会有另一种方式。