[SAMtools] 常用指令總結


源自:http://sanwen.net/a/hirxmpo.html

samtools是一系列處理bam和sam格式文件的應用程序集合,具有眾多的功能。

首先呢,bam和sam文件主要是bwa、bowtie、tophat等序列比對工具產生的,這些軟件我們后面會談到。

軟件下載安裝:

地址:https://sourceforge.net/projects/samtools/

解壓下載后的壓縮文件,然后你會看到README文件,里面有詳細的安裝操作說明。

安裝成功后,運行samtools,你會看到:


目前最新版本是1.3.1

下面我們針對samtools的主要命令以及參數做個實例演示。

操作文件下載:

wget http://popgen.dk/software/download/angsd/bams.tar.gz

解壓后,在bams文件夾下,你會看到10個bam文件:


名字太復雜,進行批量重命名

rename "s/.mapped.ILLUMINA.bwa.CEU.low_coverage.20111****14.bam//" *

結果如下:


1、view

主要功能:sam和bam文件之間相互轉換,針對bam文件進行相關操作。bam文件是sam文件的二進制格式,占據內存較小且運算速度快。

查看view的主要參數:


重要參數釋義:

-b:輸出bam格式,用於后續分析

-C:輸出CRAM文件

-1:快速壓縮(需要-b)

-u:輸出未壓縮的bam文件,節約時間,占據較多磁盤空間(需要-b)

-h:默認輸出sam文件不帶表頭,該參數設定后輸出帶表頭信息

-H:僅僅輸出表頭信息

-c:僅打印匹配數

-o:輸出文件(stdout標准輸出)

-U:輸出沒有經過過濾選擇的reads

-t:制表分隔符文件(需要提供額外的參考數據,比如參考基因組的索引)

-L:僅包括和bed文件有重疊的reads

-r:僅輸出在STR讀段組中的reads

-R:僅輸出特定reads

-q:定位的質量大於INT[默認0]

-l:僅輸出在STR 庫中的reads

-F:獲得比對上(mapped)的過濾設置[默認0]

-f:獲得未必對上(unmapped)的過濾設置[默認0]

-T:使用fasta格式的參考序列

……

實例演示:

bam文件轉換為sam文件

samtools view -h smallNA06985  > test.sam

sam文件轉換為bam文件

samtools view -bS -1 test.sam > test.bam

提取比對到參考基因組上的數據

samtools view -bF 4 test.bam > test.F.bam

提取沒有比對到參考基因組上的數據

samtools view -bf 4 test.bam > test.f.bam

雙端reads都比對到參考基因組上的數據

samtools view -bF 12 test.bam > test.12.bam

單端reads1比對到參考基因組上的數據

samtools view -bF 4 -f 8  test .bam > test1.bam

單端reads2比對到參考基因組上的數據

samtools view -bF 8 -f 4 test.bam > test2.bam

 

2、sort

主要功能:對bam文件進行排序(不能對sam文件進行排序)


主要參數釋義:

-l:設置文件壓縮等級,0不壓縮,9壓縮最高

-m:每個線程運行內存大小(可使用K M G表示)

-n:按照read名稱進行排序

-o:排序后的輸出文件

-T:PREFIX臨時文件前綴

-@:設置排序和壓縮的線程數,默認單線程

用法:

samtools sort  -l 9 -m 90M -n -o test.sort.bam -T sorted -@ 2  test.bam

上述含義是:壓縮最高級9、每一個線程內存90Mb、輸出文件名test.sort.bam、臨時文件前綴sorted、線程數2。

當然,最簡單命令:

samtools sort test.bam -o test.sort.bam

 

3、index

主要功能:對bam文件建立索引,但在此之前必須進行排序(sort),生成后綴是.bai的文件。


參數釋義:

-b:創建一個.bai格式的索引文件(默認)

-c:創建.csi格式的索引文件

-m:創建.csi文件,索引的最小間隔值

用法:

samtools index test.sort.bam

 

