文章目录
生物信息学中有很多分析软件,也就有了多种文件格式。下面简单总结一些常用的文件格式以备随时查阅。
序列信息
首先最需要的就是存储基本DNA、RNA或蛋白质序列的文件,最常见的就是FASTA和FASTQ格式。序列中各种字母的含义见我的另一篇文章。
FASTA
fasta常用于存储基因序列信息。每一条序列都包括两部分,头部就是序列信息的第一行,以>
开头,往往就是序列的名称或ID,只能占据一行。其下就是具体序列信息,往往也都有多行。如:
>Escherichia-coli-MG1655
AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC
TTCTGAACTGGTTACCTGCCGTGAGTAAATTAAAATTTTATTGACTTAGGTCACTAAATACTTTAACCAA
TATAGGCATAGCGCACAGACAGATAAAAATTACAGAGTACACAACATCCATGAAACGCATTAGCACCACC
ATTACCACCACCATCACCATTACCACAGGTAACGGTGCGGGCTGACGCGTACAGGAAACACAGAAAAAAG
...
FASTQ
fastq则在存储序列信息的同时也记录了该序列的质量信息,常用于表示各种测序结果。每段序列信息有4行:
- 第一行类似fasta,只不过以
@
开头,之后是序列ID或名称; - 第二行就是序列信息,只能有一行;
- 第三行往往是固定的一个
+
字符; - 第四行就是序列的质量信息,长度与第二行序列信息一致,每个字符的ASCII码可以通过计算转换为对应碱基的质量指标,不同体系的计算方法不同。
如:
@002a8f7c-c04b-4da1-bda3-70dbcd0f255c ch=245 start_time=2021-08-10T12:13:14
TGCTTCCTGT...
+
&$$#&%$)/+...
两种文件中记录的序列可以是核苷酸序列也可以是氨基酸序列,若为核苷酸序列,则顺序都是5’端->3’端。
参考资料:
- https://www.jianshu.com/p/5bd5848eb596
比对信息
只有序列信息还是不够的,常常还要将序列之间进行比对,而比对产生的就是各种位置对应的信息。
PAF
PAF(Pairwise mApping Format)是一种用于存储序列比对结果的文件格式,文本文件,每一行代表一条记录。一行必需12个字段,由\t
分割,分别为:
- Query sequence name;
- Query sequence length;
- Query Start,匹配上query的起始位置;
- Query End,匹配上query的结束位置;
- 正负链,"+" or “-”;
- Target sequence name,参考序列的名称;
- Target sequence length,参考序列长度;
- Target Start,匹配上参考序列的起始位置;
- Target End,匹配上参考序列的结束位置;
- Number of residue matches,真正比对上的碱基数量;
- Alignment block length,碱基总数,包括match, mismatch, insertion和deletion;
- Mapping quality,序列质量,0-255,越大表示越好,但255表示没有匹配上;
若没有比对上,往往也有记录,只是第3-11个字段的匹配信息均为*
。这12个字段之后有可能还有类似SAM的自定义tag字段,如ch:i:12
。具体如:3fbcc430-7501-4f61-84d5-d2242801f6c7 95 39 95 + Escherichia-coli-MG1655.fasta 4641652 234646 234707 40 62 255 ch:i:12
。
参考资料:
- https://github.com/lh3/miniasm/blob/master/PAF.md
SAM/BAM/CRAM
Sequence Alignment Map(SAM)格式用于存储序列比对信息,文本格式。分为头部(可选)和比对部分,头部以@
开始,可能有多行,每一行代表一类信息,具体信息类别用两个字母表示,如SQ
表示参考序列信息。之后具体的信息都是key:value
的形式,如LN:18957
表示长度为18957。如@SQ SN:KM034562.G3686.1 LN:18957
。
之后的比对部分每一行表示一个比对结果,可能一个read有多条结果。有下列11个必需字段,以\t
分割:
- QNAME String Query template NAME
- FLAG Int bitwise FLAG
- RNAME String References sequence NAME
- POS Int 1-based leftmost mapping position on Reference, ref start
- MAPQ Int Mapping Quality
- CIGAR String CIGAR string
- RNEXT String Ref. name of the mate/next read
- PNEXT Int Position of the mate/next read
- TLEN Int observed Template LENgth
- SEQ String query sequence
- QUAL String ASCII of Phred-scaled base QUALity+33,即序列质量
若没有比对上,则第三列RNAME为*
,各种position位置信息都为0。上述11个必需字段之后就是各种非必需的Tags以记录更多信息,常常是TAG:TYPE:VALUE
的格式,如NM:i:1
表示mismatch的数量为1。
Binary Alignment Map(BAM)则是压缩后二进制类型的SAM文件。CRAM则通过链接外部参考序列文件,比BAM文件更小,但因此压缩或解压都需要指定外部参考序列文件。
参考资料:
- https://samtools.github.io/hts-specs/
- https://samtools.github.io/hts-specs/SAMv1.pdf
- https://www.jianshu.com/p/f0f1f293f0bd
基因标注信息
BED
Browser Extensible Data(BED)文件是一种用于存储基因组区域及对应标注的文件,可以上传至UCSC Genome Browser将对应的区段展示出来。
首先头部信息可选,也可能有多行,以browser
或track
开头,然后就是Genome Browser的各种配置。
之后的信息则每一行表示一段基因组区域的标注信息,以\t
或空格分割。首先有3个必需字段:
- chrom: 染色体的名称,如chr3;
- chromStart: 染色体的开始位置,0-based;
- chromEnd: 染色体的结束位置
之后有9个可选字段:
4. name: 该标注的名称;
5. score: 0-1000,分数;
6. strand: 正负链,正链-’+’、负链-’-’、不区分正负链-’.’;
7. thickStart: 加粗部分的起始位置;
8. thickEnd: 加粗部分的结束位置;
9. itemRgb: 颜色;
10. blockCount: 区域内外显子数量;
11. blockSizes: 每个外显子的长度,以逗号分隔;
12. blockStarts: 每个外显子的起始位置(以chromStart为起点),以逗号分割;
示例:
track name=pairedReads description="Clone Paired Reads" useScore=1
chr22 1000 5000 cloneA 960 + 1000 5000 0 2 567,488, 0,3512
chr22 2000 6000 cloneB 900 - 2000 6000 0 2 433,399, 0,3601
还有几个常见的BED文件变种:
- bigBed,就是从bed文件转换的二进制格式,更适用于大数据集;
- bedDetail,与bed文件基本相同,多记录两个字段ID和详细描述;
参考资料:
- http://genome.cse.ucsc.edu/FAQ/FAQformat.html#format1
bedMethyl
bedMethyl是bed文件变种,专用于表示甲基化状态,前9个字段与BED文件一致:
- chrom: 染色体的名称,如chr3;
- chromStart: 染色体的开始位置,0-based;
- chromEnd: 染色体的结束位置
- name: 该标注的名称;
- score: 0-1000,分数,在Genome Browser中体现在灰度上;
- strand: 正负链,正链-’+’、负链-’-’、不区分正负链-’.’;
- thickStart: 加粗部分的起始位置;
- thickEnd: 加粗部分的结束位置;
- itemRgb: 颜色;
最后两个增加的字段表示甲基化信息:
10. reads数量或Coverage;
11. 在该位置上有甲基化reads的占比;
参考资料:
- https://www.encodeproject.org/data-standards/wgbs/
GFF
General Feature Format(GFF)文件格式类似于BED,同样用于存储基因组区域及对应标注信息。头部信息以browser
或track
开头,然后就是Genome Browser的各种配置。
之后每行标注一个基因,以\t
分割,有9个必需字段:
- seqname: 染色体的名称;
- source: 产生该标注所用的程序;
- feature: 该区段的类型,如enhancer, promoter等;
- start: 该区段在染色体上的起始位置,1-based;
- end: 该区段在染色体上的结束位置,1-based;
- score: 0-1000的分数,在Genome Browser中体现在灰度上,
.
表示没有分数; - strand: 正负链,正链-’+’、负链-’-’、不区分正负链-’.’;
- frame: 若该区域为编码外显子,该字段为0-2,表示阅读框的起始碱基;其他类型下该值均为
.
; - group: 分组名称。
举例:
browser position chr22:10000000-10025000
browser hide all
track name=regulatory description="TeleGene(tm) Regulatory Regions" visibility=2
chr22 TeleGene enhancer 10000000 10001000 500 + . touch1
chr22 TeleGene promoter 10010000 10010100 900 + . touch1
chr22 TeleGene promoter 10020000 10025000 800 - . touch2
参考资料:
- http://genome.cse.ucsc.edu/FAQ/FAQformat.html#format3
- http://gmod.org/wiki/GFF2
Wiggle/WIG
BED之类的文件仅标注了基因组各个区域的类型和功能,Wiggle(WIG)文件则标注了与基因组某区域相关的一系列数值,如概率分数等,同样可以被UCSC Genome Browser加载和展示。
Wiggle是文本文件,每一个部分的第一行均以track type=wiggle_0
开头用于定义类型(track definition line),之后还有一些可选项描述名称、显示方式等各种信息。
之后的数据部分有两种格式,第一种为可变步长格式(variableStep format),用于表示开始位置并不规律的区域。第一行形如variableStep chrom=chrN [span=windowSize]
,分别标记类型、染色体、窗口大小(可选,默认为1)。之后的数据则有多行,每一行有两列,分别为chromStart dataValue
,即区域开始位置以及该区域的值。如:
track type=wiggle_0 name="variableStep" description="variableStep format" visibility=full autoScale=off viewLimits=0.0:25.0 color=50,150,255 yLineMark=11.76 yLineOnOff=on priority=10
variableStep chrom=chr19 span=150
49304701 10.0
49304901 12.5
49305401 15.0
49305601 17.5
49305901 20.0
49306081 17.5
49306301 15.0
49306691 12.5
49307871 10.0
上述表示了9个基因组区间对应的数值,每个区间150个碱基,第一个区间就是49304701~49304851,对应的数值为10.0。
另一种格式为固定步长格式(fixedstep format),用于表示开始位置的间隔固定的基因区域。第一行形如fixedStep chrom=chrN start=pos step=stepInterval [span=windowSize]
,分别表示类型、染色体、起始位置、起始位置之间的间隔、窗口大小(可选,默认为1)。之后数据有多行,每行也就一个数字,用于表示区域对应的数值。如:
track type=wiggle_0 name="fixedStep" description="fixedStep format" visibility=full autoScale=off viewLimits=0:1000 color=0,200,100 maxHeightPixels=100:50:20 graphType=points priority=20
fixedStep chrom=chr19 start=49307401 step=300 span=200
1000
900
800
700
600
500
400
300
200
100
上述则表示了从19号染色体上有10个跨度为200个碱基的区域,从第49307401个碱基开始,每隔300个碱基为区域的起始位置,这10个区域有对应的数值。
注意,wiggle文件中的碱基位置,均为1-based,即第1个碱基的位置为1,区域包括结束位置的碱基。
bigWig,即为压缩后的二进制Wiggle文件。
参考资料:
- https://genome.ucsc.edu/goldenpath/help/wiggle.html
BedGraph
BedGraph文件与Wiggle格式类似,同样用于标注与基因组某区域相关的一系列数值,可以被UCSC Genome Browser加载和展示。
第一行同样为轨道定义行(track definition line),以track type=bedGraph
开头标明类型,之后添加一些可选项来描述名称、显示方式等。
之后数据部分则每行标记一个基因组区域对应的数值,有四个字段:chrN chrStart chrEnd dataValue
,前三个字段与bed文件相同,分别为染色体名称、开始位置、结束位置,最后一个字段则表示这个区域对应的数值。如:
browser position chr19:49302001-49304701
browser hide all
browser pack refGene encodeRegions
browser full altGraph
track type=bedGraph name="BedGraph Format" description="BedGraph format" visibility=full color=200,100,0 altColor=0,100,200 priority=20
chr19 49302000 49302300 -1.0
chr19 49302300 49302600 -0.75
chr19 49302600 49302900 -0.50
chr19 49302900 49303200 -0.25
chr19 49303200 49303500 0.0
chr19 49303500 49303800 0.25
chr19 49303800 49304100 0.50
chr19 49304100 49304400 0.75
chr19 49304400 49304700 1.00
即标注了第19号染色体上9个区域对应的数值。BedGraph文件中的位置则为0-based,即第1个碱基位置为0,区域不包括结束位置的碱基。
BedGraph文件同样可以压缩为二进制的bigWig文件,但与Wiggle文件之间较难转换,
参考资料:
- https://genome.ucsc.edu/goldenPath/help/bedgraph.html
基因变异
VCF
Variant Call Format(VCF)文件格式用于记录测序结果与参考基因组之间不同之处,即变异情况。
若希望文件可以被UCSC Genome Browser加载显示,则第一行需要为轨道定义行(track definition line),以track type=vcf
开头标明类型,之后添加一些可选项来描述名称、显示方式等。
之后为header部分,可能有多行,均以##
开头,记录一些元信息,如文件类型、日期、参考基因组等。
然后是标题行,以#
开头,标记之后数据每一列的列名,必需字段常有#CHROM POS ID REF ALT QUAL FILTER INFO
。之后每一行就记录了一条变异信息,具体内容与列名一致:
- CHROM: 染色体ID;
- POS: 发生变异的位置,即第4列REF中第一个碱基的位置;
- ID: 该位置的变异若已在变异数据库中有记录,则该字段为记录的ID,否则为
.
; - REF: 参考序列在变异位置的碱基序列;
- ALT: 测序结果在变异位置的碱基序列;
- QUAL: 表示variant calling的质量分数;
- FILTER: 表示该变异的可靠性评价,常用
PASS
表示符合条件,.
或其他的标记表示未通过筛选; - INFO: 补充信息;
举例:
track type=vcf name="vcf example" description="three samples in a vcf" db=hg18 visibility="full"
browser position chr20:1-1306000
##fileformat=VCFv4.2
##fileDate=20090805
##source=myImputationProgramV3.1
##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta
##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>
##phasing=partial
##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">
##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">
##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">
##FILTER=<ID=q10,Description="Quality below 10">
##FILTER=<ID=s50,Description="Less than 50% of samples have data">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00003
20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,.
20 17330 . T A 3 q10 NS=3;DP=11;AF=0.017 GT:GQ:DP:HQ 0|0:49:3:58,50 0|1:3:5:65,3 0/0:41:3
20 1110696 rs6040355 A G,T 67 PASS NS=2;DP=10;AF=0.333,0.667;AA=T;DB GT:GQ:DP:HQ 1|2:21:6:23,27 2|1:2:0:18,2 2/2:35:4
20 1230237 . T . 47 PASS NS=3;DP=13;AA=T GT:GQ:DP:HQ 0|0:54:7:56,60 0|0:48:4:51,51 0/0:61:2
20 1234567 microsat1 GTC G,GTCT 50 PASS NS=3;DP=9;AA=G GT:GQ:DP 0/1:35:4 0/2:17:2 1/1:40:3
对于VCF文件中各种简写有很多,其详细意义还是去参考官方文档。
参考资料:
- https://www.jianshu.com/p/34c1e22c92c8