前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在R里面对坐标进行映射

在R里面对坐标进行映射

作者头像
生信技能树
发布2018-12-25 16:53:29
8260
发布2018-12-25 16:53:29
举报
文章被收录于专栏:生信技能树生信技能树

比如把自己制作好的bam文件的坐标,跟提取自gtf文件的坐标信息对应起来,使用GenomicRanges包自带的函数即可。

代码语言:javascript
复制
ann1 <- data.frame(
  GeneID=c("gene1","gene1","gene2","gene2"),
  Chr="chr_dummy",
  Start=c(100,1000,3000,5000),
  End=c(500,1800,4000,5500),
  Strand=c("+","+","-","-"),
  stringsAsFactors=FALSE)
ann1
ann1 <- with(ann1, GRanges(as.character(Chr), 
                            IRanges(as.numeric(Start), as.numeric(End)), 
                            as.character(Strand), 
                            id = as.character(GeneID)))
ann1
ann2 <- data.frame(
  peakID=c("peak1","peak1","peak2","peak2"),
  Chr="chr_dummy",
  Start=c(50,1500,3100,5400),
  End=c(400,1900,4700,5500),
  Strand=c("+","+","-","-"),
  stringsAsFactors=FALSE)
ann2
ann2 <- with(ann2, GRanges(as.character(Chr), 
                           IRanges(as.numeric(Start) , as.numeric(End)), 
                           as.character(Strand), 
                           id = as.character(peakID)))
ann2


gr3 = intersect(ann1,ann2)
gr3
library(ChIPpeakAnno)
o = findOverlaps(ann1,ann2)
str(o)
lo=cbind(as.data.frame(ann1[queryHits(o)]),
         as.data.frame(ann2[subjectHits(o)]))
head(lo) 
gr3

这里的重点其实是grange对象和intersectfindOverlaps函数的使用。

关于 grange对象

三年前我在生信菜鸟团博客就多次强调过这个重点了,在R里面处理生物信息学数据是躲不过这个定义的,有点类似于各式各样的生物信息学文件格式,是一个标准。

对这个grange对象也会有很多很多的方法,假设有一个grange对象命名为exon_txdb,来自于代码

代码语言:javascript
复制
library("TxDb.Hsapiens.UCSC.hg19.knownGene")
txdb <- TxDb.Hsapiens.UCSC.hg19.knownGene
exon_txdb=exons(txdb)
genes_txdb=genes(txdb)

那么操作它的函数有:

  • seqnames(exon_txdb)返回一个class 'Rle' [package "S4Vectors"] with 4 slots,有93个染色体信息,以及每条染色体上面有多少个外显子信息
  • ranges(exon_txdb)返回外显子的起始终止位点,长度,以及其它信息,也是一个对象class 'IRanges' [package "IRanges"] with 6 slots
  • strand(exon_txdb)返回外显子的正负链信息,要么在正链要么在负链
  • mcols(exon_txdb)返回exon的id编号,1到27750个
  • seqlengths(exon_txdb)返回每条染色体的长度信息
  • names
  • length

GRanges对象还有很多其它类型的操作,非常好玩的,split,shift,resize,flank,reduce,gaps,disjoin,coverage 其它求交集并集和都可以用,union,intersect,setdiff,pintersect,psetdiff

关于 `findOverlaps`函数

本来应该是ChIPpeakAnno包带有的一个非常实用的peaks分析小工具,在我的GitHub很早以前关于ChIP-seq分析流程代码分析里面有提到。

https://github.com/jmzeng1314/NGS-pipeline

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于 grange对象
  • 关于 `findOverlaps`函数
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档