4、merge

功能:合並多個已經sort的bam文件

當有多個樣本的bam文件時,可以使用samtools的merge命令將這些bam文件合並為一個排序的且保持所有輸入記錄並保持現有排序順序的bam文件。


主要參數釋義:

-n:輸入根據read排序的文件

-r:RG標簽添加到每個比對文件上,標簽值來自文件名

-u:輸出未壓縮的bam文件

-f:覆蓋同名文件

-1:壓縮等級1

-l:壓縮等級0-9

-R:合並輸入文件的指定區域

-h:FILE 指定FILE內的’@’頭復制到輸出bam文件中並替換輸出文件的文件頭

-c:多個輸入文件包含相同的@RG頭ID時,只保留第一個到合並后輸出的文件

-p:合並的每一個文件中的@PG ID只保留第一個文件中的@PG

-s:覆蓋隨機種子

-b:文件列表,一行一個

用法:

samtools merge merge.bam  smallNA06985.sort smallNA06994.sort

 

5、faidx

功能:對fasta格式的文件建立索引,后綴名.fai。根據索引文件和序列文件,可以快速提取任意區域的序列文件。

fasta序列格式要求:每條序列,除了最后一行外,其他行的長度必須相同!

為了方便,我們在NCBI上下載水稻NIP基因組的序列,進行演示:

地址:https://www.ncbi.nlm.nih.gov/genome/?term=rice

然后,進行解壓縮,重命名為seuence.fa

用法:

samtools faidx sequence.fa

最后生成一個sequence.fa.fai索引文件,一共5列,每列之間tab分割。


第一列:序列的名稱

第二列:序列長度

第三列:第一個鹼基的偏移量,從0開始計數

第四列:除了最后一行外,序列中每行的鹼基數

第五列:除了最后一行外,序列中每行的長度(包括換行符)

從中呢,我們可以有目的的提取序列:

提取水稻第一染色體:

samtools faidx sequence.fa Chr1 > Chr1.fa

提取水稻第一染色體100-200bp的序列:

samtools faidx sequence.fa Chr1:100-200 > Chr1_100_200.fa

 

6、tview

作用:直觀顯示reads比對到基因組的情況,和基因組瀏覽器有點類似。


-d:輸出類型

-p:直接定位給定位置

-s:reads顯示

當給出參考基因組的時候,會在第一排給出參考基因組的序列,否則第一排全用N表示。

首先利用sort進行排序后,在利用index建立索引后,用下面命令:

samtools tview test.sort.bam


具體操作:按下g鍵,如上界面,有一個Goto對話框,提示輸入要到達基因組的某一個位點。在這里,由於沒有提供參考基因組,第一排都是N。

我們可以使用H(左)J(上)K(下)L(右)移動顯示界面。大寫字母移動快,小寫字母移動慢。使用空格鍵向左快速移動,CTRL+H向左移動1KB,CTRL+L向右移動1KB。

此外,可以利用顏色來標注比對質量、鹼基質量、核苷酸等。

>=30的鹼基質量或比對質量使用白色表示

20-39的用黃色表示

10-19的用綠色表示

0-9的用藍色表示

使用字母r切換顯示read name等。

具體的操作說明可以?鍵查看。

7、flagstat

作用:reads的比對情況統計

Usage: samtools flagstat [--input-fmt-option OPT=VAL] <in.bam>

用法:

samtools flagstat test.sort.bam



解釋:

#總的reads

45456 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 secondary
0 + 0 supplementary
321 + 0 duplicates

#總體reads比對率

45293 + 0 mapped (99.64% : N/A)

#PEreads
45327 + 0 paired in sequencing

#read1

22670 + 0 read1 

#read2

22657 + 0 read2 

#PE reads比對到同一條參考序列,並且兩條reads之間的距離符合設置的閾值

44950 + 0 properly paired (99.17% : N/A) 

#PE中兩條都比對到參考序列上的reads數

45001 + 0 with itself and mate mapped

