SAMtools的使用說(shuō)明

一、原理

原文章:The Sequence alignment/map (SAM) format and SAMtools

摘要

1、SAM格式是一種通用的,用于儲(chǔ)存比對(duì)后的信息,可以支持來(lái)自不同平臺(tái)的read的比對(duì)結(jié)果
2、SAM文件在格式上很靈活,易于壓縮、可以高效獲取以及是千人基因組計(jì)劃中使用的比對(duì)格式
3、SAMtools可以用于處理儲(chǔ)存為SAM格式的比對(duì)結(jié)果文件,可以做indexing、variant caller 、alignment viewer等操作

背景

1、高通量測(cè)序技術(shù)的誕生衍生了很多的測(cè)序方法和原理不同的比對(duì)工具,此時(shí)需要一種公認(rèn)的比對(duì)格式,可以支持所有的測(cè)序方法和比對(duì)工具,這樣可以作為比對(duì)與下游分析溝通的橋梁。
2、SAM格式應(yīng)運(yùn)而生,它不僅支持單雙端測(cè)序,而且支持組合的reads包括color space reads fromAB/SOLiD ,它可以支持10的11次方甚至更多的堿基對(duì)的比對(duì)結(jié)果。
3、同時(shí)開發(fā)了用于高效便捷處理sam格式的samtools工具

SAM格式

SAM格式簡(jiǎn)介

1、SAM格式包括頭部和比對(duì)部?jī)刹糠郑渲蓄^部每行以@開頭,比對(duì)部則沒有@。所有的行都以tab分隔
2、比對(duì)部中包括11個(gè)必選項(xiàng)和1個(gè)可選項(xiàng),如果必選項(xiàng)的信息沒有獲取到,則用*或0表示
3、可選項(xiàng)是由鍵值對(duì)組成,格式為TAG:TYPE:VALUE,這邊儲(chǔ)存了額外的信息
4、例如"RG"這個(gè)tag,保存了read的read group信息,若與@RG頭部聯(lián)用,則每條read都必須有origin、sequencing center以及l(fā)ibrary信息
5、SAM格式中的每一部分信息及tag信息都有具體的描述


SAM的基本格式

SAM的11中必須項(xiàng)

SAM格式的必選項(xiàng)之一----CIGAR簡(jiǎn)介

1、傳統(tǒng)的CIGAR包括三種選項(xiàng),反應(yīng)堿基比對(duì)的三種結(jié)果:M表示匹配或錯(cuò)配,I表示相對(duì)參考基因組是插入的,D表示相對(duì)于參考基因組是刪除的
2、extend CIGAR又添加了四種格式:N表示相對(duì)于參考序列,該堿基skipped,S表示soft clipping ,H表示hard clipping ,p表示padding,這些格式支持剪切、clipping、multi——part和padded


extend CIGAR格式

BAM格式簡(jiǎn)介

1、BAM格式是SAM的二進(jìn)制格式,其中的信息于SAM相同
2、BAM格式是通過(guò)作者開發(fā)的BGZF library工具進(jìn)行壓縮的

sort和idexing

1、一個(gè)BAM或SAM文件往往是unsort的
2、根據(jù)坐標(biāo)進(jìn)行sort往往可以簡(jiǎn)化數(shù)據(jù)處理流程同時(shí)避免將額外的比對(duì)結(jié)果加載到內(nèi)存中,同時(shí)一個(gè)根據(jù)位置進(jìn)行sort的BAM文件可以進(jìn)一步index
3、作者使用了UCSC binning scheme 和j簡(jiǎn)單的線性indexl來(lái)實(shí)現(xiàn)快速隨機(jī)的對(duì)一個(gè)染色質(zhì)特定區(qū)域的read的比對(duì)結(jié)果進(jìn)行檢索,在很多情況下,要在一個(gè)區(qū)域中檢索比對(duì)信息,只要一個(gè)seek call 就可以了。

SAMtools軟件

1、SAMtools是一個(gè)可以解析和處理SAM或BAM格式的比對(duì)結(jié)果的工具包
2、它可以對(duì)比對(duì)結(jié)果進(jìn)行轉(zhuǎn)化,sort、merge,去除PCR重復(fù),call SNP以及小的indel突變,以及可以用text格式的瀏覽器查看比對(duì)結(jié)果
3、本身有兩種版本,基于C的和基于JAVA的

二、軟件操作

使用說(shuō)明:http://www.htslib.org/doc/samtools.html
http://www.lxweimin.com/p/6b7a442d293f

1、用法匯總

samtools view -bt ref_list.txt -o aln.bam aln.sam.gz

samtools sort -T /tmp/aln.sorted -o aln.sorted.bam aln.bam

samtools index aln.sorted.bam

samtools idxstats aln.sorted.bam

