BioPlayground

🧬
목록으로

FastQC와 어댑터 트리밍: fastp · Trim Galore로 파이프라인 입구 정돈하기

FastQC가 표시하는 20+개 지표 중 무엇을 봐야 하고, 어댑터가 무엇이며, fastp와 Trim Galore가 어떤 기준으로 리드를 자르는지. Galaxy EU 노코드 실습과 CLI 실습 두 방식을 병기합니다.

입문
|
18
|
검증 완료 (2026-07-22)
NGS QCadapter contaminationread trimming
진행률0/52 (0%)

왜 트리밍을 해야 하나요

FASTQ를 열어봤으니 이제 파이프라인에 넣기 전에 청소를 해야 합니다. 이 청소를 안 하고 그대로 정렬기로 던지면 무슨 일이 생길까요.

  • 어댑터 서열이 리드 3′에 남아 있어서 참조 게놈에 안 붙는 리드가 대량 발생합니다.
  • 3′ 저품질 꼬리가 mismatch로 카운트되어 GATK가 헛변이를 부릅니다.
  • PCR 중복이 duplication 지표를 부풀려 커버리지 계산이 왜곡됩니다.

즉 트리밍은 "예쁘게 다듬는 옵션"이 아니라 뒤 파이프라인의 통계 가정을 만족시키기 위한 정합성 작업입니다. 서두르지 맙시다.

FastQC — 무엇을 먼저 볼까요

FastQC 리포트는 항목이 스무 개가 넘어서 처음 열면 압도됩니다. 실무에서 매번 확인하는 순서를 좁혀둡시다.

1. Per base sequence quality (박스플롯)

  • 리드 위치(x축) × Phred 점수(y축) 박스플롯.
  • 리드 앞부분이 노란색 구간에 잠깐 잠기는 건 정상 (프리머 결합 시 노이즈).
  • 뒷부분이 Q20 상자 아래로 무너지면 → 3′ quality trimming 결재.

2. Per sequence quality scores (히스토그램)

  • 리드 평균 Q값 분포.
  • 봉우리가 Q30 근처에서 예쁘게 서 있어야 정상.
  • Q10~Q15에 두 번째 봉우리가 있으면 → 라이브러리 실패 의심.

3. Overrepresented sequences (표)

  • 특정 서열이 리드의 0.1% 이상 반복되면 여기 나옵니다.
  • FastQC가 자체 어댑터 DB와 대조해서 TruSeq Adapter Index 1 같은 매칭을 붙여줍니다.
  • 이 이름이 뜨는 순간 → adapter trimming 결재.

4. Adapter Content (라인차트)

  • 리드 위치별 어댑터 존재 비율.
  • 3′ 쪽에서 급격히 올라가면 어댑터 read-through 발생 (인서트가 리드 길이보다 짧아서 시퀀서가 어댑터까지 읽은 상황).

이 네 개만 매번 확실히 확인하면 다른 항목은 자연히 해석이 붙습니다.

어댑터가 뭔가요 — 그림 없이 이해하기

Illumina 라이브러리의 인서트는 이렇게 생겼습니다.

text
[P5] - [i5 인덱스] - [Rd1 프라이머] - [DNA 인서트] - [Rd2 프라이머] - [i7 인덱스] - [P7]

시퀀서는 Rd1 프라이머에서 시작해서 인서트 방향으로 읽어 들어갑니다. 그런데 인서트가 리드 길이(예: 150bp)보다 짧다면 어떻게 될까요. 시퀀서는 정직하게 계속 읽어서 인서트 끝을 넘어 반대편 Rd2 프라이머 서열까지 그대로 리드에 남깁니다. 그게 3′에 붙는 "어댑터"의 실체입니다.

즉 어댑터는 라이브러리 프로토콜별로 서열이 고정되어 있습니다. TruSeq이면 AGATCGGAAGAGC..., Nextera면 CTGTCTCTTATACACATCT. 트리밍 도구는 이 알려진 서열을 리드 3′에서 접미사 매칭으로 검출합니다.

