samtools常见用法示例

samtools是 对SAM/BAM等格式进行各种相关操作的软件,功能最丰富。

1. samtools view

view命令的主要功能是:将sam文件转换成bam文件;然后对bam文件进行各种操作

1.1 查看header 命令

samtools view -H test.bam

1.2 将sam文件转换成bam文件

samtools view -bS test.sam > test.bam 
samtools view -b -S test.sam -o test.bam

# 自定义线程数
samtools view -@ 50 -bS test.sam >test.bam

-b output BAM; -S: ignored (input format is auto-detected)

1.3 提取特定位置的比对结果

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

# 线粒体
samtools view test.bam chrM > test.chrM.sam

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

## 根据基因所在位置,提取查看比对情况

1.4 根据比对情况提取

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

#提取paired reads中两条reads都比对到参考序列上的比对结果
samtools view -bF 12 test.bam > test.F12.bam

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

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

参数:

-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]
flag 含义

  • 1 :代表这个序列采用的是PE双端测序
  • 2: 代表这个序列和参考序列完全匹配,没有插入缺失
  • 4: 代表这个序列没有mapping到参考序列上
  • 8: 代表这个序列的另一端序列没有比对到参考序列上,比如这条序列是R1,它对应的R2端序列没有比对到参考序列上
  • 16:代表这个序列比对到参考序列的负链上
  • 32 :代表这个序列对应的另一端序列比对到参考序列的负链上
  • 64 : 代表这个序列是R1端序列, read1;
  • 128 : 代表这个序列是R2端序列,read2;
  • 256: 代表这个序列不是主要的比对,一条序列可能比对到参考序列的多个位置,只有一个是首要的比对位置,其他都是次要的
  • 512: 代表这个序列在QC时失败了,被过滤掉了
  • 1024: 代表这个序列是PCR重复序列
  • 2048: 代表这个序列有一部分嵌合了 PCR 引物

1.5 samtools flags 

查看flag值的意义

samtools flags 12
samtools flags 4
samtools flags 65

1.6 根据参考基因组加入header部分

#根据fasta文件,将 header 加入到 sam 或 bam 文件中
samtools view -T genome.fasta -h chr1.sam > chr1.h.sam

samtools view -T /data/ref/hg38/hg38.fa -h chr1.sam > chr1.h.sam

2. samtools sort

bam文件中,比对数据按在染色体上的位置排序

samtools sort -@ 50 test.bam -o test.sorted.bam

3. samtools merge

2个或2个以上的已经sort了的bam文件融合成一个bam文件。融合后的文件不需要则是已经sort过了的。

#合并test1.bam和test2.bam文件中,header部分来自test.sam
samtools merge -h test.sam merged.bam test1.sorted.bam test2.sroted.bam

#合并test1.bam和test2.bam文件中的指定区域
samtools merge -h test.sam -R chr1 merged.bam test1.sorted.bam test2.sroted.bam

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

  -h FILE    Copy the header in FILE to [in1.bam]

4. samtools index

 对bam文件创建索引,生成以.bai或者.crai为后缀的索引文件。必须使用排序后的文件,否则可能会报错。对sam文件建立索引,那么可以使用tabix命令创建。

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

 

5. samtools faidx

建立参考基因组索引

samtools faidx hg38.fa
# 生成hg38.fa.fai 索引文件

# 输出特定位置(gene/exon/intron/promoter)的序列
samtools faidx hg38.fa chr1:1000000-1000008

7.samtools tview

bam文件可视化

samtools tview -p Chr1:100000 test.bam test.ref.fasta 

8. samtools flagstat

根据bam文件flag统计比对结果

Usage: samtools flagstat [options]

samtools flagstat -@ 50 test.bam

参考

http://www.htslib.org/doc/samtools.html4

https://genome.sph.umich.edu/wiki/SAM

你可能感兴趣的:(生物信息学)