Fastp¶
출처¶
정의¶
- fastp는 품질 관리(QC)와 트리밍(Trimming)을 통합한 전처리 도구
- Short-read Sequencing 데이터 분석에서 필수적으로 사용
QC(Quality Control)¶
어댑터 트리밍¶
입력 데이터의 어댑터 서열을 자동으로 감지하여 제거 페어드 엔드(Paired-end) 데이터의 경우, 두 리드 간의 겹치는 영역(Overlap)을 분석하여 정밀한 어댑터 제거 이를 통해 거짓 양성(False positive) 제거 최소화
필터링¶
슬라이딩 윈도우(Sliding window) 방식 리드의 5' 및 3' 끝단에서 품질이 낮은 염기를 정밀하게 제거
- 낮은 품질의 염기(Low quality bases)가 많은 리드 제거
- 길이가 너무 짧은 리드 제거
- 'N' 염기가 많이 포함된 리드 제거
중복 서열 평가 알고리즘¶
모든 읽기를 균일하게 샘플링하여 편향(Bias) 제거 이를 통해 더욱 정확한 시퀀스 중복도 분석이 가능
Adapter Trimming 주요 기능¶
Paired-end 데이터 오버랩 분석¶
페어드 엔드 데이터에서 Forward와 Reverse 리드가 겹치는 영역을 분석하여 어댑터의 위치와 길이를 정확히 파악
Base Correction¶
두 리드가 겹치는 영역에서 염기 서열이 불일치할 경우, 품질 점수가 높은 쪽의 염기를 기준으로 데이터를 수정 이는 어셈블리(Assembly)와 분류(Taxonomy) 분석의 정확도 향상
Sliding Window Quality Pruning¶
설정된 윈도우 크기로 리드를 스캔하면서 품질 점수가 임계값 이하인 구간을 자동으로 제거
특수 기능 알고리즘¶
PolyG/PolyX 테일 트리밍¶
Illumina NovaSeq과 같은 최신 시퀀서에서 발생하는 PolyG 현상(G가 반복되는 오류) 자동으로 감지하고 제거 이를 통해 데이터 왜곡을 방지하고 분석 정확도를 높임
병렬 처리를 위한 데이터 분할(Data Splitting)¶
대용량의 메타게놈 데이터를 효율적으로 처리하기 위해 출력 파일을 여러 개의 작은 파일로 분할하여 병렬 분석이 가능하도록 지원
Script¶
Single-end¶
fastp -i input.fastq -o output.fastq
Paired-end¶
fastp -i read1.fastq -I read2.fastq -o trimmed_1.fastq -O trimmed_2.fastq
gzip¶
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--detect_adapter_for_pe
--detect_adapter_for_pe: Paired-end 데이터에서 어댑터 자동 감지
Quality Filtering¶
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--qualified_quality_phred 4 \
--length_required 31
--qualified_quality_phred:
- 품질 점수 임계값 (기본값: 15, 낮을수록 더 많은 저품질 기준 제거)
- --length_required: 최소 Reads 길이
Base Repair¶
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--detect_adapter_for_pe \
--qualified_quality_phred 4 \
--length_required 31 \
--correction
--correction: 페어드 엔드 리드의 겹치는 영역에서 염기 교정 활성화
QC Report¶
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--detect_adapter_for_pe \
--qualified_quality_phred 4 \
--length_required 31 \
--correction \
--json sample.fastp.json \
--html sample.fastp.html
--json: JSON 형식 리포트 파일명
- --html: HTML 형식 리포트 파일명
QC Fail¶
한쪽 리드는 통과하고 다른 쪽은 실패한 경우를 처리합니다.
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--unpaired1 unpaired_1.fastq.gz \
--unpaired2 unpaired_2.fastq.gz
--unpaired1: Forward 리드 중 Reverse가 실패한 리드 출력
- --unpaired2: Reverse 리드 중 Forward가 실패한 리드 출력
Poly G Tail Trim¶
Illumina NovaSeq에서 발생하는 PolyG 오류를 제거합니다.
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--detect_adapter_for_pe \
--trim_poly_g \
--poly_g_min_len 10
--trim_poly_g: PolyG 테일 트리밍 활성화--poly_g_min_len: PolyG 최소 길이 (기본값: 10 bp)
Multi Threading¶
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--thread 8
--thread: 사용할 스레드 수 (기본값: 2)
Custom Adapter Trim¶
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--adapter_sequence "AGATCGGAAGAGCACACGTC" \
--adapter_sequence_r2 "AGATCGGAAGAGCGTCGTGT" \
--qualified_quality_phred 20 \
--length_required 40
--adapter_sequence: Forward 어댑터 서열
- --adapter_sequence_r2: Reverse 어댑터 서열
Load Adpater Fasta file¶
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--adapter_fasta adapters.fa \
--detect_adapter_for_pe \
--qualified_quality_phred 4 \
--length_required 31
--adapter_fasta: 어댑터 서열을 포함한 FASTA 파일
Overrepresented¶
fastp --in1 reads_1.fastq.gz --in2 reads_2.fastq.gz \
--out1 trimmed_1.fastq.gz --out2 trimmed_2.fastq.gz \
--detect_adapter_for_pe \
--overrepresentation_analysis \
--overrepresentation_sampling 20 \
--json sample.fastp.json \
--html sample.fastp.html
--overrepresentation_analysis: Overrepresented 서열 분석 활성화
- --overrepresentation_sampling: 샘플링 간격 (1~10000, 작을수록 정확하나 느림)