samtools的功能大全:查看bam文件外还能做什么

必须学习这篇英文:http://www.htslib.org/doc/samtools.html
【继续更新ing】

samtools view -h

查看bam文件,包含头文件,去掉-h,不包含

samtools view -h s.bam|less -S
samtools view s.bam|less -S
# 提取chr1染色体,生成只有chr1的bam文件
samtools view -h -b s.bam chr1 >s.chr1.bam
samtools view -bt ref_list.txt -o aln.bam aln.sam.gz

samtools view -c

-c print only the count of matching records;统计比对条数;结果等于samtools flagstat的总reads条数。

# 单端比对reads数目的统计
cuiqingmei 2019/10/09 10:57:10 /ifs9/BC_PS/cuiqingmei/ass/3.mapping/result_bam
$ samtools view -c CL100141207_L01_69.sort.bam
31504107
cuiqingmei 2019/10/09 10:57:38 /ifs9/BC_PS/cuiqingmei/ass/3.mapping/result_bam
$ zcat ../CL100141207_L01_69.fq.gz |wc -l
126016428
cuiqingmei 2019/10/09 11:02:26 /ifs9/BC_PS/cuiqingmei/ass/3.mapping/result_bam
$ echo "scale=4;126016428/4"|bc
31504107.0000
qmcui 12:07:32 /teach/project/1.rna/4.clean_data_25000reads
$ echo `zcat SRR1039510_1_val_1.100000.fq.gz|wc -l`/4|bc
25000
qmcui 12:08:12 /teach/project/1.rna/4.clean_data_25000reads
$ echo `zcat SRR1039510_2_val_2.100000.fq.gz|wc -l`/4|bc
25000
qmcui 12:45:49 /teach/project/1.rna/4.clean_data_25000reads
$ samtools view -c  ../5.sort.bam/SRR1039510.sort.bam 
55621

“Instead of printing the alignments, only count them and print the total number.” samtools view -c 算的不是reads,而是alignments数。当read有很多位置可以align上同时又都输出了,用samtools view -c 会比实际reads树木要多~~~ by: 严云

samtools view -F/-f 4

看下表,4是unmapped;所以我们-F(none of) 4就是找到map的reads数目
-q INT only include reads with mapping quality >= INT [0]
-m INT only include reads with number of CIGAR operations consuming
query sequence >= INT [0]
-f INT only include reads with all of the FLAGs in INT present [0]
-F INT only include reads with none of the FLAGS in INT present [0]
-G INT only EXCLUDE reads with all of the FLAGs in INT present [0]

So-f 4 only output alignments that areunmapped(flag 0x0004 is set) and -F 4only output alignments that are not unmapped (i.e. flag 0x0004 is not set), hence these would onlyinclude mapped alignments.

cuiqingmei 2019/10/09 11:02:58 /ifs9/BC_PS/cuiqingmei/ass/3.mapping/result_bam
$ samtools view -c CL100141207_L01_69.sort.bam -F 4
30441976
# 想知道有多少paired end reads有mate并且都有map时,可以使用-f 1 -F 12来过滤。
samtools view -c -f 1 -F 12 test.bam
# 12是   read unmapped、   mate unmapped;12=8+4
# Mapped reads only
$ samtools view -c -F 4 HG00173.chrom11.ILLUMINA.bwa.FIN.low_coverage.20111114.bam
5068340

# Unmapped reads only
$ samtools view -c -f 4 HG00173.chrom11.ILLUMINA.bwa.FIN.low_coverage.20111114.bam
149982
Flag Chr Description
0×0001 p the read is paired in sequencing
0×0002 P the read is mapped in a proper pair
0×0004 u the query sequence itself is unmapped
0×0008 U the mate is unmapped
0×0010 r strand of the query (1 for reverse)
0×0020 R strand of the mate
0×0040 1 the read is the first read in a pair
0×0080 2 the read is the second read in a pair
0×0100 s the alignment is not primary
0×0200 f the read fails platform/vendor quality checks
0×0400 d the read is either a PCR or an optical duplicate

samtools sort

bam文件必须排序
一般按照默认参数,控制线程数均可,-@ 5即5个线程。
-n Sort by read name:按照reads名字来排序
-l INT Set compression level, from 0 (uncompressed) to 9 (best):设置压缩倍数
-m INT Set maximum memory per thread; suffix K/M/G recognized [768M]:
Usage: samtools sort [-n] [-m <maxMem>] <in.bam> <out.prefix>
-m 参数默认下是 500,000,000 即500M(不支持K,M,G等缩写)。对于处理大数据时,如果内存够用,则设置大点的值,以节约时间。
-n 设定排序方式按short reads的ID排序。默认下是按序列在fasta文件中的顺序(即header)和序列从左往右的位点排序。

$ samtools sort -@ 5  -o output.sort.bam input.sam
$ samtools sort -@ 5  -o output.sort.bam input.bam
# 排序sam,bam均可,而且排序后结果默认生成bam
# samtools sort -T /tmp/aln.sorted -o aln.sorted.bam aln.bam

samtools flags

explain BAM flags:解释bam文件第二列标签的含义

cuiqingmei 2019/10/09 11:51:33 
$ samtools flags 4  
0x4 4   UNMAP
cuiqingmei 2019/10/09 11:52:44
$ samtools flags 355
0x163   355 PAIRED,PROPER_PAIR,MREVERSE,READ1,SECONDARY

samtools index

给sam或者bam文件建立索引,一般下游程序需要位置信息的时候,就必须在bam同目录下存在bai索引文件。

# samtools 1.8版本
$ samtools index
Usage: samtools index [-bc] [-m INT] <in.bam> [out.index]
Options:
  -b       Generate BAI-format index for BAM files [default]
  -c       Generate CSI-format index for BAM files
  -m INT   Set minimum interval size for CSI indices to 2^INT [14]
  -@ INT   Sets the number of threads [none]
cuiqingmei 2019/10/09 11:56:21 /ifs9/
$ samtools index CL100141207_L01_69.sort.bam

samtools idxstat

结果解释:reference sequence name, sequence length, # mapped reads and # unmapped reads,\t分割

$ samtools idxstats CL100141207_L01_69.sort.bam   
chr1    249250621   2443169 0
chr2    243199373   2575343 0
chr3    198022430   2018108 0
chr4    191154276   1987277 0
chr5    180915260   1838927 0
...
*   0   0   1062131

samtools markdup

去重

EXAMPLE

# The first sort can be omitted if the file is already name ordered
samtools sort -n -o namesort.bam example.bam


# Add ms and MC tags for markdup to use later
samtools fixmate -m namesort.bam fixmate.bam
# -m:Add ms (mate score) tags. These are used by markdup to select the best reads to keep.

# Markdup needs position order
samtools sort -o positionsort.bam fixmate.bam


# Finally mark duplicates
samtools markdup positionsort.bam markdup.bam

samtools rmdup:过时

samtools rmdup [-sS] <input.srt.bam> <out.bam>
This command is obsolete. Use markdup instead.命令过时,最好不要再使用。


值得学习翻译链接:
http://qnot.org/2012/04/14/counting-the-number-of-reads-in-a-bam-file/
http://www.htslib.org/doc/samtools.html

还可以学习:http://www.chenlianfu.com/?p=1399

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351