samtools flagstat aln.sorted.bam

samtools stats aln.sorted.bam

samtools bedcov aln.sorted.bam

samtools depth aln.sorted.bam

samtools view aln.sorted.bam chr2:20,100,000-20,200,000

samtools merge out.bam in1.bam in2.bam in3.bam

samtools faidx ref.fasta

samtools fqidx ref.fastq

samtools tview aln.sorted.bam ref.fasta

samtools split merged.bam

samtools quickcheck in1.bam in2.cram

samtools dict -a GRCh38 -s "Homo sapiens" ref.fasta

samtools fixmate in.namesorted.sam out.bam

samtools mpileup -C50 -f ref.fasta -r chr3:1,000-2,000 in1.bam in2.bam

samtools coverage aln.sorted.bam

samtools flags PAIRED,UNMAP,MUNMAP

samtools fastq input.bam > output.fastq

samtools fasta input.bam > output.fasta

samtools addreplacerg -r 'ID:fish' -r 'LB:1334' -r 'SM:alpha' -o output.bam input.bam

samtools collate -o aln.name_collated.bam aln.sorted.bam

samtools depad input.bam

samtools markdup in.algnsorted.bam out.bam

2、常見用法
2.1 samtools view

samtools view [options] in.sam|in.bam|in.cram [region...]#查看和轉(zhuǎn)化SAM/BAM/CRAM文件
#實(shí)例
samtools view -b -1 -o selected.bam -U unselected.bam input.bam chr1:1000-10000
#輸出比對(duì)到一號(hào)染色體1001到10000的比對(duì)結(jié)果,并保存到selected.bam中,其余結(jié)果保存到unselected.bam中
#如果options和region不指定,那就會(huì)輸出比對(duì)的所有內(nèi)容
#常用options
#-b Output in the BAM format#輸出為bam格式
#-1 Enable fast BAM compression (implies -b)
#-h Include the header in the output
#-o FILE Output to FILE [stdout].
#-U FILE Write alignments that are not selected by the various filter options to FILE. When this option is used, all alignments (or all alignments intersecting the regions specified) are written to either the output file or this file, but never both.
#region的表示方法:RNAME[:STARTPOS[-ENDPOS]]
#chr1 Output all alignments mapped to the reference sequence named `chr1' (i.e. @SQ SN:chr1)
#chr2:1000000 The region on chr2 beginning at base position 1,000,000 and ending at the end of the chromosome
#chr3:1000-2000 The 1001bp region on chr3 beginning at base position 1,000 and ending at base position 2,000 (including both end positions).
#'*' Output the unmapped reads at the end of the file. (This does not include any unmapped reads placed on a reference sequence alongside their mapped mates.)
#. Output all alignments. (Mostly unnecessary as not specifying a region at all has the same effect.)
#通過(guò)man samtools view 或在samtools說(shuō)明文檔中查看具體參數(shù)內(nèi)容
#其它參數(shù)的概要內(nèi)容
#The -b, -C, -1, -u, -h, -H, and -c options change the output format from the default of headerless SAM, and the -o and -U options set the output file name(s).

#The -t and -T options provide additional reference data. One of these two options is required when SAM input does not contain @SQ headers, and the -T option is required whenever writing CRAM output.

#The -L, -M, -r, -R, -d, -D, -s, -q, -l, -m, -f, -F, and -G options filter the alignments that will be included in the output to only those alignments that match certain criteria.

#The -x and -B options modify the data which is contained in each alignment.

#The -X option can be used to allow user to specify customized index file location(s) if the data folder does not contain any index file. See EXAMPLES section for sample of useage.

#Finally, the -@ option can be used to allocate additional threads to be used for compression, and the -? option requests a long help message.


2.2 samtools sort

#對(duì)sam/bam/cram文件排序(根據(jù)左邊的坐標(biāo)排序)
samtools sort [-l level] [-m maxMem] [-o out.bam] [-O format] [-n] [-t tag] [-T tmpprefix] [-@ threads] [in.sam|in.bam|in.cram]
#實(shí)例
samtools sort -@ 15 -I 5 -m 20M -n -o my_sorted.bam -O bam my_unsorted.bam
#常見option
#-@ INT 設(shè)定線程,默認(rèn)為單線程
#-l INT 設(shè)定輸出文件的壓縮水平,0表示不壓縮,1表示快速但低水平的壓縮,9表示緩慢但高水平的壓縮,范圍是0或者1-9,如果不指定-I,則使用默認(rèn)的壓縮水平
#-m INT 設(shè)定每個(gè)線程需要的最大內(nèi)存,使用K M G作為后綴,為了避免sort時(shí)產(chǎn)生很多中間文件,該參數(shù)最小值設(shè)為1M
#-n 根據(jù)read name進(jìn)行sort而不是根據(jù)染色體的坐標(biāo)
#-o FILE 最后輸出的文件,如果為空,就輸出到標(biāo)準(zhǔn)輸出中
#-O FORMAT 輸出文件的格式,SAM/BAM/CRAM中選一個(gè)
#默認(rèn)情況下的排序,是根據(jù)reference(@SQheader recorder),然后根據(jù)reference中的位置,之后時(shí)REVERSE flag.

