첫 번째 Snakefile을 넘어서
이 섹션은 Snakemake를 이미 사용해 본 경험이 있으며, 더 많은 기능을 배우고 적용하고 싶은 분들을 위해 작성되었습니다!
이 섹션의 동기
아래 Snakefile을 살펴봅시다:
# 대상: -n
# ANCHOR: 내용
FASTQ_FILES = glob_wildcards("{sample}.fastq")
rule all:
input:
"multiqc_report.html"
rule multiqc:
input:
expand("{sample}_fastqc.html", sample=FASTQ_FILES.sample)
output:
"multiqc_report.html"
shell: """
multiqc . --filename {output:q} -f
"""
rule fastqc_raw:
input:
"{sample}.fastq"
output:
"{sample}_fastqc.html", "{sample}_fastqc.zip"
shell: """
fastqc {input:q}
"""
# ANCHOR_END: 내용이 Snakefile은 현재 디렉토리에서 .fastq로 끝나는 파일을 모두 찾습니다. 그런 다음 각 파일에 FASTQC를 실행하고, multiqc로 요약 보고서를 생성합니다. 파일이 몇 개든 상관없이 동작하며, 하위 디렉토리의 파일도 자동으로 찾습니다. 단일 머신에서 병렬로 실행하거나 클러스터의 여러 머신에서 실행할 수도 있으며, 제한은 오직 Snakemake에 제공한 컴퓨팅 자원뿐입니다. 새로운 FASTQ 파일이 추가되면, Snakemake가 자동으로 감지해 fastqc를 실행하고 multiqc도 다시 실행하여 요약 보고서를 업데이트합니다.
이렇게 강력한 기능을 갖추면서도 코드량이 적다는 것을 느끼실 수 있습니다. 하지만 처음에는 다소 간결하고 복잡해 보일 수 있습니다!
이 섹션은 위의 기능을 구현하는 Snakemake의 모든 특성(과 Snakefile 작성 방법)을 설명하는 데 초점을 맞추고 있습니다. 이 섹션을 마치면 Snakemake 핵심 기능의 80% 이상을 사용할 수 있게 됩니다! 나머지 20%의 핵심 기능들도 필요할 때마다 찾아볼 수 있도록 참고 자료를 제공합니다.
이 섹션의 요약
이 섹션은 섹션 1~2의 기초적인 학습 과정과, 이후 섹션 및 공식 Snakemake 문서에서 다루는 워크플로 시스템의 완전한 기능 사이를 잇는 다리 역할을 합니다.
여기서는 input/output 블록, 와일드카드, params 블록, glob_wildcards, expand를 소개합니다. 또한 Snakemake 워크플로 디버깅에 대한 일반적인 접근법과 기본 문법 규칙도 다룹니다.