fastp — 요즘 쓰는 원샷 도구

FastQC + Trim Galore + cutadapt를 예전엔 나눠 썼는데, 2018년 이후로는 fastp 하나로 대부분 정리합니다. 이유는 세 가지입니다.

  • 속도: C++로 짜여 있고 병렬 처리. 30GB 파일 5분 내.
  • 자동 어댑터 감지: 리드에서 오버랩되는 서열을 통계적으로 탐지 → 프로토콜을 몰라도 트리밍.
  • JSON 리포트: FastQC와 유사한 리포트를 JSON+HTML로 동시 산출 → MultiQC에 그대로 합칠 수 있음.

기본 실행

bash
fastp \
-i sample_R1.fastq.gz \
-I sample_R2.fastq.gz \
-o clean_R1.fastq.gz \
-O clean_R2.fastq.gz \
--detect_adapter_for_pe \
--qualified_quality_phred 20 \
--length_required 50 \
--json report.json \
--html report.html

옵션 세 줄만 뜯어봅시다.

  • --detect_adapter_for_pe: paired-end에서 R1/R2 오버랩으로 어댑터 자동 감지.
  • --qualified_quality_phred 20: 리드 뒤에서부터 슬라이딩 윈도우로 평균 Q20 이하 구간 잘라내기.
  • --length_required 50: 트리밍 후 50bp 미만이면 폐기.

Trim Galore — cutadapt 위에 얹은 얇은 레이어

fastp 이전 시대의 표준. Trim Galore는 내부적으로 cutadapt를 부르고, 인간·마우스 어댑터에 대한 기본 프리셋을 얹어 제공합니다. 기존 파이프라인 유지 관리 목적이라면 여전히 안전한 선택입니다.

bash
trim_galore --paired --quality 20 --length 50 \
-o clean/ sample_R1.fastq.gz sample_R2.fastq.gz

옵션 세 개(--paired, --quality, --length)만 알면 대부분 실무 요구가 충족됩니다.

fastp vs Trim Galore, 어느 걸 쓸까요

  • 신규 프로젝트: fastp 우선. 속도·자동 감지·리포트 통합.
  • 기존 Snakemake/Nextflow 유지 보수: 원 파이프라인 도구 유지 (호환성).
  • 참조 논문 재현: 논문이 지정한 도구 그대로 (재현성).

이 세 원칙만 잡으면 도구 선택으로 고민할 일이 거의 없습니다.

손 계산 — 슬라이딩 윈도우가 실제로 하는 일

품질 트리밍의 핵심은 3′ 슬라이딩 윈도우입니다. 예를 들어 윈도우 크기 4, 임계 Q20이면 이렇게 판단합니다.

리드 뒷부분 품질 벡터가 이렇다고 합시다.

... Q35 Q33 Q30 Q28 | Q22 Q18 Q15 Q10

3′에서 왼쪽으로 이동하면서 크기 4 윈도우의 평균을 봅니다.

윈도우평균 Q
마지막 4개22, 18, 15, 1016.25
한 칸 왼쪽28, 22, 18, 1520.75
두 칸 왼쪽30, 28, 22, 1824.5

임계 Q20을 처음 넘는 지점(두 칸 왼쪽, 평균 24.5)에서 오른쪽 전부 폐기합니다. 그러면 트리밍 결과는 앞의 ... Q35 Q33 Q30 Q28까지 남습니다.

이 슬라이딩 윈도우가 fastp의 --cut_tail --cut_tail_mean_quality 20, Trim Galore의 --quality 20, cutadapt의 -q 20 옵션이 실제로 하는 동작입니다.

Galaxy EU에서 노코드로 실습

CLI가 부담스러우면 Galaxy Europe에서 무료로 같은 작업을 마우스 클릭으로 돌릴 수 있습니다. 250GB 무료 저장공간 + Trim Galore/fastp/FastQC 워크플로우 프리셋을 지원합니다.

  1. 계정 생성 후 History 하나 만들기.
  2. Upload Data → 예제 FASTQ 업로드 (또는 EBI ENA에서 URL 직접 입력).
  3. Tools 검색창에 FastQC → 리드 파일 지정 후 실행.
  4. 다시 fastp 검색 → paired-end 선택, R1/R2 지정.
  5. MultiQC 실행 → FastQC 결과와 fastp 결과를 한 페이지에 통합.

