나는 snakemake를 처음 사용하고 있으며 두 파이프 라인의 단계를 하나의 큰 파이프 라인으로 병합하는 데 사용하고 있습니다. 여러 단계에서 비슷한 이름의 파일을 만드는 문제와 와일드 카드를 제한하는 방법을 찾을 수 없기 때문에 해결할 수없는 한 단계에서 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>
(subdir은 3 개의 다른 디렉토리 임)으로 표시되고 그 결과를 필터링하고 결과를 완전히 새로운 디렉토리로 병합 한 다음 서브 디렉토리를 파일로 축소하기 전에 hic_remap/bowtie_results/bwt2/<subdir>/<file>
에서 또 다른 거의 동일한 매핑 단계를 수행하십시오 이름 : 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.filt.bam
또는 (이 오류를 생성 대상 후) 다운 스트림 파일 : hic_mapping/wasp_results/HCASMC5-8_HCASMC-8-CAGAGAGG-TACTCCTT_S8_L006_001_filt_hg19.bwt2pairs.bam
그러나, 내가 가진 나는 그것이 어떻게 든 wasp_merge
단계에 의해 생성 된 파일의 존재에 의해 혼란스러워지고 생각 디렉터리 구조가 완전히 다르기 때문에 두 파일 중 어느 하나가 find_intersecting_snps
규칙을 혼동하는 이유는 알 수 없습니다.
이 오류는 매우 터무니 없기 때문에 나는 분명히 분명한 것 같아 보이지만, 나는 그것이 무엇인지 알 수 없다.