2.3 samtools index

#為bam文件加索引
samtools index [-bc] [-m INT] aln.sam|aln.bam|aln.cram [out.index]
#索引經(jīng)過(guò)sort的BAM文件
#實(shí)例
samtools index -bc my.bam my.index
#最終索引會(huì)以my.index的文件名輸出
samtools index -bc my.bam
#索引會(huì)輸出為my.bai和my.csi兩個(gè)文件
#常見選項(xiàng)
#-@, --threads INT 用于壓縮的線程數(shù)目,默認(rèn)是0
#-b 創(chuàng)建BAI索引,當(dāng)其它索引類型沒有設(shè)定時(shí),輸出該類索引
#-c 創(chuàng)建CSI索引
#-m INT 創(chuàng)建一個(gè)CSI索引,不同于上面的
#如果filename給定了,那么索引文件就會(huì)命名為out.index,如果沒有給定,那么對(duì)于xxx.bam文件作為輸入的情況,會(huì)輸出名為xxx.bai或xxx.csi的文件

2.4 samtools depth:計(jì)算每個(gè)位置或每個(gè)區(qū)域的read的深度
2.5 samtools split:通過(guò)read group 對(duì)一個(gè)文件進(jìn)行分割
2.6 samtools mpileup:從一個(gè)比對(duì)結(jié)果中產(chǎn)生plieup的文本格式的文件
2.7 samtools coverage:產(chǎn)生每個(gè)染色體上的覆蓋度的柱形圖和表格
2.8 samtools markdup:在sort好的bam中標(biāo)記出重復(fù)的比對(duì)

附:SAM格式的詳細(xì)說(shuō)明

文章摘自:http://www.biotrainee.com/thread-2704-1-1.html

1)Sam (Sequence Alignment/Map)


1) SAM 文件產(chǎn)生背景

隨著Illumina/Solexa, AB/SOLiD and Roche/454測(cè)序技術(shù)不斷的進(jìn)步,各種比對(duì)工具產(chǎn)生,被用來(lái)高效的將reads比對(duì)到參考基因組。因?yàn)檫@些比對(duì)工具產(chǎn)生不同格式的文件,導(dǎo)致下游分析比較困難,因此一個(gè)通用的格式可以提供一個(gè)很好的接口用于鏈接比對(duì)與下游分析(組裝,變異等,基因分型等)。因此SAM格式應(yīng)運(yùn)而生,主要是用來(lái)存儲(chǔ)測(cè)序reads與參考序列比對(duì)結(jié)果信息的一種文件格式,以TAB為分割符,支持不同平臺(tái)的短reads及長(zhǎng)reads(最長(zhǎng)為128Mbp)。

2)格式解讀

我們用文獻(xiàn)中的例子來(lái)詳細(xì)解釋sam格式。

2.1)首先看一個(gè)比對(duì)事件:

image

ref是參考序列,Read r001/1和 r001/2組成read pair,r003是嵌合體(chimeric read) ,r004表示 split alignment事件
2.2)相應(yīng)的sam格式是:

image

2.3)相應(yīng)的sam格式這11列內(nèi)容的解釋:
image

由此我們可以看到,SAM是由兩部分組成:分為標(biāo)頭注釋信息(header section)和比對(duì)結(jié)果(alignment section)。標(biāo)頭信息可有可無(wú),都是以@開頭,用不同的tag表示不同的信息,主要有:

  • @HD,說(shuō)明符合標(biāo)準(zhǔn)的版本、對(duì)比序列的排列順序(這里為coordinate)
  • @SQ,參考序列說(shuō)明 (SN:ref,LN 是參考序列的長(zhǎng)度)
  • @PG,使用的比對(duì)程序說(shuō)明(這里沒有給出)
  • 比對(duì)結(jié)果部分(alignment section)每一行表示一個(gè)片段(segment)的比對(duì)信息,包括11個(gè)必須的字段(mandatory fields)和一個(gè)可選的字段,字段之間用tag分割。必須的字段有11個(gè),順序固定,根據(jù)字段定義,可以為’0‘或者’*‘,這11個(gè)字段是:

