利用R实现乳腺癌样本的分子分型
2016-11-06 18:05
218 查看
1. 背景
癌症并不是一种疾病,而更多地是多种疾病的集合。不同癌症病人的疾病进展,对治疗的响应,包括复发的几率都有所不同。从这种意义上讲,每个癌症都是独特的,带有自己的基因背景和体突变的演化轨迹。所以癌症的多样性对癌症的治疗有着重要的影响。对癌症样本进行分类可以帮助我们更好地理解疾病的进程,并且有助于在将来开展个体化的医治。乳腺癌的分子分型主要是从肿瘤样本的转录组测序数据出发,对肿瘤样本进行分类。目前普遍接受的分子分型主要有四种,分别是LumA,LumB,HER2和Basal。对应的预后和推荐疗法也有所不同(见下表)
Type | ER/PR | HER2 | Prolif | Recommended treatment |
---|---|---|---|---|
Luminal A | + | - | - | E |
Luminal B | + | +/- | + | E+C(+H) |
HER2 positive | - | + | C+H | |
Basal-like | - | - | C |
2.软件配置
注意使用R3.3.0以上版本。我原来的版本是R3.2.5,以至于吃了不少亏。多数package还是来自于bioconductor。分型需要直接使用的包是genefu。利用如下语句进行安装。source("http://www.bioconductor.org/biocLite.R") biocLite("genefu")
当然如果真用了上述语句,下载的速度会痛不欲生,推荐使用中科大的bioconductor镜像,在中间加入
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
这个包有很多dependency,反正就是报错要什么就装什么。R的package管理也是乱,我都是用biocLite,依次装的包有SuppDists, bootstrap, rmeta, survivalROC, mclust, iC10, AIMS, amap。安装好以上的包就可以正常使用genefu了。
3.分型
首先import data。这里采用的数据是著名的Wang dataset,包含286个乳腺癌样本。测序平台是Affy家的HGU133A。pure_data <- read.delim(path, header=FALSE, stringsAsFactors=FALSE) d<-data.matrix(pure_data) gene <- read.delim(path_gene)其中d是原始的探针数据,gene是不同探针(probe)对应的gene_id和gene name。然后使用genefu库并按要求准备数据。
library("genefu") gene$probe = gene$PROBEID gene$EntrezGene.ID = gene$ENTREZID dimnames(d) <- gene$PROBEIDgenefu要求annotation变量包含EntrezGene.ID列和probe列,用来map基因。接下来我们对表达谱数据做normalization。
d = log(d) d = scale(d)然后就可以进行分型了。
cc<- molecular.subtyping(sbt.model = "ssp2006",data = d, annot = gene,do.mapping = TRUE)这里分型采用的是Hu et al 2006提出的SSP方法。
最后可以将结果进行输出。
csub<-apply(cc$subtype.proba, 1, function(t) colnames(cc$subtype.proba)[which.max(t)]) csub = data.frame(as.list(csub),stringsAsFactors=FALSE) write.table(csub, "D:/SSP06_subtyping.txt", sep="\t")
相关文章推荐
- 利用反射和工厂模式实现控制反转
- 数据结构 利用循环队列层次遍历一棵二叉树 递归实现
- 重构实践——利用配置文件实现设计的高度抽象
- 利用 Lotus Notes 8.0.1 的 Widget 功能,在 Notes 客户端的边栏实现 Google Talk 功能 !
- 利用C#实现标准的 Dispose模式
- 利用python微信库itchat实现微信自动回复功能
- QQ聊天布局——利用通知机制实现键盘处理
- 无线测试技术-利用httpclient实现自动化测试
- 利用php给图片添加文字水印--面向对象与面向过程俩种方法的实现
- 利用ajaxfileupload插件实现无刷新文件上传
- CVE-2014-0038内核漏洞原理与本地提权利用代码实现分析 作者:seteuid0
- 利用Ant实现Websphere Process Server部署
- 在ASP.NET中如何实现和利用URL重写
- 利用Bundle实现Android Activity间消息的传递
- 直线生成算法的实现:分别利用DDA算法、中点Bresenham算法和改进的Bresenham算法扫描转换直线段P1P2
- Android平台利用CUDA框架实现并行开发
- C#利用Mutex实现只运行一个程序实例
- 利用POSIX互斥锁和条件变量实现的信号量
- ASP.NET巧妙利用repeater控件和checkBox控件实现批量操作
- node.js WebService异常处理(domain)以及利用domain实现request生命周期的全局变量