FASTQ 파일 서브샘플링
수준: 초급+
와일드카드를 사용한 규칙 일반화 챕터에서는 와일드카드를 활용해 다양한 파일을 처리하는 방법을 소개했습니다. 아래는 와일드카드를 이용해 FASTQ 파일을 서브샘플링하는 예시입니다:
rule all:
input:
"big.subset100.fastq"
rule subset:
input:
"big.fastq"
output:
"big.subset{num_lines}.fastq"
shell: """
head -{wildcards.num_lines} {input} > {output}
"""참고:
라인 수가 아닌 레코드 수 기준으로 서브샘플링하기
위 방식의 잠재적 문제점은, 서브샘플링 기준이 레코드 수가 아닌 줄(라인) 수라는 점입니다. FASTQ 파일에서는 4줄이 하나의 레코드를 구성합니다. 따라서 이상적으로는 결과 파일 이름에 줄 수가 아닌 레코드 수가 포함되어야 합니다. 이를 위해서는 레코드 수에 4를 곱한 값을 사용해야 합니다!
params: 함수를 사용하면 규칙 안에 Python 함수를 정의하여 이러한 계산을 처리할 수 있습니다.