2017-10-01 9 views
0

snakemakeが新しく、2つのパイプラインのステップを1つの大きなパイプラインにマージするために使用しています。いくつかの手順で同様の名前のファイルが作成され、ワイルドカードを制限する方法が見つからないという問題があるため、解決できない1ステップでエラーMissing input files for ruleが発生しています。ワイルドカード制約を入力するSnakemake

フルsnakefileが長く、ここに提供されています:https://mdd.li/snakefile

関連セクションは、(ファイルのセクションは以下欠けている)、次のとおりです。

wildcard_constraints: 
    sdir="[^/]+", 
    name="[^/]+", 
    prefix="[^/]+" 

# Several mapping rules here 

rule find_intersecting_snps: 
    input: 
     bam="hic_mapping/bowtie_results/bwt2/{sdir}/{prefix}_hg19.bwt2pairs.bam" 
    params: 
     hornet=os.path.expanduser(config['hornet']), 
     snps=config['snps'] 
    output: 
     "hic_mapping/bowtie_results/bwt2/{sdir}/{prefix}_hg19.bwt2pairs.remap.fq1.gz", 
     "hic_mapping/bowtie_results/bwt2/{sdir}/{prefix}_hg19.bwt2pairs.remap.fq2.gz", 
     "hic_mapping/bowtie_results/bwt2/{sdir}/{prefix}_hg19.bwt2pairs.keep.bam", 
     "hic_mapping/bowtie_results/bwt2/{sdir}/{prefix}_hg19.bwt2pairs.to.remap.bam", 
     "hic_mapping/bowtie_results/bwt2/{sdir}/{prefix}_hg19.bwt2pairs.to.remap.num.gz" 
    shell: 
     dedent(
      """\ 
      python2 {params.hornet}/find_intersecting_snps.py \ 
      -p {input.bam} {params.snps} 
      """ 
     ) 

# Several remapping steps, similar to the first mapping steps, but in a different directory 

rule wasp_merge: 
    input: 
     "hic_mapping/bowtie_results/bwt2/{sdir}/{prefix}_hg19.bwt2pairs.keep.bam", 
     "hic_mapping/wasp_results/{sdir}_{prefix}_filt_hg19.remap.kept.bam" 
    output: 
     "hic_mapping/wasp_results/{sdir}_{prefix}_filt_hg19.bwt2pairs.filt.bam" 
    params: 
     threads=config['job_cores'] 
    shell: 
     dedent(
      """\ 
      {module} 
      module load samtools 
      samtools merge --threads {params.threads} {output} {input} 
      """ 
     ) 

# All future steps use the name style wildcard, like below 

rule move_results: 
    input: 
     "hic_mapping/wasp_results/{name}_filt_hg19.bwt2pairs.filt.bam" 
    output: 
     "hic_mapping/wasp_results/{name}_filt_hg19.bwt2pairs.bam" 
    shell: 
     dedent(
      """\ 
      mv {input} {output} 
      """ 
     ) 

は、このパイプラインは、基本的には、いくつかのマッピング手順を行っていますhic_mapping/bowtie_results/bwt2/<subdir>/<file>のような1つのディレクトリ構造(subdirは3つの異なるディレクトリです)を使用して結果をフィルタリングし、hic_remap/bowtie_results/bwt2/<subdir>/<file>でもう1つのほぼ同じマッピング手順を実行してから、結果をまったく新しいディレクトリにマージし、名前:hic_mapping/wasp_results/<subdir>_<file>

私が持っている問題は、私は、ファイル名にサブディレクトリ名を折りたたむ場合wasp_mergeステップはfind_intersecting_snpsステップを壊すということです。私がサブディレクトリ構造をそのまま維持すれば、すべて正常に動作します。これを行うと、パイプラインの将来のステップを壊すだろう。

私が手にエラーがある: hic_mapping/bowtie_results/bwt2/HCASMC5-8/HCASMC-8-CAGAGAGG-TACTCCTT_S8_L006_001_hg19.bwt2pairs.bam

しかし、それは探している:

MissingInputException in line 243 of /godot/quertermous/PooledHiChip/pipeline/Snakefile: 
Missing input files for rule find_intersecting_snps: 
hic_mapping/bowtie_results/bwt2/HCASMC5-8_HCASMC-8-CAGAGAGG-TACTCCTT_S8_L006/001_hg19.bwt2pairs.bam 

正しいファイルがある いずれかによって、どこにでも作成し、また定義されていないhic_mapping/bowtie_results/bwt2/HCASMC5-8_HCASMC-8-CAGAGAGG-TACTCCTT_S8_L006/001_hg19.bwt2pairs.bam

ルール。私が持っている、しかし hic_mapping/wasp_results/HCASMC5-8_HCASMC-8-CAGAGAGG-TACTCCTT_S8_L006_001_filt_hg19.bwt2pairs.bam

hic_mapping/wasp_results/HCASMC5-8_HCASMC-8-CAGAGAGG-TACTCCTT_S8_L006_001_filt_hg19.bwt2pairs.filt.bam

または可能性(このエラーが作成され、ターゲットの後に)下流のファイル:私はそれを何とかwasp_mergeステップで作成されたファイルの存在によって混乱さだと思いますディレクトリ構造がまったく違うので、これらのファイルのどちらかがfind_intersecting_snpsルールを混乱させる理由は考えられません。

このエラーは非常にばかげているので、私は何かが分からないように感じるが、それは何かを理解できない。

答えて

0

問題は、ディレクトリ名とファイル名の両方にアンダースコアが含まれていることです。最後のファイル名では、2つのコンポーネントをアンダースコアで区切ります。

この分離文字を変更するか、他の場所から名前を取得するPython関数でルールを置き換えることで、問題を解決できます。

これは動作します:

rule wasp_merge: 
    input: 
     "hic_mapping/bowtie_results/bwt2/{sdir}/{prefix}_hg19.bwt2pairs.keep.bam", 
     "hic_mapping/wasp_results/{sdir}{prefix}_filt_hg19.remap.kept.bam" 
    output: 
     "hic_mapping/wasp_results/{sdir}{prefix}_filt_hg19.bwt2pairs.filt.bam" 
    params: 
     threads=config['job_cores'] 
    shell: 
     dedent(
      """\ 
      {module} 
      module load samtools 
      samtools merge --threads {params.threads} {output} {input} 
      """ 
     ) 
関連する問題