生物信息文件

fastq

SAM/BAM

SAM (sequence alignment/map)文件是用于存储二代测序数据匹配结果的文本 文件格式。BAM文件是其二进制格式,比SAM文件要节约存储空间,两者可以容易 地进行转换。SAM文件中一般有两部分构成,可选的头部(header section), 记录匹配信息的匹配部(alignment section)。头部主要是存储一些和文件格 式规格,匹配软件,匹配参考基因组等相关的信息。而匹配部则是序列的具体匹 配信息,每条序列占据一行,每行包含多个列存储不同的内容。

示例

假设存在下面的序列要存储为 SAM 文件。 ref 是参考基因组,而 r001 等是不 同的测序数据。

Coor     12345678901234  5678901234567890123456789012345
ref      AGCATGTTAGATAA**GATAGCTGTGCTAGTAGGCAGTCAGCGCCAT

+r001/1        TTAGATAAAGGATA*CTG
+r002         aaaAGATAA*GGATA
+r003       gcctaAGCTAA
+r004                     ATAGCT..............TCAGC
-r003                            ttagctTAGGC
-r001/2                                        CAGCGGCAT

那么其存为 SAM 文件应为:

@HD VN:1.6 SO:coordinate
@SQ SN:ref LN:45
r001   99 ref  7 30 8M2I4M1D3M = 37  39 TTAGATAAAGGATACTG *
r002    0 ref  9 30 3S6M1P1I4M *  0   0 AAAAGATAAGGATA    *
r003    0 ref  9 30 5S6M       *  0   0 GCCTAAGCTAA       * SA:Z:ref,29,-,6H5M,17,0;
r004    0 ref 16 30 6M14N5M    *  0   0 ATAGCTTCAGC       *
r003 2064 ref 29 17 6H5M       *  0   0 TAGGC             * SA:Z:ref,9,+,5S6M,30,1;
r001  147 ref 37 30 9M         =  7 -39 CAGCGGCAT         * NM:i:1

其中 @HD@SQ 是头部,头部的行以 @ 起始。而文件中剩下的部分则是 匹配部,是具体的匹配信息。

头部

匹配部

在头部下面是包含序列匹配信息的匹配部。匹配部的每一行都代表了fastq中的 一条序列。匹配部有十一列。不同的文件中都会包含这十一列,只是对于有的匹 配信息,根据序列不同或者选项不同,有的列可能是0值或者空值。

  1. QNAME: String, [!-?A-~]{1,254}, 序列名称, 为fastq文件中一个序列的第一行信息.
  2. FLAG: Int, [0,2^16-1], 二进制的旗标.
  3. RNAME: String, *|[!-()+-<>-~][!-~]*, 参考序列的名称, 如果是基因组的话则是相应的染色体名称.
  4. POS: Int, [0,2^31-1], 以1为起始的在参考序列上的位置.
  5. MAPQ: Int, [0,2^8-1], 序列匹配的质量
  6. CIGAR: String, *|([0-9]+[MIDNSHPX=])+, CIGAR值, 反映了大致匹配情况.
  7. RNEXT: String, *|=|[!-()+-<>-~][!-~], 下一个匹配序列对应的参考序 列的名称, 如果与本序列相同, 则设置为 '=', 如果没有相关的信息则是 ''
  8. PNEXT: Int, [0,2^31-1], 下一个匹配序列对应的以1为起始的在参考序列上的位置.
  9. TLEN: Int, [-2^31+1,2^31-1], 模板长度.
  10. SEQ: String, *|[A-Za-z=.]+, 序列, fastq文件中第二行信息.
  11. QUAL: String, [!-~]+, 序列质量, fastq文件中第四行信息.

除了上面的必须有的列外,还有可选列,可选列中的信息都是按照 TAG:TYPE:VALUE 去排列的。

VCF/BCF

VCF 是用于存储 variant 信息的文本文件,BCF是二进制存储的方式。VCF文件 包括三部分:元数据部分(meta-information),表头部分(header)和数据部 分。

VCF 的例子如下所示:

