Samtools 命令详解

samtools 命令详解
samtools 常用命令总结
samtools

view

重要参数释义:

-b:输出bam格式,用于后续分析
-C:输出CRAM文件
-1:快速压缩(需要-b)
-u:输出未压缩的bam文件,节约时间,占据较多磁盘空间(需要-b)
-h:默认输出sam文件不带表头,该参数设定后输出带表头信息
-H:仅仅输出表头信息
-c:仅打印匹配数
-o:输出文件(stdout标准输出)
-U:输出没有经过过滤选择的reads
-t:制表分隔符文件(需要提供额外的参考数据,比如参考基因组的索引)
-L:仅包括和bed文件有重叠的reads
-r:仅输出在STR读段组中的reads
-R:仅输出特定reads
-q:定位的质量大于INT[默认0]
-l:仅输出在STR 库中的reads
-F:获得比对上(mapped)的过滤设置[默认0]
-f:获得未必对上(unmapped)的过滤设置[默认0]
-T:使用fasta格式的参考序列

例子如下
  • bam文件转换为sam文件
samtools view -h smallNA06985  > test.sam
  • sam文件转换为bam文件
# converting sam to bam and sort as well
ls *.sam | while read i 
do (samtools sort -O bam -@ 10 -o $(basename ${i} ".sam").bam ${i})
done

# building index
ls *.bam | xargs -i samtools index {}
ls *.bam | while read i; do samtools flagstat -@ 10 $i >  $(basename ${i} ".bam").flagstat; done
  • 提取比对到参考基因组上的数据
samtools view -bF 4 test.bam > test.F.bam
  • 提取没有比对到参考基因组上的数据
samtools view -bf 4 test.bam > test.f.bam
  • 双端reads都比对到参考基因组上的数据
samtools view -bF 12 test.bam > test.12.bam 
## 提取paired reads中两条reads都比对到参考序列上的比对结果,只需要把两个4+8的值12作为过滤参数即可,但其实我们双端测序的数据是需要取PE map到同一个fragment的reads
samtools view -bf 2 test.bam > test.f2.bam 
  • 单端测序筛掉低质量的数据
samtools view -bF 4 abc.bam > abc.F.bam
  • 单端reads1比对到参考基因组上的数据
samtools view -bF 4 -f 8  test .bam > test1.bam
  • 单端reads2比对到参考基因组上的数据
samtools view -bF 8 -f 4 test.bam > test2.bam

merge

bam文件的header section用不同的tag表示不同的信息,主要有@HD,说明符合标准的版本、对比序列的排列顺序;@SQ,参考序列说明;@RG,比对上的序列(read)说明;@PG,使用的程序说明;@CO,任意的说明信息

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

Usage:   samtools merge [-nr] [-h inh.sam]   [...]

Options: 
-n       sort by read names
-r       attach RG tag (inferred from file names) #@RG,比对上的序列(read)说明
-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  [in1.bam] #指定FILE内的’@’头复制到输出bam文件中并替换输出文件的文件头。否则,输出文件的文件头将从第一个输入文件复制过来;

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.

ls *.rmdup.bam| cut -d "_" -f 1-2 | sort -u | while read i; do (samtools merge $i.merge.bam $i*.rmdup.bam); done

待合并的bam文件,必须有与其对应的index文件。
samtools merge [-nur1f] [-h inh.sam] [-R reg] [-b ] [
-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

在实际操作中,我是使用yz教我的办法,在刚开始的时候就用cat命令,将两个测序文件merge到一起

ls
HiC_rep1_run1_1.fastq.gz  HiC_rep1_run3_1.fastq.gz  HiC_rep2_run1_1.fastq.gz  HiC_rep2_run3_1.fastq.gz
HiC_rep1_run1_2.fastq.gz  HiC_rep1_run3_2.fastq.gz  HiC_rep2_run1_2.fastq.gz  HiC_rep2_run3_2.fastq.gz
HiC_rep1_run2_1.fastq.gz  HiC_rep1_run4_1.fastq.gz  HiC_rep2_run2_1.fastq.gz
HiC_rep1_run2_2.fastq.gz  HiC_rep1_run4_2.fastq.gz  HiC_rep2_run2_2.fastq.g

ls HiC*gz | cut -d "_" -f 1-2 | sort -u | while read i; do zcat ${i}_*_1.fastq.gz | gzip -c > ${i}_1.fastq.gz; zcat ${i}_*_2.fastq.gz | gzip -c > ${i}_2.fastq.gz; done

你可能感兴趣的:(Samtools 命令详解)