我用到的Samtools介紹

記錄一下我用到的samtools的用法。

samtools的說明文檔:http://samtools.sourceforge.net/samtools.shtml

bam文件優(yōu)點(diǎn):bam文件為二進(jìn)制文件,占用的磁盤空間比sam文本文件小;利用bam二進(jìn)制文件的運(yùn)算速度快覆获。

首先需要意識(shí)到的是samtools是一個(gè)非常強(qiáng)大的工具,想要熟練的使用它,還需要不斷的摸索小压。

samtools的用法

(1)View

samtools view -bS abc.sam > abc.bam? ? #將sam文件轉(zhuǎn)換為bam文件

?參數(shù):

-b bam 輸出bam

-S sam 輸入sam

-@ 線程

在比對(duì)完成的sam文件中,包含著mapped reads 和unmapped reads

$ samtools view -bF 4? abc.bam > abc.F.bam? ? ? ?#提取沒有比對(duì)到參考序列上的比對(duì)結(jié)果椰于,步包含標(biāo)簽

$ samtools view -bF 12 abc.bam > abc.F12.bam? ?#提取paired reads中兩條reads都比對(duì)到參考序列上的比對(duì)結(jié)果怠益,只需要把兩個(gè)4+8的值12作為過濾參數(shù)即可

$ samtools view -bf 4 abc.bam > abc.f.bam? ? #提取沒有比對(duì)到參考序列上的比對(duì)結(jié)果,包含標(biāo)簽

$ samtools view abc.bam scaffold1 > scaffold1.sam? ? ?#提取bam文件中比對(duì)到caffold1上的比對(duì)結(jié)果瘾婿,并保存到sam文件格式

$ samtools view abc.bam scaffold1:30000-100000 $gt; scaffold1_30k-100k.sam? ? #提取scaffold1上能比對(duì)到30k到100k區(qū)域的比對(duì)結(jié)果

$ samtools view -T genome.fasta -h scaffold1.sam > scaffold1.h.sam? ? #根據(jù)fasta文件蜻牢,將 header 加入到 sam 或 bam 文件中

samtools的view不就可以進(jìn)行格式轉(zhuǎn)換烤咧,還可以進(jìn)行數(shù)據(jù)的提取

例:提取1號(hào)染色體上1234~123456區(qū)域的以對(duì)read

samtools view SRR3589957_sorted.bam chr1:1234-123456| head

?samtools view SRR3589957_sorted.bam chr1:1234-123456 > sub.bam?

使FLAG更具可讀性

samtools view -X sample.sorted.bam | head -n 5

計(jì)算總的比對(duì)數(shù)量

samtools view sample.sorted.bam | wc -l

顯示標(biāo)題,-H選項(xiàng)

samtools view -H sample.sorted.bam

將bam文件轉(zhuǎn)換為sam文件

samtools view -h abc.bam > abc.sam


(2)Sort

samtools sort對(duì)bam文件進(jìn)行排序抢呆,不能對(duì)sam文件進(jìn)行排序髓削。

以leftmost coordinates的方式對(duì)比對(duì)結(jié)果進(jìn)行排序,或者使用-n參數(shù)以read名稱進(jìn)行排序镀娶。將會(huì)添加適當(dāng)?shù)腀HD-SO排序順序標(biāo)頭標(biāo)簽或者如果有必要的話立膛,將會(huì)更新現(xiàn)存的一個(gè)排序順序標(biāo)頭標(biāo)簽。sort命令的輸出默認(rèn)是標(biāo)準(zhǔn)輸出寫入梯码,或者使用-o參數(shù)時(shí)宝泵,指定bam文件輸出名。sort命令還會(huì)在內(nèi)存不足時(shí)創(chuàng)建臨時(shí)文件tmpprefix.%d.bam轩娶。

也就是說:samtools的排序方式有兩種(常用)

默認(rèn)方式儿奶,按照染色體的位置進(jìn)行排序

