为什么 R 中的 pileup() 函数会过度计数读取?
Why is pileup() function in R over-counting reads?
Pileup() 函数过度计算了变异位置的读取数。
(我从某人那里继承了这段代码。)
我查看了 pileup 参数,但 none 似乎导致了多算。
我在 IGV 中可视化变体,发现读取数量与 pileup 报告的不匹配。当 Pileup 报告读取次数较少(即 3 或 8)的变体的读取计数时,它是准确的。 Pileup 在报告具有大量读取(即 20、60)的变体的读取计数时不准确。
res <- pileup( bf, snp,
scanBamParam=ScanBamParam( flag = scanBamFlag( hasUnmappedMate=F, isProperPair=T, isDuplicate=F ), which = snp ),
pileupParam=PileupParam( distinguish_strands=F, min_base_quality=10, max_depth=1e4 ) )
其中 bf 是 bam 文件,snp 是列出找到的所有 snps 的 grange 对象。
> bf
class: BamFile
path: Sample_4.split.bam
index: Sample_4.split.bai
isOpen: FALSE
yieldSize: NA
obeyQname: FALSE
asMates: FALSE
qnamePrefixEnd: NA
qnameSuffixStart: NA
> head(snp)
GRanges object with 6 ranges and 5 metadata columns:
seqnames ranges strand | paramRangeID REF
<Rle> <IRanges> <Rle> | <factor> <DNAStringSet>
rs13475703 chr1 5124338 + | <NA> A
rs6408157 chr1 9547068 + | <NA> A
ALT QUAL FILTER
<DNAStringSetList> <numeric> <character>
rs13475703 G 233.77 PASS
rs6408157 G 52.77 PASS
-------
seqinfo: 66 sequences from mm10 genome
> res[66,]
seqnames pos nucleotide count which_label
66 chr1 87942764 G 61 chr1:87942764-87942764
对于上面的示例,对于 chr1:87942764 处的 G 变体,pileup 报告了 61 个读取。当我在 IGV 中打开 bam 文件时,我只计算了 41 个支持 G 变体的读取。
没有错误信息。只是报告的计数与我在 IGV 中看到的不匹配。
正如用户 merv 评论的那样:您是否将 IGV 配置为显示所有读数(查看 > 首选项... > 比对轨道选项 > 下采样读数)? IGV 的默认设置是对读取进行下采样,因此可视化可能没有显示所有实际读取。
当我取消选中 "filter vendor failed reads" 时,读取计数与 pileup 报告的相匹配。谢谢 merv.
Pileup() 函数过度计算了变异位置的读取数。 (我从某人那里继承了这段代码。)
我查看了 pileup 参数,但 none 似乎导致了多算。 我在 IGV 中可视化变体,发现读取数量与 pileup 报告的不匹配。当 Pileup 报告读取次数较少(即 3 或 8)的变体的读取计数时,它是准确的。 Pileup 在报告具有大量读取(即 20、60)的变体的读取计数时不准确。
res <- pileup( bf, snp,
scanBamParam=ScanBamParam( flag = scanBamFlag( hasUnmappedMate=F, isProperPair=T, isDuplicate=F ), which = snp ),
pileupParam=PileupParam( distinguish_strands=F, min_base_quality=10, max_depth=1e4 ) )
其中 bf 是 bam 文件,snp 是列出找到的所有 snps 的 grange 对象。
> bf
class: BamFile
path: Sample_4.split.bam
index: Sample_4.split.bai
isOpen: FALSE
yieldSize: NA
obeyQname: FALSE
asMates: FALSE
qnamePrefixEnd: NA
qnameSuffixStart: NA
> head(snp)
GRanges object with 6 ranges and 5 metadata columns:
seqnames ranges strand | paramRangeID REF
<Rle> <IRanges> <Rle> | <factor> <DNAStringSet>
rs13475703 chr1 5124338 + | <NA> A
rs6408157 chr1 9547068 + | <NA> A
ALT QUAL FILTER
<DNAStringSetList> <numeric> <character>
rs13475703 G 233.77 PASS
rs6408157 G 52.77 PASS
-------
seqinfo: 66 sequences from mm10 genome
> res[66,]
seqnames pos nucleotide count which_label
66 chr1 87942764 G 61 chr1:87942764-87942764
对于上面的示例,对于 chr1:87942764 处的 G 变体,pileup 报告了 61 个读取。当我在 IGV 中打开 bam 文件时,我只计算了 41 个支持 G 变体的读取。
没有错误信息。只是报告的计数与我在 IGV 中看到的不匹配。
正如用户 merv 评论的那样:您是否将 IGV 配置为显示所有读数(查看 > 首选项... > 比对轨道选项 > 下采样读数)? IGV 的默认设置是对读取进行下采样,因此可视化可能没有显示所有实际读取。
当我取消选中 "filter vendor failed reads" 时,读取计数与 pileup 报告的相匹配。谢谢 merv.