65.《Bioinformatics Data Skills》之使用samtools提取与过滤比对结果

上节我们已经知道samtools view命令可以用于转换sam与bam文件类型,其实samtools view还可以用于提取与过滤比对结果,下面让我们了解一下。

数据地址

提取比对结果

NA12891_CEU_sample.bam文件为例,我们首先建立该文件的索引:

$ samtools index NA12891_CEU_sample.bam

接着提取特定区域(例如1:200000000-250000000)的比对结果:

$ samtools view NA12891_CEU_sample.bam 1:200000000-250000000 | head -n3 |
cut -f1-9
SRR005672.8895  99      1       215622850       60      51M     =       215623041       227
SRR010927.10846964      163     1       215622860       60      35M16S  =       215622892       83
SRR005674.4317449       99      1       215622863       37      51M     =       215622987       175

提取的区域结果后可以生成bam文件存放:

$ samtools view -b NA12891_CEU_sample.bam 1:200000000-250000000 > test.bam

此外,我们也可以通过存储区域信息的BED文件来指定需要提取的区域:

$ samtools view -L USH2A_exons.bed NA12891_CEU_sample.bam | head -n3 | cut -f1-9
SRR003214.11652876      163     1       215796180       60      76M     =       215796224       92
SRR010927.6484300       163     1       215796188       60      51M     =       215796213       76
SRR005667.2049283       163     1       215796190       60      51M     =       215796340       201

过滤比对结果

通过对bam文件进行过滤可以保留我们需要的信息,这里用到之前学习的bitwise flag,例如unmap的bitwise flag值为:

$ samtools flags unmap
0x4     4       UNMAP

通过-f参数指定bitwise flag值就可以提取unmap的比对信息:

$ samtools view -f 4 NA12891_CEU_sample.bam | head -n3 | cut -f1-9
SRR003208.1496374       69      1       215623168       0       35M16S  =       215623168       0
SRR002141.16953736      181     1       215623191       0       40M11S  =       215623191       0
SRR002143.2512308       181     1       215623216       0       *       =       215623216       0

上面结果的第二列为bitwise flag信息,虽然数字不同,但是每个数字都应该包含了unmap,例如69代表:

$ samtools flags 69
0x45    69      PAIRED,UNMAP,READ1

通过-F参数可以给出相反的结果,例如保留已经mapped的read:

$ samtools view -F 4 NA12891_CEU_sample.bam | head -n3 | cut -f1-9
SRR005672.8895  99      1       215622850       60      51M     =       215623041       227
SRR010927.10846964      163     1       215622860       60      35M16S  =       215622892       83
SRR005674.4317449       99      1       215622863       37      51M     =       215622987       175

此外,我们可以通过多个信息来过滤read,例如paired,read1,proper_pair对应的bitwise flag为:

$ samtools flags paired,read1,proper_pair
0x43    67      PAIRED,PROPER_PAIR,READ1

满足此信息的read结果为:

$ samtools view -f 67 NA12891_CEU_sample.bam | head -n3 | cut -f1-9
SRR005672.8895  99      1       215622850       60      51M     =       215623041       227
SRR005674.4317449       99      1       215622863       37      51M     =       215622987       175
SRR010927.10846964      83      1       215622892       60      51M     =       215622860       -83

注意:使用组合信息的时候要谨慎,例如非proper_pair的read实际上也会包含unmap与unpair的read,需要仔细了解这些信息的含义。

你可能感兴趣的:(65.《Bioinformatics Data Skills》之使用samtools提取与过滤比对结果)