samtools sort test.bam default

參數(shù)-n則是根據(jù)read名進(jìn)行排序。

samtools sort -n test.bam sort_left

usage: samtools sort [-l?level] [-m?maxMem] [-o?out.bam] [-O?format] [-n] [-T?tmpprefix] [-@?threads] [in.sam|in.bam|in.cram]

例如:samtools sort abc.bam abc.sort

samtools sort -O bam -@ 2 SRR1909070.bam -o SRR1909070.sorted.bam

RNA-seq 的數(shù)據(jù)比對(duì)結(jié)果 BAM 文件使用 samtools 進(jìn)行 sort 之后文件壓縮比例變化會(huì)比DNA-seq 更甚鳄抒。另外闯捎,samtools 對(duì) BAM 文件進(jìn)行排序之后那些沒有比對(duì)上的 reads 會(huì)被放在文件的末尾。

?參數(shù):

-l INT 設(shè)置輸出文件壓縮等級(jí)许溅。0-9瓤鼻,0是不壓縮,9是壓縮等級(jí)最高贤重。不設(shè)置此參數(shù)時(shí)茬祷,使用默認(rèn)壓縮等級(jí);

-m INT 設(shè)置每個(gè)線程運(yùn)行時(shí)的內(nèi)存大小并蝗,可以使用K祭犯,M和G表示內(nèi)存大小。

-n 設(shè)定排序方式按short reads的ID排序滚停。默認(rèn)下是按序列在fasta文件中的順序(即header)和序列從左往右的位點(diǎn)排序沃粗。

-o FILE 設(shè)置最終排序后的輸出文件名;

-O FORMAT 設(shè)置最終輸出的文件格式键畴,可以是bam最盅,sam或者cram,默認(rèn)為bam镰吵;

-T PREFIX 設(shè)置臨時(shí)文件的前綴檩禾;

-@ INT 設(shè)置排序和壓縮是的線程數(shù)量,默認(rèn)是單線程疤祭。


(3)index

samtools index 建立索引盼产,在建立索引之前應(yīng)該先對(duì)bam文件進(jìn)行排序。必須對(duì)bam文件進(jìn)行默認(rèn)情況下的排序后勺馆,才能進(jìn)行index戏售。否則會(huì)報(bào)錯(cuò)侨核。

建立索引后將產(chǎn)生后綴為.bai的文件,用于快速的隨機(jī)處理灌灾。很多情況下需要有bai文件的存在搓译,特別是顯示序列比對(duì)情況下。比如samtool的tview命令就需要锋喜;gbrowse2顯示reads的比對(duì)圖形的時(shí)候也需要些己。

samtools index abc.sort.bam

如果想要建立索引的,具體可以看看比對(duì)的內(nèi)部的算法嘿般,鏈接具體是怎么建立索引的

建立索引的目的應(yīng)該是為了提高比對(duì)的效率

以下兩種命令結(jié)果一樣

$ samtools index abc.sort.bam

$ samtools index abc.sort.bam abc.sort.bam.bai


(4)flagstat

samtools flagstat? 給出BAM文件的比對(duì)結(jié)果

samtools flagstat [options] <in.bam>

-@ 線程

-O FORMAT 設(shè)置最終輸出的文件格式段标,可以是txt,json或者tsv炉奴,默認(rèn)為json逼庞,tsv;

samtools flagstat輸出結(jié)果解釋:

11945742 + 0 in total (QC-passed reads + QC-failed reads)

#總共的reads數(shù)

0 + 0 duplicates

7536364 + 0 mapped (63.09%:-nan%)

#總體上reads的匹配率

11945742 + 0 paired in sequencing

#有多少reads是屬于paired reads

5972871 + 0 read1

#reads1中的reads數(shù)

5972871 + 0 read2

#reads2中的reads數(shù)

6412042 + 0 properly paired (53.68%:-nan%)

#完美匹配的reads數(shù):比對(duì)到同一條參考序列瞻赶,并且兩條reads之間的距離符合設(shè)置的閾值