##fileformat=VCFv4.2
##FILTER=<ID=PASS,Description="All filters passed">
##bcftoolsVersion=1.9+htslib-1.9
##bcftoolsCommand=mpileup -Ou -f /home/485/Reference/Homo_sapiens/UCSC/hg38/Sequence/WholeGenomeFasta/genome.fa /home/485/Background_1/Background_1.sorted.bam
##reference=file:///home/485/Reference/Homo_sapiens/UCSC/hg38/Sequence/WholeGenomeFasta/genome.fa
##contig=<ID=chr1,length=248956422>
##ALT=<ID=*,Description="Represents allele(s) other than observed.">
##INFO=<ID=INDEL,Number=0,Type=Flag,Description="Indicates that the variant is an INDEL.">
##INFO=<ID=IDV,Number=1,Type=Integer,Description="Maximum number of reads supporting an indel">
##INFO=<ID=IMF,Number=1,Type=Float,Description="Maximum fraction of reads supporting an indel">
##INFO=<ID=DP,Number=1,Type=Integer,Description="Raw read depth">
##INFO=<ID=VDB,Number=1,Type=Float,Description="Variant Distance Bias for filtering splice-site artefacts in RNA-seq data (bigger is better)",Version="3">
##INFO=<ID=RPB,Number=1,Type=Float,Description="Mann-Whitney U test of Read Position Bias (bigger is better)">
##INFO=<ID=MQB,Number=1,Type=Float,Description="Mann-Whitney U test of Mapping Quality Bias (bigger is better)">
##INFO=<ID=BQB,Number=1,Type=Float,Description="Mann-Whitney U test of Base Quality Bias (bigger is better)">
##INFO=<ID=MQSB,Number=1,Type=Float,Description="Mann-Whitney U test of Mapping Quality vs Strand Bias (bigger is better)">
##INFO=<ID=SGB,Number=1,Type=Float,Description="Segregation based metric.">
##INFO=<ID=MQ0F,Number=1,Type=Float,Description="Fraction of MQ0 reads (smaller is better)">
##FORMAT=<ID=PL,Number=G,Type=Integer,Description="List of Phred-scaled genotype likelihoods">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##INFO=<ID=ICB,Number=1,Type=Float,Description="Inbreeding Coefficient Binomial test (bigger is better)">
##INFO=<ID=HOB,Number=1,Type=Float,Description="Bias in the number of HOMs number (smaller is better)">
##INFO=<ID=AC,Number=A,Type=Integer,Description="Allele count in genotypes for each ALT allele, in the same order as listed">
##INFO=<ID=AN,Number=1,Type=Integer,Description="Total number of alleles in called genotypes">
##INFO=<ID=DP4,Number=4,Type=Integer,Description="Number of high-quality ref-forward , ref-reverse, alt-forward and alt-reverse bases">
##INFO=<ID=MQ,Number=1,Type=Integer,Description="Average mapping quality">
##bcftools_callVersion=1.9+htslib-1.9
#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  /home/485/data/Background_1/Background_1.sorted.bam
chr1    12198   .       G       C       11.7172 .       DP=1;SGB=-0.379885;MQ0F=0;AC=2;AN=2;DP4=0,0,1,0;MQ=60   GT:PL   1/1:41,3,0
chr1    14464   .       A       T       117     .       DP=44;VDB=3.43916e-10;SGB=-0.693141;RPB=0.804784;MQB=0.997831;BQB=0.960039;MQ0F=0;AC=2;AN=2;DP4=4,0,37,0;MQ=44  GT:PL   1/1:144,7,0
chr1    14653   .       C       T       85      .       DP=252;VDB=1.88797e-18;SGB=-0.693147;RPB=7.469e-24;MQB=0.0373404;MQSB=0.720283;BQB=0.997816;MQ0F=0.0595238;ICB=1;HOB=0.5;AC=1;AN=2;DP4=151,17,69,1;MQ=32        GT:PL   0/1:118,0,255

元数据部分

元数据部分主要是关于计算环境的说明,关于参考序列的描述,和关于INFO的种种描述信息等。

  • ##fileformat=VCFv4.2: 当前 VCF 文件所采用的 VCF 格式版本, 最新的是4.2.
  • ##INFO=<ID=ID,Number=number,Type=type,Description="description",Source="source",Version="version">: INFO 列对应的信息描述.
  • ##FILTER=<ID=ID,Description="description">: FILTER 列信息, 过滤条 件的描述.
  • ##FORMAT=<ID=ID,Number=number,Type=type,Description="description">: FORMAT 列信息, 该位点类型的简要描述, 具体信息在 INFO 列中.
  • ##ALT=<ID=type,Description=description>: ALT列信息, variant的位点 信息描述.
  • ##contig=<ID=chr1,length=248956422>: 在VCF文件中引用的参考序列名称 对应的信息.
  • ``

表头部分

表头部分只有一行,以‘#’号开头,是下面数据部分的每一列的表头。

  • CHROM: 染色体名称
  • POS: variant 在染色体上的位置
  • ID:
  • REF: 参考基因组上该位置的碱基,或者一小段序列(对于INDEL情况)。
  • ALT: 比对序列中的该位点的碱基,如果是碱基替换则可能只是一个碱基,而 如果是INDEL,则可能是若干碱基。
  • QUAL: 该位点质量
  • FILTER:
  • INFO: 该位点variant信息
  • FORMAT:
  • 文件名: bam文件地址

数据部分

数据部分就是具体的每个variant的信息了。

Reference

  • https://samtools.github.io/hts-specs/SAMv1.pdf
  • https://samtools.github.io/hts-specs/VCFv4.2.pdf
By @Wolfson Liu in
Tags : #bioinformatics,