芯片探针到基因组区段坐标的映射
最近接到粉丝求助,有一篇文献写到:We found that 16 differentially expressed genes (Table 2) represented by specific probe sets (‘_at’ suffix) mapped to previously reported linkage peaks on chromosomes 1p34, 5q12, 9q22, 9q34, 13q32, 14q32, and 20q13
也就是说,差异基因这个时候是由affymetrix的芯片探针表示,然后作者注释到了基因组区段,也就是 1p34, 5q12这样的标识,行话叫做:cytoBand。
ChromHeatMap 包 存放有 cytoBand坐标信息
早在教程:染色体全局可视化 ,我就提到过ChromHeatMap 包 存放有 cytoBand坐标信息,查看的代码如下:
# BiocManager::install('ChromHeatMap')
library('ChromHeatMap')
data("cytobands")
hc=cytobands[[1]]
head(hc)
可以看到是如下所示的数据框:
> head(hc)
chr start end band stain arm
1 chr1 0 2300000 36.33 gneg p
2 chr1 2300000 5300000 36.32 gpos25 p
3 chr1 5300000 7100000 36.31 gneg p
4 chr1 7100000 9200000 36.23 gpos25 p
5 chr1 9200000 12600000 36.22 gneg p
6 chr1 12600000 16100000 36.21 gpos50 p
其6个字段分别是:染色体编号(chr)、在染色体中的起始位置(start)、终止位置(end)、cM (band)、染色标识(stain),长臂短臂(arm, short (p) and long (q) )。
探针的坐标在各个芯片包也可以获得
比如 hgu133plus2.db 芯片包,如下:
library(hgu133plus2.db)
probe2pos=toTable(hgu133plus2CHRLOC)
head(probe2pos)
坐标如下:
> head(probe2pos)
probe_id start_location Chromosome
1 1053_at -74231501 7
2 1053_at -74231501 7
3 117_at 161524539 1
4 121_at -113215996 2
5 1255_g_at 42155376 6
6 1316_at 40062964 17
两个坐标在R里面使用grange进行overlap
初学者需要自己去读文档,了解 https://bioconductor.org/packages/release/bioc/html/GenomicRanges.html 包的方方面面,才能把它用好,而且用的妙。
需要首先把它们两个坐标转为 GRanges 对象,然后 findOverlaps 函数即可
library(GenomicRanges)
gr_probes= GRanges(
seqnames = paste0('chr',probe2pos$Chromosome),
ranges = IRanges( probe2pos$start_location, probe2pos$start_location+1),
strand = ifelse(probe2pos$start_location>1,'+','-'),
probe=probe2gene$probe_id
)
gr_probes
gr_cytobands= GRanges(
seqnames = hc$chr,
ranges = IRanges( hc$start, hc$end)
)
gr_cytobands
findOverlaps(gr_probes,gr_cytobands)
可以看到,两个坐标系统就对应起来了。
> findOverlaps(gr_probes,gr_cytobands)
Hits object with 39409 hits and 0 metadata columns:
queryHits subjectHits
<integer> <integer>
[1] 3 43
[2] 5 651
[3] 6 319
[4] 7 319
[5] 8 319
... ... ...
[39405] 85850 144
[39406] 85851 144
[39407] 85852 144
[39408] 85853 144
[39409] 85854 144
-------
queryLength: 85862 / subjectLength: 862
>
最后根据坐标检索即可,代码如下:
tmp=findOverlaps(gr_probes,gr_cytobands)
comb=cbind(probe2gene[tmp@from,],hc[tmp@to,])
head(comb)
结果如下:
> head(comb)
probe_id start_location Chromosome chr start end band stain arm
3 117_at 161524539 1 chr1 158800000 163800000 23.3 gneg q
5 1255_g_at 42155376 6 chr6 40600000 45200000 21.1 gneg p
6 1316_at 40062964 17 chr17 37800000 41900000 21.31 gneg q
7 1316_at 40062192 17 chr17 37800000 41900000 21.31 gneg q
8 1316_at 40062964 17 chr17 37800000 41900000 21.31 gneg q
12 1431_at 133527362 10 chr10 130500000 135374737 26.3 gneg q
但是可能有一个问题,我没有去深究这两个包里面的坐标信息的参考基因组版本问题。大家如果要实战,需要额外注意,我这里仅仅是教程哈。
- 生产环境sql语句调优实战第六篇(r2笔记91天)
- 关于分区表的move操作(r2笔记90天)
- 简单分析oracle的数据存储(r2笔记89天)
- 机器学习线性分类算法:感知器原理
- 通过shell脚本来查看Undo中资源消耗高的sql(r2笔记88天)
- 关于分页查询的优化思路(r3笔记第7天)
- 用机器学习方法对影评与观影者情感判定
- 关于查看文件的几个小命令(r3笔记第6天)
- 关于纠结的recycle pool的设置(r3笔记第5天)
- 融会贯通学习trigger(r2笔记第4天)
- 完整的R语言预测建模实例-从数据清理到建模预测
- 利用回归模型预测数值型数据(代码)
- 关于ORA-00020问题的反思(r2笔记第3天)
- 查看空间使用情况的脚本(r2笔记第2天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Qt编写安防视频监控系统28-摄像机点位
- Qt编写安防视频监控系统29-掉线重连
- Qt编写安防视频监控系统30-GPS运动轨迹
- Qt编写安防视频监控系统31-onvif设备搜索
- Qt编写安防视频监控系统32-onvif信息获取
- Qt编写安防视频监控系统33-onvif云台控制
- Qt编写安防视频监控系统34-onvif事件订阅
- Qt编写安防视频监控系统35-onvif抓拍图片
- Qt音视频开发1-vlc解码播放
- 【TBase开源版测评】分布式数据自动shard分片
- STL—mt19937
- 潘石屹用Python解决100个问题 | 字符类型统计
- 潘石屹用Python解决100个问题 | 分解质因数
- 使用Java Spring消费MySQL中的数据库存储过程
- 部署 Docker 及配置