samtools,bedtools

1 samtools

• SAM全称是Sequence Alignment/Map, 是目前最常用的存放比对或联配数据的格式。无论是重测序,还是转录组,还是表观组, 几乎所有流程都会产生SAM/BAM文件作为中间步骤,然后是后续专门的分析过程。

• 顾名思义samtools就是用于处理sam与bam格式的工具软件,能够实现二进制查看、格式转换、排序及合并等功能,结 合sam格式中的flag、tag等信息,还可以完成比对结果的统计汇总。同时利用linux中的grep、awk等操作命令, 还可以大大扩展samtools的使用范围与功能。比如结构变异,基因融合,SNP/INDEL calling检测等


samtools,bedtools_第1张图片
sam文件格式

其中第二列是常用的基因比对情况打分


samtools,bedtools_第2张图片

这里需要注意,计算比对情况时每次都需要使用总值减去可以减的最大值,最后得到的结果即是序列的比对情况
#view功能可查看sam文件或者进行bam文件转化
/software/samtools-1.3/samtools view /home/tech/NGS-example/AS_example/231ESRP.25K.rep-1.bam |less -s

#提取比对到参考序列上的比对结果 
samtools view  -bF 4 abc.bam > abc.F.bam 

#提取paired reads中两条reads都比对到参考序列上的比对结果,只需要把两个4+8的值#12作为过滤参数即可 
samtools view  -bF 12 abc.bam > abc.F12.bam 

#提取没有比对到参考序列上的比对结果 
samtools view  -bf 4 abc.bam > abc.f.bam 

#提取bam文件中比对到caffold1上的比对结果,并保存到sam文件格式 
samtools view  abc.bam scaffold1 > scaffold1.sam 

#提取scaffold1上能比对到30k到100k区域的比对结果 samtools view  abc.bam scaffold1:30000-100000 > scaffold1_30k-100k.sam

#统计bam文件中的比对flag信息,并输出比对统计结果 
/software/samtools-1.3/samtools flagstat toy.bam

#一般sam转换bam直接用sort函数,排序之后输出bam文件
/software/samtools-1.3/samtools sort -o toy.bam toy.sam

#对排序后的bam文件建立index,并输出为bai文件,用于快速随机处理。
/software/samtools-1.3/samtools index toy.bam

#统计reads数
samtools idxstats toy.bam | awk '{s+=$3+$4}'END'{print s}'

2 bedtools

• bedtools的功能非常强大,试图解决你所遇到的所有和基因组位置运算的问题以及周边问题:基因组运算,多文件比较,PE数据操作,格式转换,Fasta数据操作,BAM工具,统计学相关工具,其他小工具

• bedtools总共有二三十个工具/命令来处理基因组数据。比较典型而且常用的功能举例如下:格式转换,bam转bed(bamToBed),bed转其他格式(bedToBam,bedToIgv);对基因组坐标的逻辑运算,包括:交集(intersectBed,windowBed),”邻集“(closestBed),补集(complementBed),并集(mergeBed),差集(subtractBed);计算覆盖度(coverage)(coverageBed,genomeCoverageBed)

• bedtools的核心是基因组运算,所谓的基因组运算,就是看看看自己手头拿到的区域和你感兴趣的区域的关系如何。 bedtools提供了如下工具做一系列你想到或者你想不到的事情。

• bed格式一般主要包含了基因的染色体定位信息,包括染色体定位,起始位点以及终止位点等信息,便于对整条染色体的基因覆盖情况进行了解

#取交集
bedtools intersect -a a.bed -b b.bed
chr1    100 101 a2  2   -
chr1    100 110 a2  2   -

#输出overlap中a的序列
bedtools intersect -a a.bed -b b.bed -wa

#输出overlap中b的序列
bedtools intersect -a a.bed -b b.bed -wb

#输出两段序列中重复的部分
bedtools intersect -a a.bed -b b.bed -wa -wb

bedtools window命令,顾名思义,是扩展一个窗口;功能与intersect相似,是对A文件中每个元素 的位置坐标扩展,捕获B文件中与A有overlap的元素;如,寻找lncRNA的顺式靶基因
bedtools window -a a.bed -b b.bed
chr1    10  20  a1  1   +   chr1    20  30  b1  1   +
chr1    10  20  a1  1   +   chr1    90  101 b2  2   -
chr1    10  20  a1  1   +   chr1    100 110 b3  3   +
chr1    10  20  a1  1   +   chr1    200 210 b4  4   +
chr1    100 200 a2  2   -   chr1    20  30  b1  1   +
chr1    100 200 a2  2   -   chr1    90  101 b2  2   -
chr1    100 200 a2  2   -   chr1    100 110 b3  3   +
chr1    100 200 a2  2   -   chr1    200 210 b4  4   +

你可能感兴趣的:(samtools,bedtools)