6899708 + 0 with itself and mate mapped

#paired reads中兩條都比對(duì)到參考序列上的reads數(shù)

636656 + 0 singletons (5.33%:-nan%)

#單獨(dú)一條匹配到參考序列上的reads數(shù)赛糟,和上一個(gè)相加,則是總的匹配上的reads數(shù)砸逊。

469868 + 0 with mate mapped to a different chr

#paired reads中兩條分別比對(duì)到兩條不同的參考序列的reads數(shù)

243047 + 0 with mate mapped to a different chr (mapQ>=5)

#paired reads中兩條分別比對(duì)到兩條不同的參考序列的reads數(shù),并且其中比對(duì)質(zhì)量>=5的reads的數(shù)量


(5)depth

得到每個(gè)堿基位點(diǎn)的測(cè)序深度,并輸出到標(biāo)準(zhǔn)輸出璧南。

usage: samtools depth [options] in.bam [in.bam ...]

注意:做depth之前必須做samtools index;

示例:

samtools depth in.bam? >? out.depth.txt

注意: in.bam 必須經(jīng)過了排序痹兜。


(6)samtools rmdup

NGS上機(jī)測(cè)序前需要進(jìn)行PCR一步穆咐,使一個(gè)模板擴(kuò)增出一簇,從而在上機(jī)測(cè)序的時(shí)候表現(xiàn)出為1個(gè)點(diǎn)字旭,即一個(gè)reads。若一個(gè)模板擴(kuò)增出了多簇崖叫,結(jié)果得到了多個(gè)reads遗淳,這些reads的坐標(biāo)(coordinates)是相近的。在進(jìn)行了reads比對(duì)后需要將這些由PCRduplicates獲得的reads去掉心傀,并只保留最高比對(duì)質(zhì)量的read屈暗。使用rmdup命令即可完成.

Usage:

samtools rmdup[-sS]

-s對(duì)single-end reads。默認(rèn)情況下脂男,只對(duì)paired-endreads

-S將Paired-endreads作為single-endreads處理养叛。

$samtools?rmdup input.sorted.bam output.bam

(7)mpileup

samtools還有個(gè)非常重要的命令mpileup,以前為pileup宰翅。該命令用于生成bcf文件弃甥,再使用bcftools進(jìn)行SNP和Indel的分析。bcftools是samtool中附帶的軟件汁讼,在samtools的安裝文件夾中可以找到淆攻。

最常用的參數(shù)有2個(gè):

-f來輸入有索引文件的fasta參考序列阔墩;

-g輸出到bcf格式。用法和最簡(jiǎn)單的例子如下

Usage:samtoolsmpileup[-EBug][-CcapQcoef][-rreg][-fin.fa][-llist][-McapMapQ][-QminBaseQ][-qminMapQ]in.bam[in2.bam[...]]

$samtoolsmpileup-fgenome.fastaabc.bam>abc.txt

$samtoolsmpileup-gSDfgenome.fastaabc.bam>abc.bcf

$samtoolsmpileup-guSDfgenome.fastaabc.bam|\bcftoolsview-cvNg->abc.vcf

mpileup不使用-u或-g參數(shù)時(shí)瓶珊,則不生成二進(jìn)制的bcf文件啸箫,而生成一個(gè)文本文件(輸出到標(biāo)準(zhǔn)輸出)。該文本文件統(tǒng)計(jì)了參考序列中每個(gè)堿基位點(diǎn)的比對(duì)情況伞芹;該文件每一行代表了參考序列中某一個(gè)堿基位點(diǎn)的比對(duì)結(jié)果忘苛。比如:

bcf文本文件格式的解釋

(8)faidx

對(duì)fasta文件建立索引,比如基因組的文件唱较,生成的索引文件以.fai后綴結(jié)尾扎唾。該命令也能依據(jù)索引文件快速提取fasta文件中的某一條(子)序列

