对sam/bam文件进行操作

对sam/bam文件进行操作

1、view
-b:输出bam格式,用于后续分析
-h:默认输出sam文件不带表头,该参数设定后输出带表头信息
sam文件转换为bam文件
samtools view -bS -1 test.sam > test.bam

1 view 从bam/sam文件中提取/打印部分比对结果。默认为所有的区域
常见参数:-b 输出bam格式文件,-u 以未压缩的格式输出 -h 增加文件表格的说名, -t 依据当前序列的特点加头(序列输入需要经过samtools faidx 处理过)

2、sort
主要功能:对bam文件进行排序(不能对sam文件进行排序)

3、index
主要功能:对bam文件建立索引,但在此之前必须进行排序(sort),生成后缀是.bai的文件。

index
为了能够快速访问bam文件,可以为已经基于坐标排序后bam或者cram的文件创建索引,生成以.bai或者.crai为后缀的索引文件。必须使用排序后的文件,否则可能会报错。另外,不能对sam文件使用此命令。如果想对sam文件建立索引,那么可以使用tabix命令创建。

Usage: samtools index [-bc] [-m INT] aln.bam |aln.cram [out.index]
Options:
  -b 创建bai索引文件,未指定输出格式时,此参数为默认参数;
  -c 创建csi索引文件,默认情况下,索引的最小间隔值为2^14,与bai格式一致;
  -m INT 创建csi索引文件,最小间隔值2^INT;

例子:

#创建bai索引
$ samtools index test_2.sorted.bam
$ smatools index -b test_2.sorted.bam
#创建csi索引
$ samtools index -c test_2.sorted.bam
$ samtools index -c -m 10 test_2.sorted.bam
以下两种命令结果一样

$ samtools index abc.sort.bam
$ samtools index abc.sort.bam abc.sort.bam.bai

作者:生物信息与编程
链接:https://www.jianshu.com/p/a3791cf16474
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

4、merge

功能:合并多个已经sort的bam文件

当有多个样本的bam文件时,可以使用samtools的merge命令将这些bam文件合并为一个排序的且保持所有输入记录并保持现有排序顺序的bam文件。
-h:FILE 指定FILE内的’@’头复制到输出bam文件中并替换输出文件的文件头
-c:多个输入文件包含相同的@RG头ID时,只保留第一个到合并后输出的文件
samtools merge merge.bam smallNA06985.sort smallNA06994.sort

merge
上面排好序,站好队了,哎(这两瘦的一样高,合成一个呗,省地儿),这就有了merge(纯属胡说八道!)!
官方如右:将2个或2个以上的已经sort了的bam文件融合成一个bam文件。融合后的文件不需要则是已经sort过了的。

01Usage: samtools merge [-nr] [-h inh.sam] <out.bam> <in1.bam> <in2.bam>[…]
03Options: -n sort by read names

     -r       attach RG tag (inferred from file names)

     -u       uncompressed BAM output

     -f       overwrite the output BAM if exist

     -1       compress level 1

     -R STR   merge file in the specified region STR [all]

     -h FILE  copy the header in FILE to <out.bam> [in1.bam]

11 Note: Samtools’ merge does not reconstruct the @RG dictionary in the header. Users must provide the correct header with -h, or uses Picard which properly maintains the header dictionary in merging. :注意:Samtools的合并不会在头文件中重建@RG字典。用户必须使用-h提供正确的头文件,或者使用Picard在合并时正确维护头文件字典。

4 merge:

对排序后的文件进行合并,如果bam文件有头,则必须一致,如果没有头,则可以用-h指向某一个文件
命令:samtools merge -h 1.bam bam1 bam2 bam3
-h:默认输出sam文件不带表头,该参数设定后输出带表头信息

三、将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
四、去除bam文件中pcr导致的重复reads信息
samtools rmdup in.bam in.rmp.bam
【先在这里建立index,建索引(必须是已经使用默认排序后的):】
五、合并bam文件,merge前必须是已经sort的文件
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

注意:要合并的bam文件,必须有对应的index文件。【!!!!!!】

samtools index in.bam #结果文件名为in.bam.bai

https://www.jianshu.com/p/c008fa53f9d9

当有多个样本的bam文件时,可以使用samtools的merge命令将这些bam文件进行合并为一个bam文件。。Merge命令将多个已经排序后的bam文件合并成为一个排序的且保持所有输入记录并保持现有排序顺序的bam文件。

Options:
  -1 指定压缩等级;
  -b FILE 输入文件列表,一个文件一行;
  -f overwrite the output BAM if exist 强制覆盖同名输出文件;
  -h FILE copy the header in FILE to <out.bam> [in1.bam]。 指定FILE内的’@’头复制到输出bam文件中并替换输出文件的文件头。否则,输出文件的文件头将从第一个输入文件复制过来;
  -n sort by read names。设定输入比对文件是以read名进行排序的而不是以染色体坐标排序的;
  -R STR merge file in the specified region STR [all]。合并输入文件的指定区域;
  -r attach RG tag (inferred from file names)。使RG标签添加到每一个比对文件上,标签值来自文件名;
  -u uncompressed BAM output。输出的bam文件不压缩;
  -c 当多个输入文件包含相同的@RG头ID时,只保留第一个到合并后输出的文件。当合并多个相同样本的不同文件时,非常有用。
  -p 与-c参数类似,对于要合并的每一个文件中的@PG ID只保留第一个文件中的@PG。
例子

#合并test_L1.bam和test_L2.bam文件
$ samtools merge -h test.sam
test_L1_L2.bam
test_L1.sorted.bam
test_L2.sroted.bam

#合并test_L1.bam和test_L2.bam文件中的指定区域chr7
$ samtools merge -h test.sam
-R chr7
test_L1_L2.bam
test_L1.sorted.bam
test_L2.sroted.bam

5、faidx

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

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

7、flagstat

作用:reads的比对情况统计

11、cat

作用:连接多个bam文件(不做排序)

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

14、fastq

作用:bam文件转换为fastq
15、fasta

作用:bam文件转换为fasta
17、stats

作用:对bam文件做详细统计,其统计结果可用mics/plot-bamstats作图

19、rmdup
samtools rmdup:::一般是sort.bam文件之后在去重!!!!!
作用:将由PCR duplicates 获得的reads去掉,并保留高比对质量的reads
1 Usage: samtools rmdup [-sS]
2 -s 对single-end reads。默认情况下,只对paired-end reads
3 -S 将Paired-end reads作为single-end reads处理。
4
5 $ samtools input.sorted.bam output.bam

    原文作者:qq_39306047
    原文地址: https://blog.csdn.net/qq_39306047/article/details/107615724
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