【发布时间】:2018-07-21 03:20:01
【问题描述】:
我使用bwa mem 算法将我的读取映射到我的程序集,并使用samtools depth 提取每个碱基的读取数(= 覆盖率)。生成的文件如下:
1091900001 1 236
1091900001 2 245
1091900001 3 265
1091900001 4 283
1091900001 5 288
1091900002 1 297
1091900002 2 312
1091900002 3 327
1091900002 4 338
1091900002 5 348
包含三列:contig 的名称(因为它是一个多 contig 文件,所以此 ID 会发生变化)- 位置(碱基)- 映射的读取数(覆盖率)。
现在我想计算滑动窗口的覆盖率(第三列);窗口大小为 3,滑动量为 2 作为平均值 - 每个重叠群(第一列)。
我想使用zoo包的rollapply函数。
require(zoo)
cov <- read.table("file",header=FALSE, sep="\t", na.strings="NA", dec=".", strip.white=TRUE)
library(reshape) #loads the library to rename the column names
cov<-rename(cov,c(V1="Chr", V2="locus", V3="depth")) #renames the header
rollapply(cov$depth, width = 3, by = 2, FUN = mean, align = "left")
但这当然没有考虑重叠群。另外,我的预期输出应该包括 contig-info 和窗口,它是计算出来的:
1091900001 1 3 248.6667
1091900001 3 5 278.6667
1091900002 1 3 312.0000
1091900002 3 5 337.6667
在R 中是否有一种简单的方法可以做到这一点?
【问题讨论】:
标签: r bioinformatics rollapply