#單獨一條匹配到參考序列上的reads數,和上一個相加,則是總的匹配上的reads數。

163 + 0 singletons (0.36% : N/A)

#PE中兩條分別比對到兩條不同的參考序列的reads數

23 + 0 with mate mapped to a different chr

#PE中兩條分別比對到兩條不同的參考序列的reads數(比對質量>=5)

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

8、depth

作用:每個鹼基位點的測序深度


-a:輸出所有的鹼基深度(包括0)

-b/-r:控制深度的范圍(后面跟染色體)

-f:bam文件名字

-l:設置read長度閾值

-d/-m:最大覆蓋深度

-q:鹼基質量閾值

-Q:比對質量閾值

samtools depth -a -r 3 test.sort.bam 


結果是tab分割的三列

第一列:染色體名稱

第二列:鹼基位置

第三列:測序深度

9、mpileup

作用:對參考基因組每個位點做鹼基堆積,用於call SNP和INDEL。主要是生成BCF、VCF文件或者pileup一個或多個bam文件。比對記錄以在@RG中的樣本名作為區分標識符。如果樣本標識符缺失,那么每一個輸入文件則視為一個樣本。


主要參數釋義:

-A:在檢測變異中,不忽略異常的reads對

-C:用於調節比對質量的系數,如果reads中含有過多的錯配,不能設置為零

-D:輸出每個樣本的reads深度

-l:BED文件或者包含區域位點的位置列表文件

注意:位置文件包含兩列,染色體和位置,從1開始計數。BED文件至少包含3列,染色體、起始和終止位置,開始端從0開始計數。

-r:在指定區域產生pileup,需已建立索引的bam文件,通常和-l參數一起使用

-o/g/v:輸出文件類型(標准格式文件或者VCF、BCF文件)

-t:設置FORMAT和INFO的列表內容,以逗號分割

-u:生成未壓縮的VCF和BCF文件

-I:跳過INDEL檢測

-m:候選INDEL的最小間隔的reads

-f:輸入有索引文件的fasta參考序列

-F :含有間隔reads的最小片段

……

用法:

生成一個簡單的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、cat

作用:連接多個bam文件(不做排序)

Usage: samtools cat [-h header.sam] [-o out.bam] <in1.bam> [...]

用法:

samtools cat  -o out.bam smallNA06985 smallNA06994

12、split

作用:根據read group 分割bam文件


用法:

samtools split test.sort.bam 
13、quickcheck

作用:檢查SAM/BAM/CRAM文件的完整性


用法:

samtools quickcheck -v *.bam > bad_bams

14、fastq

作用:bam文件轉換為fastq


用法:

samtools fastq test.bam

15、fasta

作用:bam文件轉換為fasta


用法:

samtools fasta test.bam

16、idxstats

作用:檢索和打印與輸入文件相對應的index file里的統計信息

Usage: samtools idxstats <in.bam>

用法:

samtools idxstats test.sort.bam

結果返回一個表格,4列。


第一列:序列名

第二列:序列長度

第三列:比對上的reads數

第四列:未必對數目

 

17、stats

作用:對bam文件做詳細統計,其統計結果可用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:根據cycle統計每個位點上的鹼基質量分布
Coverage distribution:深度為1,2,3,,,的鹼基數目
ACGT content per cycle:ACGT在每個cycle中的比例
Insert sizes:插入長度的統計
Read lengths:read的長度分布

18、reheader

作用:替換bam文件的頭


用法:

samtools view -H test.bam > in.header.bam

samtools reheader -p -i in.header.bam test.bam

19、rmdup

作用:將由PCR duplicates 獲得的reads去掉,並保留高比對質量的reads


用法:

samtools rmdup -sS test.bam  output.bam

 

20、phase

作用:call雜合SNP,確定相位


用法:

samtools phase test.bam

 

21、calmad

作用:計算MD tag(a optional field,記錄了mismatch信息)


用法:

samtools calmd test.bam sequences.fa


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM