生物信息常用文件格式

文章目录

生物信息学中有很多分析软件,也就有了多种文件格式。下面简单总结一些常用的文件格式以备随时查阅。

序列信息

首先最需要的就是存储基本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分割,分别为:

  1. Query sequence name;
  2. Query sequence length;
  3. Query Start,匹配上query的起始位置;
  4. Query End,匹配上query的结束位置;
  5. 正负链,"+" or “-”;
  6. Target sequence name,参考序列的名称;
  7. Target sequence length,参考序列长度;
  8. Target Start,匹配上参考序列的起始位置;
  9. Target End,匹配上参考序列的结束位置;
  10. Number of residue matches,真正比对上的碱基数量;
  11. Alignment block length,碱基总数,包括match, mismatch, insertion和deletion;
  12. 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分割:

  1. QNAME String Query template NAME
  2. FLAG Int bitwise FLAG
  3. RNAME String References sequence NAME
  4. POS Int 1-based leftmost mapping position on Reference, ref start
  5. MAPQ Int Mapping Quality
  6. CIGAR String CIGAR string
  7. RNEXT String Ref. name of the mate/next read
  8. PNEXT Int Position of the mate/next read
  9. TLEN Int observed Template LENgth
  10. SEQ String query sequence
  11. 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将对应的区段展示出来。

首先头部信息可选,也可能有多行,以browsertrack开头,然后就是Genome Browser的各种配置。

之后的信息则每一行表示一段基因组区域的标注信息,以\t或空格分割。首先有3个必需字段:

  1. chrom: 染色体的名称,如chr3;
  2. chromStart: 染色体的开始位置,0-based;
  3. 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文件一致:

  1. chrom: 染色体的名称,如chr3;
  2. chromStart: 染色体的开始位置,0-based;
  3. chromEnd: 染色体的结束位置
  4. name: 该标注的名称;
  5. score: 0-1000,分数,在Genome Browser中体现在灰度上;
  6. strand: 正负链,正链-’+’、负链-’-’、不区分正负链-’.’;
  7. thickStart: 加粗部分的起始位置;
  8. thickEnd: 加粗部分的结束位置;
  9. itemRgb: 颜色;

最后两个增加的字段表示甲基化信息:
10. reads数量或Coverage;
11. 在该位置上有甲基化reads的占比;

参考资料:

  • https://www.encodeproject.org/data-standards/wgbs/

GFF

General Feature Format(GFF)文件格式类似于BED,同样用于存储基因组区域及对应标注信息。头部信息以browsertrack开头,然后就是Genome Browser的各种配置。

之后每行标注一个基因,以\t分割,有9个必需字段:

  1. seqname: 染色体的名称;
  2. source: 产生该标注所用的程序;
  3. feature: 该区段的类型,如enhancer, promoter等;
  4. start: 该区段在染色体上的起始位置,1-based;
  5. end: 该区段在染色体上的结束位置,1-based;
  6. score: 0-1000的分数,在Genome Browser中体现在灰度上,.表示没有分数;
  7. strand: 正负链,正链-’+’、负链-’-’、不区分正负链-’.’;
  8. frame: 若该区域为编码外显子,该字段为0-2,表示阅读框的起始碱基;其他类型下该值均为.
  9. 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。之后每一行就记录了一条变异信息,具体内容与列名一致:

  1. CHROM: 染色体ID;
  2. POS: 发生变异的位置,即第4列REF中第一个碱基的位置;
  3. ID: 该位置的变异若已在变异数据库中有记录,则该字段为记录的ID,否则为.
  4. REF: 参考序列在变异位置的碱基序列;
  5. ALT: 测序结果在变异位置的碱基序列;
  6. QUAL: 表示variant calling的质量分数;
  7. FILTER: 表示该变异的可靠性评价,常用PASS表示符合条件,.或其他的标记表示未通过筛选;
  8. 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
上一篇:多internet出口浮动静态+IP SLA track


下一篇:n-Track Studio Suite 9 for Mac(多轨音乐制作软件) v9.1.5激活版