否则会报错
2, 将sam文件转化为bam文件
samtools view -bS in.sam > in.bam
是view的一个应用-b指定输出文件为bam, -S 指定输入文件为sam
3, 查看bam文件的header信息
samtools view -H in.bam
samtools view -h in.bam|les
查看头文件:samtools view -H xx.bam > header
samtools view查看bwa比对结果中比对上基因组的unique mapped reads
samtools view xx.bam |grep "XT:A:U" | wc -l
view功能扩展:
a.提取没有比对到参考序列上的比对结果 $ samtools view -bf 4 abc.bam > abc.f.bam
b.提取比对到参考序列上的比对结果 $ samtools view -bF 4 abc.bam > abc.F.bam
c.提取paired reads中两条reads都比对到参考序列上的比对结果,只需要把两个4+8的值12作为过滤参数即可 $ samtools view -bF 12 abc.bam > abc.F12.bam
d.提取bam文件中比对到caffold1上的比对结果,并保存到sam文件格式 $ samtools view abc.bam scaffold1 > scaffold1.sam
e.提取scaffold1上能比对到30k到100k区域的比对结果 $ samtools view abc.bam scaffold1:30000-100000 $gt; scaffold1_30k-100k.sam
f.根据fasta文件,将 header 加入到 sam 或 bam 文件中 $ samtools view -T genome.fasta -h scaffold1.sam > scaffold1.h.sam
4, 将bam文件进行sort
只能对bam文件进行sort, 不能对sam文件。
samtools sort aln.bam anl.sorted #默认是根据coordinate进行sort, 如果输入bam文件为in.bam , 则输出文件名为in.sorted.bam
如果要按照read name进行sort, 需要加-n, 如heseq-count 就要求文件时按照read name 而不是coordinate。
samtools sort -n aln.bam anl.sorted
5, 去除bam文件中pcr导致的重复reads信息
samtools rmdup in.bam in.rmp.bam
6, 合并bam文件
samtools merge out.bam in1.bam in2.bam in3.bam # 假如in1.bam, in2.bam, in3.bam是某个某样本的三个重复,我们可以将他们合并为一个bam文件。
samtools merge -R chr1 out.bam in1.bam in2.bam in3.bam # 如果想对部分合并,如至合并一号染色的上的bam文件合并,chr1必须为序列的名字,一号染色体序列的名字为Chr1,那么就应为-R Chr1
samtools merge -h in.sam out.bam in1.bam in2.bam ...
注意: 要合并的bam文件,必须有对应的index文件。否则会出现:
[bam_index_load] fail to load BAM index.
Segmentation fault (core dumped)的错误
7, 对bam文件建立index
samtools index in.bam #结果文件名为in.bam.bai
8.取出bam文件的一部分
samtools view -b your.bam Chr1 > Chr1.bam
-b 指定是输出文件为bam, Chr1指定你要看的是那一部分, 这里指看Chr1那一部分,然后重定向到一个新的bam文件,注意,这个bam文件是没有header的,如果想要包括header 可以使用-h参数。
9.flagstat
samtools flagstat
输出in.bam文件的比对信息表