노코드 워크플로우는 이후 다른 팀원에게 파이프라인을 재현시키기 좋습니다.

MultiQC — 리포트 병합

30개 샘플을 각각 FastQC 리포트로 보는 건 지옥입니다. MultiQC를 실행하면 폴더 안의 모든 리포트(FastQC · fastp · STAR · samtools · GATK)를 자동으로 스캔해서 하나의 HTML로 합쳐줍니다.

bash
multiqc . -o multiqc_report/

이 한 줄이 실무에서 가장 사랑받는 명령입니다. 팀 미팅에서 "우리 어제 시퀀싱 어땠어요?"라는 질문에 이 HTML 한 장으로 답변합니다.

CS 매핑 — 슬라이딩 윈도우와 접미사 매칭

  • 슬라이딩 윈도우 평균: 품질 트리밍 = DryBench "슬라이딩 윈도우 기초" 편의 바이오 실무 판.
  • 접미사 매칭 (approximate): 어댑터 감지는 리드 3′ 접미사와 알려진 어댑터 서열의 근사 매칭. k mismatch 허용의 접미사 서치 문제입니다.
  • 스트림 필터(Unix pipe): fastp 자체가 stdin/stdout 지원 → 파이프라인 안에 얹으면 zcat | fastp | bwa mem 같은 스트리밍이 가능합니다.

실무 결정 규칙 — 무엇을 얼마나 자를까요

새 프로젝트를 받았을 때 아래 순서로 결정합니다.

  1. 어댑터 감지 여부 확인: FastQC "Adapter Content" 그래프. 3′에서 5% 이상 올라가면 → 트리밍 필수.
  2. 품질 임계 선택:
    • 변이 검출용 WGS/WES → Q20.
    • RNA-seq 정량 → Q15 (트리밍이 오히려 정량 편향 유발 우려, 최근엔 트리밍 최소화 흐름).
    • 어셈블리용 롱리드 → Q7~Q10 (원래 낮음).
  3. 길이 임계: 정렬기 요구에 따라 50bp 이상 권장. 어셈블리는 100bp 이상.
  4. 폐기율 모니터링: 트리밍 후 리드 유실이 20% 이상이면 라이브러리 자체 재검토.

이 네 지점이 다음 편(S03 BWA-MEM)의 입력 품질을 결정합니다.

마무리

FastQC로 보고, fastp로 자르고, MultiQC로 합칩니다. 이 세 도구가 다음 25편 내내 반복해서 등장합니다. 다음 편 S03에서는 정돈된 리드를 참조 게놈에 실제로 정렬합니다. BWA-MEM이 왜 아직도 표준인지, 그 안에서 M06에서 배운 Needleman-Wunsch 격자가 어떻게 국소적으로 재활용되는지 함께 봅시다.

더 깊게 파고 싶다면

  • Andrews S. (2010), FastQC: A Quality Control Tool for High Throughput Sequence Data. Babraham Bioinformatics 공식 문서. FastQC 각 항목의 이론 배경.
  • Chen S. et al. (2018), fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics 34:i884. fastp 원 논문.
  • Krueger F., Trim Galore! User Guide. Babraham Bioinformatics. Trim Galore 설계 배경과 cutadapt 옵션 매핑.
  • EMBL-EBI Training — QC and Trimming (https://www.ebi.ac.uk/training/) 무료 튜토리얼 시리즈. 한국어 자막은 없지만 자동 번역 가능.
  • Galaxy Training Network — Quality Control 튜토리얼. 위 Galaxy EU 실습의 원본 자료.

Colab에서 fastp 한 번 돌려보고 MultiQC로 리포트 하나 만들어보면 다음 편 진입이 매끄럽습니다. 리드를 열고 자르고 합쳐야 합니다.