Usage: samtools faidx <in.bam> [ [...]]

對(duì)基因組文件建立索引

$ samtools faidx genome.fasta

生成了索引文件genome.fasta.fai,是一個(gè)文本文件,分成了5列绊汹。

第一列是子序列的名稱稽屏;

第二列是子序列的長(zhǎng)度;

第三列是序列所在的位置西乖,因?yàn)樵摂?shù)字從上往下逐漸變大狐榔,最后的數(shù)字是genome.fasta文件的大小获雕;

第4和5列不知是啥意思薄腻。于是通過此文件,可以定

位子序列在fasta文件在磁盤上的存放位置届案,直接快速調(diào)出子序列庵楷。

由于有索引文件,可以使用以下命令很快從基因組中提取到fasta格式的子序列

$ samtools faidx genome.fasta scffold_10 > scaffold_10.fasta


拓展:bcftools軟件

bcftools和samtools類似楣颠,用于處理vcf(variant call format)文件和bcf(binary call format)文件尽纽。前者為文本文件,后者為其二進(jìn)制文件童漩。

bcftools使用簡(jiǎn)單弄贿,最主要的命令是view命令,其次還有index和cat等命令矫膨。index和cat命令和samtools中類似差凹。此處主講使用view命令來進(jìn)行SNP和Indel calling。該命令的使用方法和例子為:

$ bcftools view -cvNg abc.bcf > snp_indel.vcf

生成的結(jié)果文件為vcf格式侧馅,有10列危尿,分別是:1 參考序列名;2 varianti所在的left-most位置馁痴;3 variant的ID(默認(rèn)未設(shè)置谊娇,用’.'表示);4 參考序列的allele弥搞;5 variant的allele(有多個(gè)alleles邮绿,則用’,'分隔);6 variant/reference QUALity;7 FILTers applied;8 variant的信息渠旁,使用分號(hào)隔開;9 FORMAT of the genotype fields, separated by colon (optional)船逮; 10 SAMPLE genotypes and per-sample information (optional)顾腊。


參考鏈接:

原文鏈接:https://blog.csdn.net/u013553061/article/details/53179945

https://www.cnblogs.com/emanlee/p/4316581.html

http://events.jianshu.io/p/794d82bccf6c

http://blog.sina.com.cn/s/blog_13de3725c0102v7rd.html

https://www.cnblogs.com/shuaihe/articles/6802246.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市挖胃,隨后出現(xiàn)的幾起案子杂靶,更是在濱河造成了極大的恐慌,老刑警劉巖酱鸭,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吗垮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凹髓,警方通過查閱死者的電腦和手機(jī)烁登,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔚舀,“玉大人饵沧,你說我怎么就攤上這事《奶桑” “怎么了狼牺?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)礼患。 經(jīng)常有香客問我是钥,道長(zhǎng),這世上最難降的妖魔是什么缅叠? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任悄泥,我火速辦了婚禮,結(jié)果婚禮上肤粱,老公的妹妹穿的比我還像新娘码泞。我一直安慰自己,他們只是感情好狼犯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著领铐,像睡著了一般悯森。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绪撵,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天瓢姻,我揣著相機(jī)與錄音,去河邊找鬼音诈。 笑死幻碱,一個(gè)胖子當(dāng)著我的面吹牛绎狭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播褥傍,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼儡嘶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了恍风?” 一聲冷哼從身側(cè)響起蹦狂,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朋贬,沒想到半個(gè)月后凯楔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锦募,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年摆屯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糠亩。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虐骑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出削解,到底是詐尸還是另有隱情富弦,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布氛驮,位于F島的核電站腕柜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏矫废。R本人自食惡果不足惜盏缤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蓖扑。 院中可真熱鬧唉铜,春花似錦、人聲如沸律杠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柜去。三九已至灰嫉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嗓奢,已是汗流浹背讼撒。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人根盒。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓钳幅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親炎滞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敢艰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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