首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GenomicRanges中查找岛屿

在GenomicRanges中查找岛屿
EN

Stack Overflow用户
提问于 2019-07-19 16:07:21
回答 1查看 53关注 0票数 1

在GenomicRanges中,一个有趣的问题是基因岛的识别。

我正在尝试寻找相邻范围不超过特定距离的最大范围子集。为了解决这个问题,我尝试根据各个范围之间的差异来分配组。

我在IRanges包中搜索了合适的方法,但到目前为止还没有成功。

代码语言:javascript
复制
daf <- data.frame(seqnames="ConA",start=c(10,39,56,1000,5000),end=c(19,44,87,1100,5050),ID=paste0("Range",LETTERS[1:5]))
gr <- makeGRangesFromDataFrame(daf,keep.extra.columns=TRUE)
## Order the data frame by start column
oo <- order(daf$start)
daf <- daf[oo,]

# Calculate the distance
dd <- c(0,diff(daf$start))
daf$diff <- dd
daf$group <- rep(1,nrow(daf))

group <- 1
for(i in 1:nrow(daf)){
  if(daf$diff[i] > 500){
    group <- group + 1
  }
  daf$group[i] <- group
}

根据所分配的组,可以找到最大的组。您是否知道更好的解决方案,避免for循环?

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 22:34:26

我相信这会在没有循环的情况下完成您所期望的事情:

代码语言:javascript
复制
## Load library
library(GenomicRanges)

## Create the data
gr <- GRanges(seqnames="ConA",
              ranges=IRanges(start=c(10,39,56,1000,5000),
                             end=c(19,44,87,1100,5050),
                             names = paste0("Range",LETTERS[1:5])))

## Get the "start sites" = TSS.
## Use the promoters function if you need to take the strand into account:
grTSS <- promoters(gr, upstream = 0, downstream = 1)

## Create islands in which start sites are located less than 500bp apart
## If distance between start sites is <500bp then ranges of size 501bp centered on start sites overlap
islands <- reduce(grTSS + 250, ignore.strand = TRUE)
names(islands) <- paste0("island", 1:length(islands))

## Get the link between start sites and islands:
ovl <- findOverlaps(grTSS, islands, type = "within", ignore.strand = TRUE)

## Add the group info in the original GRanges object:
gr$group <- names(islands)[subjectHits(ovl)] 

在创建孤岛时可以考虑链信息:islands <- reduce(grstarts + 250, ignore.strand = FALSE)

我们可以直接使用基因边界(开始和结束),而不是只关注起始点/ TSS:islands <- reduce(gr + 250, ignore.strand = TRUE)

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57108141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档