24. 生信常见文件格式详解¶
一句话说明:生物信息学的核心就是处理各种格式的文本文件——序列用FASTA/FASTQ存,比对结果用SAM/BAM/CRAM存,变异位点用VCF存,基因注释用GFF3/GTF存,区间用BED存。掌握这些格式的结构和操作命令,是生信工程师的基本功。
一、序列格式¶
1.1 FASTA 格式¶
白话解释:最简单的序列存储格式,就像一个"姓名+内容"的记事本。每条序列有一行以>开头的描述行(header),后面跟着序列本身。
结构:
真实文件示例:
>NC_000001.11 Homo sapiens chromosome 1, GRCh38.p14
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC
>gi|556503834|ref|NC_000913.3| Escherichia coli K-12 MG1655
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTC
TGATAGCAGCTTCTGAACTGGTTACCTGCCGTGAGTAAATTAAAATTTTATTGACTTAGG
逐行解释: - >NC_000001.11 — > 是标记符,后面是序列唯一标识符 - Homo sapiens chromosome 1 — 空格后的描述信息,工具通常忽略 - 下面的 NNNN... 和 TAACCC... — 实际DNA碱基序列(N表示未知碱基)
FASTA 常用操作命令:
# ============ seqkit(推荐的FASTA/FASTQ瑞士军刀) ============
# 统计序列数量和总长度
seqkit stats genome.fasta
# 输出:file format type num_seqs sum_len min_len avg_len max_len
# 提取指定ID的序列(-p 模式匹配)
seqkit grep -p "NC_000001" genome.fasta > chr1.fasta
# 获取前10条序列
seqkit head -n 10 genome.fasta > first10.fasta
# 将多行FASTA转为单行(方便grep处理)
seqkit seq -w 0 genome.fasta > oneline.fasta
# ============ samtools faidx(建索引+快速提取) ============
# 建FASTA索引(生成.fai文件)
samtools faidx genome.fasta
# 按区间提取序列(chr1的1000到2000位置)
samtools faidx genome.fasta chr1:1000-2000
1.2 FASTQ 格式¶
白话解释:FASTQ = FASTA + Quality。测序仪下机的原始数据格式,比FASTA多了质量值——每个碱基的"可信度打分"。
结构(固定4行一组):
真实文件示例:
@SRR1234567.1 1/1
NTGCACGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGAT
+
#8ACCGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
@SRR1234567.2 2/1
AGCTTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTA
+
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:
逐字段解释: - @SRR1234567.1 — @开头,序列名(SRA登录号.读序编号) - 1/1 — 配对测序中第一条read - NTGCAC... — 碱基序列(N=未知) - + — 分隔符 - #8ACC... — 质量值字符串
质量值编码(Phred+33,当前主流Illumina 1.8+):
| 字符 | ASCII码 | Phred分数 | 错误率 | 含义 |
|---|---|---|---|---|
! | 33 | 0 | 100% | 完全不可信 |
# | 35 | 2 | 63% | 很差 |
5 | 53 | 20 | 1% | 及格线(Q20) |
? | 63 | 30 | 0.1% | 好(Q30) |
I | 73 | 40 | 0.01% | 很好(Q40) |
公式:Phred = -10 × log10(错误率),字符 = chr(Phred + 33)
FASTQ 常用操作命令:
# ============ 基本统计 ============
# 快速统计(seqkit)
seqkit stats -a sample_R1.fastq.gz
# 输出包含:reads数、总碱基、Q20%、Q30%、GC含量
# 用zcat查看压缩FASTQ的前8行(2条reads)
zcat sample_R1.fastq.gz | head -8
# ============ 质控工具 ============
# FastQC 生成质量报告
fastqc -t 4 -o ./qc_report/ sample_R1.fastq.gz sample_R2.fastq.gz
# fastp 一步完成质控+过滤+报告(推荐)
fastp \
-i raw_R1.fq.gz -I raw_R2.fq.gz \ # 输入:双端原始数据
-o clean_R1.fq.gz -O clean_R2.fq.gz \ # 输出:过滤后数据
-h report.html -j report.json \ # 报告文件
--qualified_quality_phred 20 \ # Q20以下的碱基视为低质量
--length_required 50 \ # 过滤掉<50bp的reads
--thread 4 # 4线程
二、比对格式:SAM / BAM / CRAM¶
白话解释:reads比对到参考基因组后的"贴纸记录"——每条read贴在哪条染色体、哪个位置、朝向如何、贴得好不好,全记在这里。
注:SAM 11个必须字段和基本samtools命令已在
14_比对与组装工具.md中介绍,本节聚焦补充内容。
2.1 三种格式的关系¶
| 格式 | 类型 | 大小(30×人类) | 特点 |
|---|---|---|---|
| SAM | 文本 | ~300 GB | 人可读,调试用 |
| BAM | 二进制压缩 | ~60 GB | 生产标准,需索引 |
| CRAM | 参考压缩 | ~30 GB | 最小,需要参考基因组才能解压 |
CRAM 原理:不存储与参考相同的碱基,只存差异。好比说"和参考一样"而不是重复写一遍。
2.2 FLAG 位标志详细解读¶
FLAG是一个整数,由多个二进制位"开关"组合而成:
| 位 | 十进制值 | 十六进制 | 含义 |
|---|---|---|---|
| 0 | 1 | 0x1 | read是配对测序(paired) |
| 1 | 2 | 0x2 | 两端都正确比对(proper pair) |
| 2 | 4 | 0x4 | 这条read未比对上(unmapped) |
| 3 | 8 | 0x8 | 配对的那条read未比对上 |
| 4 | 16 | 0x10 | 比对到反向互补链 |
| 5 | 32 | 0x20 | 配对read比对到反向互补链 |
| 6 | 64 | 0x40 | 是第一条read(read1) |
| 7 | 128 | 0x80 | 是第二条read(read2) |
| 8 | 256 | 0x100 | 非主比对(secondary) |
| 9 | 512 | 0x200 | 未通过质控(QC fail) |
| 10 | 1024 | 0x400 | PCR/光学重复 |
| 11 | 2048 | 0x800 | 补充比对(supplementary) |
解读示例:FLAG=99 = 64+32+2+1 → 配对测序 + proper pair + mate反向 + 是read1
在线解析工具:https://broadinstitute.github.io/picard/explain-flags.html
2.3 CIGAR 字符串详解¶
CIGAR(Compact Idiosyncratic Gapped Alignment Report)描述read如何对齐到参考:
| 符号 | 含义 | 消耗query | 消耗reference |
|---|---|---|---|
| M | 匹配/错配(对齐) | 是 | 是 |
| I | 插入(read有,ref没有) | 是 | 否 |
| D | 缺失(ref有,read没有) | 否 | 是 |
| N | 跳过(RNA-seq的内含子) | 否 | 是 |
| S | 软剪切(碱基保留在SEQ中) | 是 | 否 |
| H | 硬剪切(碱基被删除) | 否 | 否 |
| = | 序列匹配 | 是 | 是 |
| X | 序列错配 | 是 | 是 |
示例:50M2I30M3D20M5S 含义: - 50bp匹配 → 2bp插入 → 30bp匹配 → 3bp缺失 → 20bp匹配 → 5bp软剪切
2.4 补充samtools命令¶
# ============ 进阶samtools操作 ============
# 查看BAM文件的header(包含参考基因组信息和程序记录)
samtools view -H sorted.bam
# 统计每条染色体的reads数
samtools idxstats sorted.bam
# 输出:染色体名 长度 mapped_reads unmapped_reads
# 按区域提取(需要已排序+已建索引)
samtools view sorted.bam chr1:1000000-2000000 | head
# 计算测序深度(每个位置覆盖了多少reads)
samtools depth -a sorted.bam > depth.txt
# -a 表示输出所有位置(包括0深度)
# 统计比对质量分布
samtools view sorted.bam | awk '{print $5}' | sort | uniq -c | sort -rn
# ============ BAM转CRAM(节省存储) ============
samtools view -C -T reference.fasta -o output.cram sorted.bam
# -C 输出CRAM格式
# -T 指定参考基因组(CRAM必须)
# CRAM转BAM
samtools view -b -T reference.fasta -o output.bam input.cram
三、变异格式:VCF / BCF¶
白话解释:VCF(Variant Call Format)是记录"基因组上哪些位置和参考不一样"的标准格式——SNP、InDel、结构变异全在这里。BCF是它的二进制压缩版。
3.1 VCF 文件结构¶
当前最新版本:VCF v4.5(GA4GH维护)
##fileformat=VCFv4.3
##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Sample1 Sample2
chr1 10177 rs367896724 A AC 100 PASS DP=500;AF=0.45 GT:DP:GQ 0/1:30:99 1/1:25:85
chr1 10235 . T TA 50 LowQual DP=100;AF=0.12 GT:DP:GQ 0/0:20:60 0/1:15:40
chr1 10352 rs201106462 T TA 200 PASS DP=800;AF=0.55 GT:DP:GQ 0/1:45:99 0/1:38:95
3.2 8个固定列详解¶
| 列号 | 字段 | 含义 | 示例 |
|---|---|---|---|
| 1 | CHROM | 染色体 | chr1 |
| 2 | POS | 位置(1-based) | 10177 |
| 3 | ID | 变异ID(dbSNP编号) | rs367896724 |
| 4 | REF | 参考碱基 | A |
| 5 | ALT | 替代碱基(变异) | AC(=插入了C) |
| 6 | QUAL | 变异质量分数 | 100(越高越可靠) |
| 7 | FILTER | 过滤状态 | PASS=通过,否则写原因 |
| 8 | INFO | 附加信息(键=值对) | DP=500;AF=0.45 |
3.3 INFO 常见字段¶
| 字段 | 含义 | 典型用法 |
|---|---|---|
| DP | 总测序深度 | 过滤低深度位点 |
| AF | 等位基因频率 | 区分常见/罕见变异 |
| MQ | 平均比对质量 | 评估区域可靠性 |
| QD | 质量/深度比 | GATK常用过滤指标 |
| FS | Fisher链偏倚 | 检测正反链不平衡 |
| SOR | 链偏倚优化指标 | 替代FS |
| MQRankSum | MQ秩和检验 | ref vs alt比对质量差异 |
| ReadPosRankSum | 读段位置秩和 | 变异是否偏在read末端 |
3.4 FORMAT / 样本列¶
FORMAT列定义样本数据的格式,用冒号分隔:
| 字段 | 含义 | 示例 |
|---|---|---|
| GT | 基因型 | 0/0=纯合参考, 0/1=杂合, 1/1=纯合变异 |
| DP | 该样本该位点深度 | 30 |
| GQ | 基因型质量 | 99(最高) |
| AD | 各等位基因深度 | 15,12(REF=15reads, ALT=12reads) |
| PL | 各基因型似然值 | 0,90,1200(phred-scaled) |
3.5 VCF 过滤与 bcftools 命令¶
# ============ bcftools 常用操作 ============
# 查看VCF基本统计
bcftools stats input.vcf.gz > stats.txt
# 按质量过滤(QUAL>=30 且 深度>=10)
bcftools filter -i 'QUAL>=30 && INFO/DP>=10' input.vcf.gz -o filtered.vcf.gz
# GATK硬过滤推荐参数(SNP)
bcftools filter -i \
'QD>=2.0 && FS<=60.0 && MQ>=40.0 && MQRankSum>=-12.5 && ReadPosRankSum>=-8.0' \
snps.vcf.gz -o snps_filtered.vcf.gz
# 只提取PASS的变异
bcftools view -f PASS input.vcf.gz -o pass_only.vcf.gz
# 提取指定区域
bcftools view -r chr1:1000000-2000000 input.vcf.gz
# 提取指定样本
bcftools view -s Sample1,Sample2 input.vcf.gz -o subset.vcf.gz
# VCF转BCF(二进制压缩)
bcftools view -Ob input.vcf.gz -o output.bcf
bcftools index output.bcf
# 合并多个VCF
bcftools merge sample1.vcf.gz sample2.vcf.gz -o merged.vcf.gz
# 注释变异(添加rsID)
bcftools annotate -a dbsnp.vcf.gz -c ID input.vcf.gz -o annotated.vcf.gz
# 统计变异类型(SNP/InDel比例)
bcftools stats input.vcf.gz | grep "^SN"
四、注释格式:GFF3 / GTF / BED¶
4.1 GFF3 格式(Generic Feature Format v3)¶
白话解释:基因组的"标签贴纸"——记录每个基因、外显子、CDS在基因组上的位置。由Sequence Ontology维护,当前版本1.26。
9列结构(Tab分隔):
| 列 | 字段名 | 含义 | 示例 |
|---|---|---|---|
| 1 | seqid | 染色体/scaffold | chr1 |
| 2 | source | 注释来源 | ensembl |
| 3 | type | 特征类型(SO术语) | gene / mRNA / exon / CDS |
| 4 | start | 起始位置(1-based) | 11869 |
| 5 | end | 终止位置(含) | 14409 |
| 6 | score | 分数 | .(无分数用点号) |
| 7 | strand | 链 | + 或 - |
| 8 | phase | CDS相位(0/1/2) | .(非CDS用点号) |
| 9 | attributes | 属性键值对 | ID=gene0001;Name=DDX11L1 |
真实GFF3示例:
##gff-version 3
chr1 ensembl gene 11869 14409 . + . ID=ENSG00000223972;Name=DDX11L1;biotype=transcribed_unprocessed_pseudogene
chr1 ensembl mRNA 11869 14409 . + . ID=ENST00000456328;Parent=ENSG00000223972;Name=DDX11L1-201
chr1 ensembl exon 11869 12227 . + . ID=exon0001;Parent=ENST00000456328
chr1 ensembl exon 12613 12721 . + . ID=exon0002;Parent=ENST00000456328
chr1 ensembl exon 13221 14409 . + . ID=exon0003;Parent=ENST00000456328
4.2 GTF 格式(Gene Transfer Format / GFF2.5)¶
白话解释:GTF是GFF的"方言",用 gene_id 和 transcript_id 做层级关系,是Ensembl和GENCODE的主要发布格式。
与GFF3的关键区别:
| 区别点 | GFF3 | GTF |
|---|---|---|
| 层级关系 | Parent= 属性 | gene_id + transcript_id |
| 属性格式 | key=value; | key "value"; |
| CDS相位 | phase列 | frame列(含义类似) |
| 标准 | SO维护 | Ensembl/GENCODE事实标准 |
真实GTF示例:
chr1 ensembl gene 11869 14409 . + . gene_id "ENSG00000223972"; gene_name "DDX11L1"; gene_biotype "transcribed_unprocessed_pseudogene";
chr1 ensembl transcript 11869 14409 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; gene_name "DDX11L1";
chr1 ensembl exon 11869 12227 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "1";
4.3 BED 格式¶
白话解释:最简洁的"区间记录"格式——只需三列(染色体、开始、结束)就能表示基因组上的一段区域。
核心特点:0-based、半开区间(start包含,end不包含)
| 列 | 字段 | 说明 | 必须? |
|---|---|---|---|
| 1 | chrom | 染色体 | 是 |
| 2 | chromStart | 起始位置(0-based) | 是 |
| 3 | chromEnd | 终止位置(不含) | 是 |
| 4 | name | 区间名称 | 否 |
| 5 | score | 分数(0-1000) | 否 |
| 6 | strand | 链方向(+/-) | 否 |
| 7-12 | ... | 颜色、block等可视化信息 | 否 |
坐标系统对比(超级重要!面试常考):
| 格式 | 坐标起始 | 区间类型 | chr1第1个碱基 |
|---|---|---|---|
| BED | 0-based | 半开 [start, end) | 0-1 |
| GFF3/GTF | 1-based | 闭合 [start, end] | 1-1 |
| SAM/VCF | 1-based | 闭合 | 1 |
真实BED示例:
4.4 注释格式常用操作¶
# ============ 格式转换 ============
# GFF3转GTF(用gffread,来自Cufflinks/StringTie)
gffread annotation.gff3 -T -o annotation.gtf
# GTF转BED(用UCSC的gtfToGenePred + genePredToBed)
gtfToGenePred annotation.gtf /dev/stdout | genePredToBed /dev/stdin genes.bed
# 或用awk快速提取基因区间为BED
awk '$3=="gene"' annotation.gtf | \
awk -F'\t' '{OFS="\t"; print $1, $4-1, $5, ".", "0", $7}' > genes.bed
# ============ bedtools 常用操作 ============
# 求两个BED文件的交集(找重叠区域)
bedtools intersect -a peaks.bed -b genes.bed > overlap.bed
# 求交集并报告重叠比例
bedtools intersect -a peaks.bed -b genes.bed -wo > overlap_with_size.bed
# 求不重叠的区域(A有但B没有)
bedtools subtract -a peaks.bed -b blacklist.bed > clean_peaks.bed
# 合并重叠或相邻的区间
bedtools merge -i sorted_peaks.bed > merged.bed
# 统计每个基因区域内有多少peaks
bedtools coverage -a genes.bed -b peaks.bed > gene_coverage.bed
# 获取BED区间对应的FASTA序列
bedtools getfasta -fi genome.fasta -bed regions.bed -fo regions.fa
# 在BED区间两侧各扩展1000bp
bedtools slop -i peaks.bed -g genome.sizes -b 1000 > expanded.bed
# 随机生成与输入BED相同大小的区间(用于统计背景)
bedtools shuffle -i peaks.bed -g genome.sizes > random_regions.bed
五、其他格式¶
5.1 Wiggle / BigWig(连续信号轨迹)¶
用途:存储基因组上的连续数值信号(如测序深度、ChIP-seq信号、conservation score)。
Wiggle(WIG)是文本格式,BigWig是其二进制索引版本,适合基因组浏览器加载大数据。
# 固定步长格式(fixedStep)
fixedStep chrom=chr1 start=1 step=10 span=10
10.5
12.3
8.7
15.2
# 可变步长格式(variableStep)
variableStep chrom=chr1 span=10
1000 15.3
1020 8.9
1050 22.1
操作命令:
# BAM转BigWig(用deeptools)
bamCoverage -b sorted.bam -o coverage.bw --normalizeUsing RPKM
# WIG转BigWig(需要chrom.sizes文件)
wigToBigWig input.wig chrom.sizes output.bw
# BigWig转BedGraph(可编辑的文本格式)
bigWigToBedGraph input.bw output.bedGraph
5.2 BEDPE(配对区间格式)¶
用途:描述配对事件(如结构变异的两个断点、Hi-C交互区域)。
字段:chrom1, start1, end1, chrom2, start2, end2, name, score, strand1, strand2
5.3 MAF(Mutation Annotation Format)¶
用途:TCGA/GDC肿瘤突变数据的标准格式,包含突变的详细注释。
Hugo_Symbol Chromosome Start_Position End_Position Variant_Classification Variant_Type Reference_Allele Tumor_Seq_Allele2
TP53 chr17 7674220 7674220 Missense_Mutation SNP C T
BRCA1 chr17 43093488 43093488 Nonsense_Mutation SNP G A
关键字段:基因名、变异分类(Missense/Nonsense/Frameshift等)、肿瘤vs正常样本的等位基因。
六、格式转换工具速查表¶
| 转换方向 | 命令 |
|---|---|
| SAM → BAM | samtools view -bS input.sam > output.bam |
| BAM → SAM | samtools view -h input.bam > output.sam |
| BAM → CRAM | samtools view -C -T ref.fa input.bam > output.cram |
| CRAM → BAM | samtools view -b -T ref.fa input.cram > output.bam |
| BAM → FASTQ | samtools fastq -1 R1.fq -2 R2.fq input.bam |
| BAM → BigWig | bamCoverage -b input.bam -o output.bw (deeptools) |
| VCF → BCF | bcftools view -Ob input.vcf.gz -o output.bcf |
| BCF → VCF | bcftools view output.bcf > output.vcf |
| GFF3 → GTF | gffread input.gff3 -T -o output.gtf |
| GTF → BED | gtfToGenePred → genePredToBed (UCSC工具链) |
| BED → BAM区域提取 | samtools view -L regions.bed input.bam > subset.bam |
| WIG → BigWig | wigToBigWig input.wig chrom.sizes output.bw |
| BAM去重复 | picard MarkDuplicates I=in.bam O=dedup.bam M=metrics.txt |
| BAM添加RG | picard AddOrReplaceReadGroups I=in.bam O=out.bam RGID=1 ... |
| VCF排序 | bcftools sort input.vcf.gz -o sorted.vcf.gz |
| VCF建索引 | bcftools index input.vcf.gz 或 tabix -p vcf input.vcf.gz |
七、面试怎么答¶
Q1:FASTA 和 FASTQ 有什么区别?¶
FASTA只存序列,FASTQ多了质量值。FASTA用于参考基因组、蛋白序列库等"已确定"的序列;FASTQ用于测序仪下机的原始数据,每个碱基都有一个质量分数表示测序的可靠性。质量值用Phred+33编码,Q20表示1%错误率,Q30表示0.1%错误率。
Q2:SAM文件的FLAG字段是什么含义?怎么解读FLAG=83?¶
FLAG是一个用二进制位表示多个状态的整数。83 = 64 + 16 + 2 + 1,意思是:这条read是配对测序的(1),形成proper pair(2),比对到反向互补链(16),且是第一条read(64)。实际工作中可以用Broad Institute的在线工具解析,或者
samtools flags 83命令查看。
Q3:VCF文件中GT字段 0/1 和 1/1 分别是什么意思?¶
GT是genotype(基因型)。0代表参考等位基因(REF),1代表第一个替代等位基因(ALT)。0/1表示杂合变异(一条染色体是参考,另一条是变异),1/1表示纯合变异(两条都变了)。如果用
|分隔(如 0|1)表示已经做了相位推断(phasing),知道哪条来自父亲哪条来自母亲。
Q4:BED文件是0-based还是1-based?和GFF/VCF有什么区别?¶
BED是0-based半开区间——start从0开始计数,end不包含在内。GFF3/GTF/VCF/SAM都是1-based闭合区间。比如基因组第1到第100个碱基,BED写
0 100,GFF写1 100。这个区别极其重要,格式转换时如果忘了 ±1 会导致所有坐标偏移一个碱基。
Q5:如何对VCF文件进行质量过滤?¶
常用两种策略:(1) 硬过滤,按固定阈值筛选,如
bcftools filter -i 'QUAL>=30 && INFO/DP>=10 && INFO/MQ>=40';(2) VQSR(变异质量重校准),GATK用机器学习模型基于已知变异集训练分类器。GATK推荐的SNP硬过滤参数:QD>=2, FS<=60, MQ>=40, MQRankSum>=-12.5, ReadPosRankSum>=-8.0。
Q6:CIGAR字符串 30M2D20M5I10M3S 怎么解读?¶
从左到右逐段读:30bp匹配参考→参考有2bp这条read没有(缺失)→20bp匹配→read多了5bp参考没有(插入)→10bp匹配→最后3bp是软剪切(碱基还在SEQ里但没比到参考上)。算read在参考上占的长度:30+2+20+10=62bp(I和S不消耗参考)。
Q7:为什么要用BAM而不是SAM?CRAM比BAM还有什么优势?¶
SAM是纯文本,30×人类基因组约300GB,BAM用BGZF压缩后约60GB,节省80%空间且支持随机访问(建索引后可以只读取某个区域)。CRAM更进一步,利用参考基因组压缩:只存储与参考不同的部分,30×人类约30GB。但CRAM的缺点是解压时必须有对应的参考基因组文件。
八、速查表:格式 → 用途 → 常用工具¶
| 格式 | 用途 | 读写工具 | 坐标系 |
|---|---|---|---|
| FASTA | 参考基因组、蛋白序列库 | seqkit, samtools faidx | N/A |
| FASTQ | 测序原始数据 | fastp, seqkit, cutadapt | N/A |
| SAM/BAM | 比对结果 | samtools, picard, sambamba | 1-based |
| CRAM | 比对结果(高压缩) | samtools, htslib | 1-based |
| VCF/BCF | 变异位点 | bcftools, GATK, vcftools | 1-based |
| GFF3 | 基因注释(通用) | gffread, AGAT, GenomeTools | 1-based |
| GTF | 基因注释(Ensembl/GENCODE) | gffread, StringTie, STAR | 1-based |
| BED | 基因组区间 | bedtools, UCSC tools | 0-based |
| BigWig/WIG | 连续信号轨迹 | deeptools, UCSC tools, IGV | 0/1-based* |
| BEDPE | 配对区间/结构变异 | bedtools, LUMPY | 0-based |
| MAF | 肿瘤突变注释 | maftools(R), vcf2maf | 1-based |
*注:WIG fixedStep的start是1-based,BigWig内部是0-based。
九、延伸资源¶
- SAM/BAM/CRAM/VCF/BED官方规范:https://samtools.github.io/hts-specs/
- GFF3规范v1.26:https://github.com/The-Sequence-Ontology/Specifications/blob/master/gff3.md
- UCSC格式说明(BED/WIG/BigWig):https://genome.ucsc.edu/FAQ/FAQformat.html
- Broad FLAG在线解析器:https://broadinstitute.github.io/picard/explain-flags.html
- seqkit文档:https://bioinf.shenwei.me/seqkit/
- bcftools文档:https://samtools.github.io/bcftools/bcftools.html
- bedtools文档:https://bedtools.readthedocs.io/
- deeptools文档:https://deeptools.readthedocs.io/
- VCF v4.5规范PDF:https://samtools.github.io/hts-specs/VCFv4.5.pdf
- maftools R包(肿瘤变异可视化):https://bioconductor.org/packages/maftools/
学习建议:用
head -20 文件名实际查看一下各种格式的真实文件内容,比死记硬背字段含义有效得多。面试时能画出SAM一行或VCF一行的逐字段标注,基本就过关了。