FASTQ
FASTQ 파일이란 유전체 서열과 그에 대응되는 quality scores 정보를 ASCII 코드로 담은 텍스트이다. 원래는 Wellcome Trust Sanger Institute에서 FASTA 형식으로 개발되었으나 Illumina Genome Analyzer와 같은 대용량 시퀀싱 머신의 결과 파일을 저장하기 위해 사용된다.
- 기본적으로 서열당 4줄로 구성된다.
@E100007745L1C002R0030000039/1
AGTACTCTAAGCCACACCTACAATCGCCCTAATCTAACATGACTGATGTCCTTATAAGAAGAGGAGACTGGAACACAGATACACACTGACAGACAACCATGTGGCAGGGTCCCAATGAGAAGGCAGCCATCTGCAAGCTAAGGAGCAAGA
+
EEEEEEEE@DDEEEEEEEDBEEEEEDEEEEDEBEE3EEECECCEEEEECCEEEBEEEECEEEEE<EDF>EEAC@EEE8<@EEEEDE>E>EEEEEEEDEDED2EEEAEAE*BFEDE>E;C<DEFDB?DC;EECEE7E?EAEE@E7EECB1&
@E100007745L1C002R0030000063/1
CCCATAAAAACTAGACAGAAGCATTCTCAGAAACTTACTCGTGATGTGTGTCCTCAACTAAAGGAGTAGAACCTTTCTTTTCATAGAGAAGTTTTGAAACGCTCTTTTTGTGGAATCTGCAAGTGGATATTTGGCTAGTTTTGAGGATTT
+
FFFEFEFFFEFFEFEFEFEEEFEFEEFFEFEEFFFFEFFFEEEEEFEDEEEFEFFEFFEEEEEFFEEEFEEFFEFEFEEFFFEFEEEFEEEEEFEEEEEFEEEEEEEFFFEEEEEEFFEEEFEEEEBEEEEFEFEEEAEEEFFDEEEEEE
- 첫번째 줄 : @sequnce_identifier
- 두번째 줄 : 실제 염기서열
- 세번째 줄 : +description
- 네번째 줄 : Phred quality score
- 다음은 quality score를 '!'부터 '~'까지 ASCII 코드로 나타낸 것이다.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Phred value = −10 * log10(ε)
- 90% confidence (10% error rate) = Q10
- 99% confidence (1% error rate) = Q20
- 99.9% confidence (.1% error rate) = Q30
SAM / BAM / uBAM
SAM (Sequence Alignment Map)은 1000 Genomes Project 당시 reference 서열에 aligned된 유전체 서열을 저장하기 위해 Samtools와 함께 만들어졌다 (Bioinformatics, 2009, pdf). BAM (Binary Alignment Map)은 binary 버전으로 압축된 형태를 말한다.
uBAM
- uBAM - Unmapped BAM Format (link)
시퀀싱 머신에서 mapping 되지 않은 raw FASTQ 파일이 생성된 후 전처리 과정에서 mapping 작업이 진행되지만, 이때 FASTQ 파일 자체에는 다양한 metadata을 저장할 수 없다는 문제가 있다. uBAM (unmapped BAM)은 mapping 정보가 없는 BAM 파일("off-label")로, 데이터 처리 초기 과정에서 metadata를 붙이기 위해 사용된다.
다음은 FASTQ 파일에서 uBAM으로 변환한 예시다.
E100007745L1C002R0020000088 77 * 0 0 * * 0 0 GAAGAAAAGTTAAACTCTGTGAGTTGAACGCACACATCACAAAAGATTTTCTGAGAATCATTCTGTCTAGTCTTTATATGAAGATAGTTTCCTTTTCTACCATTGACCTCAAAGCGGCTGAAATCTCCACTTGCAAATTCCACAAAAAGA EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDE@EEEEEEEFEDEEEEEEEEEEEEEEEEEEEEEEEEEEEDEEDEEEEFEEEEEEEEEEEEEEEEEEEEEEEEE4D.EEEEEEEEEEEEEEEEEEEAEEEEEEEEEE8D RG:Z:A
E100007745L1C002R0020000088 141 * 0 0 * * 0 0 TAGACAGAATCATTCCCACAAACTGCGTTGTGATGTGTTCGTTCAACTCACAGAGTTTAACCTTTCTGTTCATAGAGCAGTTAGGAAACACTCTGTTTGTAAAGTCTGTAAGTGGATATTCTGACATCTTGTGCCCTTCGTTGGAAACGG EEEEEEEDEEEEEEEEEEEEEEEEEECCEEEEEEECEDCEEEEDEBEEEEEEEEEEEEEEEED;EEEEEEDEE9E@AEEEEEEDE@EEEEDEE?ECDEEDEDDDEEEAEEECDEEE?D)EACEEE@EDE@+,5/@EEEDADE/EEEEEEE RG:Z:A
E100007745L1C002R0020000259 77 * 0 0 * * 0 0 CCCCACAGGCTCTGGGGAGCCACGGGTGGCTTGAGAGCAGGAGAGGAGCTGACTTGGGCTGTGAAGGAATCTGCCCTGGGTGTGTCGTCCCCCGCCAGGGCCACATCTGCAAGATGTCTCTGTCATGTGGACGCTGTCCTGCTGACACAT CEDEBA=EEEDEEB9BD5'EEEDEC*77:CE=CA@@:?ED&&D5+B6EC)>6DE/C?6DECE7DEEE3.3EC:@6'D0DD9E;='EDC.:ED8EEDE8D?4ED(E@EEE3E.508E'EC@CD0CE8E<DE3D9%EEEEE..E1@7C&')3 RG:Z:A
E100007745L1C002R0020000259 141 * 0 0 * * 0 0 GGTGGAAAACTTCCAGATTTCTTCAAAAGTCTTAAACGTCACCACGATCCGGTCCTGGTCACTGGGGATGGACAGCAGCCTGGCTGATAATTTCTTAAGAGAAAGAAATAGGAATTCGAGAGGTCCCCAGGACCTCTGGGGGTTCGGTCA E<@'DBD6DDDE:EE=6ACE>AEE383EEE=EEDD17D>EAEE7ECD7BEEB0DEEEEBEB?DE(CA8@E-EE6EEE12E@EB7@D4@DDE3,ECE3E7BB8?B>ECD4;EDDA')8D3<D*EC3BEEC'8(%?E20<E0D%(:D%EE7E RG:Z:A
BAM header
@HD : 기본 헤더 (Required)
@SQ : Aligned된 reference 서열의 contigs (Essential) - 반드시 염색체순
@RG : Read groups. 플랫폼(PL), 라이브러리 (LB), 샘플 (SM) 정보를 담는다.
@PG : Read에 처리된 소프트웨어
@HD VN:1.4 SO:coordinate
@SQ SN:chr1 LN:248956422 M5:6aef897c3d6ff0c78aff06ac189178dd UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chr22 LN:50818468 M5:ac37ec46683600f808cdd41eac1d55cd UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chrX LN:156040895 M5:2b3a55ff7f58eb308420c8a9b11cac50 UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chrY LN:57227415 M5:ce3e31103314a704255f3cd90369ecce UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chrM LN:16569 M5:c68f52674c9fb33aef52dcf399755519 UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chr1_KI270706v1_random LN:175055 M5:62def1a794b3e18192863d187af956e6 UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chr22_KI270739v1_random LN:73985 M5:760fbd73515fedcc9f37737c4a722d6a UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chrY_KI270740v1_random LN:37240 M5:69e42252aead509bf56f1ea6fda91405 UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chrUn_GL000218v1 LN:161147 M5:1d708b54644c26c7e01c2dad5426d38c UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@SQ SN:chrEBV LN:171823 M5:6743bd63b3ff2b5b8985d8933c53290a UR:/mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa
@RG ID:rg SM:NB4Q6634 PL:COMPLETE LB:lb
@PG ID:bwa PN:bwa VN:BWA_pre2.0.1.2 CL:/mnt/ssd/MegaBOLT_scheduler/bin/bwa mem /mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa -l /mnt/ssd/MegaBOLT_scheduler/tmpDir/14/1/NB4Q6634/megabolt.inputlist -t 40 -i /mnt/ssd/MegaBOLT_scheduler/lic/MegaBOLT.lic
@PG ID:bamsormadup PN:bamsormadup CL:/mnt/ssd/MegaBOLT_scheduler/bin/SortMarkDup threads=10 tmpfile=/mnt/ssd/MegaBOLT_scheduler/tmpDir/14/1/tmp_sort_5 inputformat=sam outputformat=bam indexfilename=/mnt/ssd/MegaBOLT_scheduler/tmpDir/14/1/NB4Q6634.bwa.sortdup.bam.bai PP:bwa VN:2.0.79
@PG ID:samtools PN:samtools PP:bamsormadup VN:1.10 CL:/mnt/ssd/MegaBOLT_scheduler/bin/samtools view -SC -T /mnt/ssd/MegaBOLT_scheduler/reference/hg38.fa -o /mnt/ssd/MegaBOLT_scheduler/tmpDir/14/1/NB4Q6634.bwa.sortdup.cram --threads 10 --write-index /mnt/ssd/MegaBOLT_scheduler/tmpDir/14/1/NB4Q6634.bwa.sortdup.bam
@CO TY:checksum ST:all PA:all HA:crc32prod CO:782579494 BS:789c2691 NS:49240ef9 SQ:3ed1c2f4 ST:BC,FI,QT,RT,TC:789c2691
@CO TY:checksum ST:all PA:pass HA:crc32prod CO:782579494 BS:789c2691 NS:49240ef9 SQ:3ed1c2f4 ST:BC,FI,QT,RT,TC:789c2691
@CO TY:checksum ST: PA:all HA:crc32prod CO:0 BS:1 NS:1 SQ:1 ST:BC,FI,QT,RT,TC:1
@CO TY:checksum ST: PA:pass HA:crc32prod CO:0 BS:1 NS:1 SQ:1 ST:BC,FI,QT,RT,TC:1
@CO TY:checksum ST:rg PA:all HA:crc32prod CO:782579494 BS:789c2691 NS:49240ef9 SQ:3ed1c2f4 ST:BC,FI,QT,RT,TC:789c2691
@CO TY:checksum ST:rg PA:pass HA:crc32prod CO:782579494 BS:789c2691 NS:49240ef9 SQ:3ed1c2f4 ST:BC,FI,QT,RT,TC:789c2691
BAM 파일은 총 11개의 필수 항목으로 이루어진다.
- QNAME (str) : template 이름
- FLAG (int) : bitwise FLAG의 합
- SEQ (str)
- QUAL (str) : Phred quality score ASCII + 33 (ASCII)
- (예1) 77 = 64 + 8 + 4 + 1
- (예2) 141 = 128 + 8 + 4 + 1
- 128 : the last segment in the template (is read2)
- 64 : the first segment in the template (is read1)
- 8 : next segment in the template unmapped (read2 unmapped)
- 4 : segment unmapped (read1 unmapped)
- 1 : template having multiple templates in sequencing (read is paired)
CRAM
CRAM 파일은 reference 서열에 aligned된 생물학적 서열을 SAM/BAM 파일에 비해 더욱 효율적으로 저장하기 위한 목적으로 고안되었다(Genome research, 2011, pdf). 압축 비율을 개선시켜 BAM에 비하여 보통 30-60% 가량 용량이 작다. 효율적인 용량으로 저장 비용을 줄임과 동시에 GA4GH (Global Alliance for Genomics and Health, link)의 관리 하에 유지되고 있으며, 유전체의 표준적인 압축 포맷으로 여겨진다.
GATK에서도 CRAM 파일을 지원하지만 기본적으로 BAM 파일을 대상으로 하기 때문에 성능의 차이가 있을 수 있다. 따라서 GATK에서는 CRAM은 단순 저장의 용도로 사용하고, 분석을 위해서는 먼저 BAM 파일로 변환하여 처리한다.
CRAM의 기본 구조는 여러 컨테이너의 나열이다. SAM 헤더의 압축본을 담은 컨테이너를 첫 시작으로, 여러 컨테이너 (압축 헤더와 슬라이스의 나열)로 구성되어 있다. 각 슬라이스는 alignment records가 블록의 형태로 나열되어 있다. 컨테이너의 압축 헤더는 각 데이터의 블록 위치, 코덱 등의 정보를 담는다. 인덱스 파일(.crai)을 통해 CRAM 파일에 선택적으로 접근할 수 있다.
VCF / GVCF
- VCF - Variant Call Format (link)
- GVCF - Genomic Variant Call Format (link)
- Difference between QUAL and GQ annotations in germline variant calling (link)
[참고링크]
https://en.wikipedia.org/wiki/FASTQ_format
https://hhj6212.github.io/biology/tech/2020/08/26/Bioinformatics-fileformats.html
'유전체역학' 카테고리의 다른 글
| NGS 데이터 분석 - GATK 변이 발굴 (Germline) (0) | 2022.01.12 |
|---|---|
| NGS 데이터 분석 - BAM 파일 핸들링 (0) | 2022.01.11 |
| NGS 데이터 분석 - CRAM 파일 핸들링 (0) | 2022.01.07 |
| NGS 데이터 분석 - GATK 데이터 전처리 (0) | 2022.01.07 |
| NGS 데이터 분석 - GATK 전체 파이프라인 및 설치 (0) | 2022.01.07 |