Почему одно правило змеиного мейкера всегда пропускается или игнорируется - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь исправить Змеиный файл.Существует два правила (см. Код ниже), каждое из которых будет работать, если оно единственное, но только правило prernaseqc будет работать, когда оба сохраняются.

Кажется, что snakemake полностью игнорируетпрочее.

Я пытался дотронуться до файла files_to_rnaseqc.txt и т. д., и это не помогло.Зачем?

Любые идеи будут оценены.

import os
configfile: "run.json"
workpath = config['project']['workpath']

samples=sorted(list(config['project']['units'].keys()))

from snakemake.utils import R
from os.path import join
configfile: "run.json"

from os import listdir

star_dir="STAR_files"
bams_dir="bams"
log_dir="logfiles"
rseqc_dir="RSeQC"
kraken_dir="kraken"
preseq_dir="preseq"
pfamily = 'rnaseq'


rule prernaseqc:
   input: 
    expand(join(workpath,bams_dir,"{name}.star_rg_added.sorted.dmark.bam"), name=samples)
   output:
    out1=join(workpath,bams_dir,"files_to_rnaseqc.txt")
   priority: 2
   params: 
    rname='pl:prernaseqc',batch='--mem=4g --time=04:00:00'
   run:
        with open(output.out1, "w") as out:
            out.write("Sample ID\tBam file\tNotes\n")
            for f in input:
                out.write("%s\t"  % f)
                out.write("%s\t"  % f)
                out.write("%s\n"  % f)
            out.close()

rule rnaseqc:
   input:
    join(workpath,bams_dir,"files_to_rnaseqc.txt")
   output:
    join(workpath,"STAR_QC")
   priority: 2
   params: 
    rname='pl:rnaseqc',
    batch='--mem=24g --time=48:00:00',
    bwaver=config['bin'][pfamily]['tool_versions']['BWAVER'],
    rrnalist=config['references'][pfamily]['RRNALIST'],
    rnaseqcver=config['bin'][pfamily]['RNASEQCJAR'],
    rseqcver=config['bin'][pfamily]['tool_versions']['RSEQCVER'],   
    gtffile=config['references'][pfamily]['GTFFILE'],
    genomefile=config['references'][pfamily]['GENOMEFILE']

   shell: """
module load {params.bwaver}
module load {params.rseqcver}

var="{params.rrnalist}"
if [  $var == "-" ]; then
      java -Xmx48g -jar {params.rnaseqcver} -n 1000 -s {input} -t {params.gtffile} -r {params.genomefile}  -o {output}
else
      java -Xmx48g -jar {params.rnaseqcver} -n 1000 -s {input} -t {params.gtffile} -r {params.genomefile} -rRNA {params.rrnalist}  -o {output}
fi

1 Ответ

0 голосов
/ 11 мая 2019

Snakemake, по замыслу, использует выходные файлы, перечисленные в первом правиле файла, в качестве целевых файлов (то есть файлов, которые необходимо создать). Следовательно, в вашем случае, какое бы правило ни выполнялось первым, а другое остается неисполненным.

Вам необходимо указать целевое правило , в котором перечислены все выходные файлы. Это принято называть rule all.

rule all:
    input:
        join(workpath,bams_dir,"files_to_rnaseqc.txt"),
        join(workpath,"STAR_QC")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...