1)QNAME:比對(duì)片段的(template)的編號(hào);
2)FLAG:位標(biāo)識(shí),template mapping情況的數(shù)字表示,每一個(gè)數(shù)字代表一種比對(duì)情況,這里的值是符合情況的數(shù)字相加總和;進(jìn)一步學(xué)習(xí)可查看https://broadinstitute.github.io/picard/explain-flags.html
3)RNAME:參考序列的編號(hào),如果注釋中對(duì)SQ-SN進(jìn)行了定義,這里必須和其保持一致,另外對(duì)于沒有mapping上的序列;
4)POS:比對(duì)上的位置,注意是從1開始計(jì)數(shù),沒有比對(duì)上,此處為0;
5)MAPQ:mappint的質(zhì)量;
6)CIGAR:簡(jiǎn)要比對(duì)信息表達(dá)式(Compact Idiosyncratic Gapped Alignment Report),其以參考序列為基礎(chǔ),使用數(shù)字加字母表示比對(duì)結(jié)果,比如3S6M1P1I4M,前三個(gè)堿基被剪切去除了,然后6個(gè)比對(duì)上了,然后打開了一個(gè)缺口,有一個(gè)堿基插入,最后是4個(gè)比對(duì)上了,是按照順序的;
7)RNEXT:下一個(gè)片段比對(duì)上的參考序列的編號(hào),沒有另外的片段,這里是’‘,同一個(gè)片段,用’=‘;
8)PNEXT:下一個(gè)片段比對(duì)上的位置,如果不可用,此處為0;
9)TLEN:Template的長(zhǎng)度,最左邊得為正,最右邊的為負(fù),中間的不用定義正負(fù),不分區(qū)段(single-segment)的比對(duì)上,或者不可用時(shí),此處為0;
10)SEQ:序列片段的序列信息,如果不存儲(chǔ)此類信息,此處為’
‘,注意CIGAR中M/I/S/=/X對(duì)應(yīng)數(shù)字的和要等于序列長(zhǎng)度;
11)QUAL:序列的質(zhì)量信息,格式同F(xiàn)ASTQ一樣

除了上述11列外,可以有額外列:

image

第二列FLAG每個(gè)數(shù)值含義如下,如果符合下面多種情況,則為以下數(shù)字之和:

1 read是pair中的一條(read表示本條read,mate表示pair中的另一條read)
2 pair一正一負(fù)完美的比對(duì)上
4 這條read沒有比對(duì)上
8 mate沒有比對(duì)上
16 這條read反向比對(duì)
32 mate反向比對(duì)
64 這條read是read1
128 這條read是read2
256 第二次比對(duì)
512 比對(duì)質(zhì)量不合格
1024 read是PCR或光學(xué)副本產(chǎn)生
2048 輔助比對(duì)結(jié)果

其中第六列Extended CIGAR :

M: match/mismatch
I :插入 insertion(和參考基因組相比)
D: 刪除 deletion(和參考基因組相比)
N: 跳躍 skipped(和參考基因組相比)
S: 軟剪切 soft clipping ,(表示unaligned,)
H: 硬剪切 hard clipping (被剪切的序列不存在于序列中)
P: 填充 padding(表示參考基因組沒有,而reads里面含有位點(diǎn)

2)Bam (Binary Alignment/Map)


bam文件是Sam 文件的二進(jìn)制壓縮格式,保留了與sam 完成相同的內(nèi)容信息。SAM/BAM 文件可以是未排序的,但是按照坐標(biāo)(coodinate)排序可以線性的監(jiān)控?cái)?shù)據(jù)處理過(guò)程。samtools可以用來(lái)轉(zhuǎn)化bam/sam文件,可以merg,sort aligment,可以去除duplicate,可以call snp及indels.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • wes定義: 全外顯子組測(cè)序,是利用目標(biāo)序列捕獲技術(shù), 將全基因組編碼基因外顯子區(qū)域的DNA捕獲并富集后,進(jìn)行高通...
    鳳凰_0949閱讀 4,449評(píng)論 0 7
  • SAM及其相關(guān)工具 SAM格式介紹 SAM全稱是Sequence Alignment/Map, 是目前最常用的存放...
    xuzhougeng閱讀 23,550評(píng)論 4 52
  • 學(xué)完了理論,開始實(shí)踐一下吧主要參考了jimmy提供的練習(xí)題 一、在主目錄下面創(chuàng)建/tmp文件夾,并且使其中包含 1...
    劉小澤閱讀 2,828評(píng)論 0 12
  • 目錄 samtools和picard的排序問(wèn)題SAM文件中FLAG值的理解SAM文件中那些未比對(duì)的reads為什么...
    UnderStorm閱讀 5,173評(píng)論 4 26
  • 唉,昨天晚上突然知道了自己一下子要帶四個(gè)班級(jí),不知道為什么回家坐出租車的路上非常想哭。每次遇到壓力大的事情我就特別...
    EchoWall閱讀 263評(píng)論 0 0