2017-09-19 2 views
0

쌍 샘플 (종양 및 정상)을 사용하여 gatk 재조정을 사용하고 싶습니다. 팬더를 사용하여 데이터를 구문 분석해야합니다. 그것이 내가 부른 것입니다.snakemake 쌍 분석기를 인코딩하는 방법

InputFunctionException in line 17 of /home/maurizio/Desktop/TEST_exome/rules/samfiles.rules: 
KeyError: '432/432_433' 
Wildcards: 
sample=432/432_433 

이가 samfiles.rules입니다 :이 오류가

rule gatk_RealignerTargetCreator: 
    input: 
      "mapped_reads/merged_samples/{tumor}.sorted.dup.reca.bam", 
      "mapped_reads/merged_samples/{normal}.sorted.dup.reca.bam", 

    output: 
     "mapped_reads/merged_samples/{tumor}/{tumor}_{normal}.realign.intervals" 
    params: 
     genome=config['reference']['genome_fasta'], 
     mills= config['mills'], 
     ph1_indels= config['know_phy'], 
    log: 
     "mapped_reads/merged_samples/logs/{tumor}_{normal}.realign_info.log" 
    threads: 8 
    shell: 
     "gatk -T RealignerTargetCreator -R {params.genome} {params.custom} " 
     "-nt {threads} " 
     "-I {wildcard.tumor} -I {wildcard.normal} -known {params.ph1_indels} " 
     "-o {output} >& {log}" 

:

432,433 
434,435 

나는이 규칙을 썼다
expand("mapped_reads/merged_samples/{sample[1][tumor]}/{sample[1][tumor]}_{sample[1][normal]}.bam", sample=read_table(config["conditions"], ",").iterrows()) 

는 조건 파일입니다 :

rule samtools_merge_bam: 
    """ 
    Merge bam files for multiple units into one for the given sample. 
    If the sample has only one unit, files will be copied. 
    """ 
    input: 
     lambda wildcards: expand("mapped_reads/bam/{unit}_sorted.bam",unit=config["samples"][wildcards.sample]) 
    output: 
     "mapped_reads/merged_samples/{sample}.bam" 
    benchmark: 
     "benchmarks/samtools/merge/{sample}.txt" 
    run: 
     if len(input) > 1: 
      shell("/illumina/software/PROG2/samtools-1.3.1/samtools merge {output} {input}") 
     else: 
      shell("cp {input} {output} && touch -h {output}") 
+0

분명히 "432/432_433"은 설정 파일의 샘플 중에 없습니다. 이것은 오류 메시지가 우리에게 알려주는 것입니다 (구성 변수는 Python dict이며 KeyError를 던집니다). 첫 번째 규칙에는 두 개의 와일드 카드가 있고 samtools_merge_bam 규칙에는 두 개의 와일드 카드가 있습니다. 따라서이 하나의 와일드 카드는 파일 경로의'{종양}/{종양} _ {정상적인} '전체를 일치 시키려고합니다. –

+0

@ JohannesKöster 당신의 도움에 감사드립니다 !! 이 문제를 어떻게 관리 할 수 ​​있습니까? 이 문제를 해결하는 방법은 무엇입니까? 나랑 모범을 보이게 해줄 수 있니? –

답변

1

모든 관련 규칙을 표시하지 않기 때문에 나는 단지 추측 할 수 있지만 규칙 samtools_merge_bam는 또한 패턴 {tumor}/{tumor}_{normal}이 나중에, 빵 파일에 적용되기 때문에 오류가 발생 말할 것 ...

해결책으로,이 모호성을 해결해야합니다 (snakemake 자습서 참조). 예를 들어, 와일드 카드 samtools_merge_bam에 슬래시가 포함되지 않도록 제한 할 수 있습니다.

wildcard_constraints: 
    sample="[^/]+" 

제약 조건은 전체적으로 또는 samtools_merge_bam 규칙 내에 넣을 수 있습니다.