參考文章:https://www.cnblogs.com/xiaofeiIDO/p/6805373.html
1、view
主要功能:sam和bam文件之間相互轉(zhuǎn)換,針對(duì)bam文件進(jìn)行相關(guān)操作。bam文件是sam文件的二進(jìn)制格式,占據(jù)內(nèi)存較小且運(yùn)算速度快。
-b:輸出bam格式,用于后續(xù)分析
-C:輸出CRAM文件
-1:快速壓縮(需要-b)
-u:輸出未壓縮的bam文件,節(jié)約時(shí)間,占據(jù)較多磁盤空間(需要-b)
-h:默認(rèn)輸出sam文件不帶表頭,該參數(shù)設(shè)定后輸出帶表頭信息
-H:僅僅輸出表頭信息
-c:僅打印匹配數(shù)
-o:輸出文件(stdout標(biāo)準(zhǔn)輸出)
-U:輸出沒(méi)有經(jīng)過(guò)過(guò)濾選擇的reads
-t:制表分隔符文件(需要提供額外的參考數(shù)據(jù),比如參考基因組的索引)
-L:僅包括和bed文件有重疊的reads
-r:僅輸出在STR讀段組中的reads
-R:僅輸出特定reads
-q:定位的質(zhì)量大于INT[默認(rèn)0]
-l:僅輸出在STR 庫(kù)中的reads
-F:獲得比對(duì)上(mapped)的過(guò)濾設(shè)置[默認(rèn)0]
-f:獲得未必對(duì)上(unmapped)的過(guò)濾設(shè)置[默認(rèn)0]
-T:使用fasta格式的參考序列
實(shí)例演示:
bam文件轉(zhuǎn)換為sam文件
samtools view -h smallNA06985 > test.sam
sam文件轉(zhuǎn)換為bam文件
samtools view -bS -1 test.sam > test.bam
提取比對(duì)到參考基因組上的數(shù)據(jù)
samtools view -bF 4 test.bam > test.F.bam
提取沒(méi)有比對(duì)到參考基因組上的數(shù)據(jù)
samtools view -bf 4 test.bam > test.f.bam
雙端reads都比對(duì)到參考基因組上的數(shù)據(jù)
samtools view -bF 12 test.bam > test.12.bam
單端reads1比對(duì)到參考基因組上的數(shù)據(jù)
samtools view -bF 4 -f 8 test .bam > test1.bam
單端reads2比對(duì)到參考基因組上的數(shù)據(jù)
samtools view -bF 8 -f 4 test.bam > test2.bam
2、sort
主要功能:對(duì)bam文件進(jìn)行排序(不能對(duì)sam文件進(jìn)行排序)
主要參數(shù)釋義:
-l:設(shè)置文件壓縮等級(jí),0不壓縮,9壓縮最高
-m:每個(gè)線程運(yùn)行內(nèi)存大小(可使用K M G表示)
-n:按照read名稱進(jìn)行排序
-o:排序后的輸出文件
-T:PREFIX臨時(shí)文件前綴
-@:設(shè)置排序和壓縮的線程數(shù),默認(rèn)單線程
用法:
samtools sort -l 9 -m 90M -n -o test.sort.bam -T sorted -@ 2 test.bam
上述含義是:壓縮最高級(jí)9、每一個(gè)線程內(nèi)存90Mb、輸出文件名test.sort.bam、臨時(shí)文件前綴sorted、線程數(shù)2。
當(dāng)然,最簡(jiǎn)單命令:
samtools sort test.bam -o test.sort.bam
3、index
主要功能:對(duì)bam文件建立索引,但在此之前必須進(jìn)行排序(sort),生成后綴是.bai的文件。
參數(shù)釋義:
-b:創(chuàng)建一個(gè).bai格式的索引文件(默認(rèn))
-c:創(chuàng)建.csi格式的索引文件
-m:創(chuàng)建.csi文件,索引的最小間隔值
用法:
samtools index test.sort.bam
4、merge
功能:合并多個(gè)已經(jīng)sort的bam文件
當(dāng)有多個(gè)樣本的bam文件時(shí),可以使用samtools的merge命令將這些bam文件合并為一個(gè)排序的且保持所有輸入記錄并保持現(xiàn)有排序順序的bam文件。
主要參數(shù)釋義:
-n:輸入根據(jù)read排序的文件
-r:RG標(biāo)簽添加到每個(gè)比對(duì)文件上,標(biāo)簽值來(lái)自文件名
-u:輸出未壓縮的bam文件
-f:覆蓋同名文件
-1:壓縮等級(jí)1
-l:壓縮等級(jí)0-9
-R:合并輸入文件的指定區(qū)域
-h:FILE 指定FILE內(nèi)的’@’頭復(fù)制到輸出bam文件中并替換輸出文件的文件頭
-c:多個(gè)輸入文件包含相同的@RG頭ID時(shí),只保留第一個(gè)到合并后輸出的文件
-p:合并的每一個(gè)文件中的@PG ID只保留第一個(gè)文件中的@PG
-s:覆蓋隨機(jī)種子
-b:文件列表,一行一個(gè)
用法:
samtools merge merge.bam smallNA06985.sort smallNA06994.sort
5、faidx
功能:對(duì)fasta格式的文件建立索引,后綴名.fai。根據(jù)索引文件和序列文件,可以快速提取任意區(qū)域的序列文件。
fasta序列格式要求:每條序列,除了最后一行外,其他行的長(zhǎng)度必須相同!
為了方便,我們?cè)贜CBI上下載水稻NIP基因組的序列,進(jìn)行演示:
地址:https://www.ncbi.nlm.nih.gov/genome/?term=rice
然后,進(jìn)行解壓縮,重命名為seuence.fa
用法:
samtools faidx sequence.fa
最后生成一個(gè)sequence.fa.fai索引文件,一共5列,每列之間tab分割。
第一列:序列的名稱
第二列:序列長(zhǎng)度
第三列:第一個(gè)堿基的偏移量,從0開始計(jì)數(shù)
第四列:除了最后一行外,序列中每行的堿基數(shù)
第五列:除了最后一行外,序列中每行的長(zhǎng)度(包括換行符)
從中呢,我們可以有目的的提取序列:
提取水稻第一染色體:
samtools faidx sequence.fa Chr1 > Chr1.fa
提取水稻第一染色體100-200bp的序列:
samtools faidx sequence.fa Chr1:100-200 > Chr1_100_200.fa
6、tview
作用:直觀顯示reads比對(duì)到基因組的情況,和基因組瀏覽器有點(diǎn)類似。
-d:輸出類型
-p:直接定位給定位置
-s:reads顯示
當(dāng)給出參考基因組的時(shí)候,會(huì)在第一排給出參考基因組的序列,否則第一排全用N表示。
首先利用sort進(jìn)行排序后,在利用index建立索引后,用下面命令:
samtools tview test.sort.bam
7、flagstat
作用:reads的比對(duì)情況統(tǒng)計(jì)
Usage: samtools flagstat [--input-fmt-option OPT=VAL] <in.bam>
用法:
samtools flagstat test.sort.bam
8、depth
作用:每個(gè)堿基位點(diǎn)的測(cè)序深度
-a:輸出所有的堿基深度(包括0)
-b/-r:控制深度的范圍(后面跟染色體)
-f:bam文件名字
-l:設(shè)置read長(zhǎng)度閾值
-d/-m:最大覆蓋深度
-q:堿基質(zhì)量閾值
-Q:比對(duì)質(zhì)量閾值
samtools depth -a -r 3 test.sort.bam
9、mpileup
作用:對(duì)參考基因組每個(gè)位點(diǎn)做堿基堆積,用于call SNP和INDEL。主要是生成BCF、VCF文件或者pileup一個(gè)或多個(gè)bam文件。比對(duì)記錄以在@RG中的樣本名作為區(qū)分標(biāo)識(shí)符。如果樣本標(biāo)識(shí)符缺失,那么每一個(gè)輸入文件則視為一個(gè)樣本
主要參數(shù)釋義:
-A:在檢測(cè)變異中,不忽略異常的reads對(duì)
-C:用于調(diào)節(jié)比對(duì)質(zhì)量的系數(shù),如果reads中含有過(guò)多的錯(cuò)配,不能設(shè)置為零
-D:輸出每個(gè)樣本的reads深度
-l:BED文件或者包含區(qū)域位點(diǎn)的位置列表文件
注意:位置文件包含兩列,染色體和位置,從1開始計(jì)數(shù)。BED文件至少包含3列,染色體、起始和終止位置,開始端從0開始計(jì)數(shù)。
-r:在指定區(qū)域產(chǎn)生pileup,需已建立索引的bam文件,通常和-l參數(shù)一起使用
-o/g/v:輸出文件類型(標(biāo)準(zhǔn)格式文件或者VCF、BCF文件)
-t:設(shè)置FORMAT和INFO的列表內(nèi)容,以逗號(hào)分割
-u:生成未壓縮的VCF和BCF文件
-I:跳過(guò)INDEL檢測(cè)
-m:候選INDEL的最小間隔的reads
-f:輸入有索引文件的fasta參考序列
-F :含有間隔reads的最小片段
用法:
生成一個(gè)簡(jiǎn)單的vcf文件
samtools mpileup -vu test.sort.bam
如果有參考基因組的話
samtools mpileup -vuf genome.fasta test.sort.bam
10、dict
作用:建立參考基因組字典
用法:
samtools dict test.sort.bam sequences.fa
11、fastq
作用:bam文件轉(zhuǎn)換為fastq
用法:
samtools fastq test.bam
12、fasta
作用:bam文件轉(zhuǎn)換為fasta
用法:
samtools fasta test.bam
13、idxstats
作用:檢索和打印與輸入文件相對(duì)應(yīng)的index file里的統(tǒng)計(jì)信息
Usage: samtools idxstats <in.bam>
用法:
samtools idxstats test.sort.bam
結(jié)果返回一個(gè)表格,4列。
第一列:序列名
第二列:序列長(zhǎng)度
第三列:比對(duì)上的reads數(shù)
第四列:未必對(duì)數(shù)目
14、stats
作用:對(duì)bam文件做詳細(xì)統(tǒng)計(jì),其統(tǒng)計(jì)結(jié)果可用mics/plot-bamstats作圖
用法:
samtools stats test.bam
輸出的信息比較多,部分如下:
Summary Numbers,raw total sequences,filtered sequences, reads mapped, reads mapped and paired,reads properly paired等信息
Fragment Qualitites:根據(jù)cycle統(tǒng)計(jì)每個(gè)位點(diǎn)上的堿基質(zhì)量分布
Coverage distribution:深度為1,2,3,,,的堿基數(shù)目
ACGT content per cycle:ACGT在每個(gè)cycle中的比例
Insert sizes:插入長(zhǎng)度的統(tǒng)計(jì)
Read lengths:read的長(zhǎng)度分布