前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >药物预测R包之pRRophetic

药物预测R包之pRRophetic

作者头像
生信技能树
发布2021-10-12 12:14:51
12.3K4
发布2021-10-12 12:14:51
举报
文章被收录于专栏:生信技能树生信技能树

有了前面的教程:药物预测之认识表达量矩阵和药物IC50 的背景知识铺垫,认识了Cancer Therapeutics Response Portal (CTRP) 和 Genomics of Drug Sensitivity in Cancer (GDSC) 两个数据库资源。也介绍了2021年7月新鲜出炉的 药物预测R包之oncoPredict

还可以尝试一下同一个团队早在2014年就出品的R包之 pRRophetic ,也可以对你的表达量矩阵进行药物反应预测啦!很有意思的是这个包虽然是2014就发表了,文章是:《pRRophetic: An R Package for Prediction of Clinical Chemotherapeutic Response from Tumor Gene Expression Levels》

但是它一直没有把包提交到cran或者bioconductor,而是自己维护:

  • website (http://genemed.uchicago.edu/~pgeeleher/pRRophetic)
  • GitHub (https://github.com/paulgeeleher/pRRophetic).

文章短小精悍,就5个参考文献,而且它并不使用我们介绍的Cancer Therapeutics Response Portal (CTRP) 和 Genomics of Drug Sensitivity in Cancer (GDSC) 两个数据库资源,而是使用 Cancer Genome Project (CGP)计划里面的表达量矩阵和药物处理信息,该数据库有138 anticancer drugs against 727 cell lines

使用 pRRophetic 之前先安装,自己下载pRRophetic_0.5.tar.gz这个压缩包(大于500M哦),然后当前工作目录下面使用代码如下:

# 自己下载pRRophetic_0.5.tar.gz这个压缩包(大于500M哦)
#  website (http://genemed.uchicago.edu/~pgeeleher/pRRophetic) 
#  GitHub (https://github.com/paulgeeleher/pRRophetic).
BiocManager::install(c('sva', 'car', 'genefilter', 'preprocessCore', 'ridge'))
# 假如提前你缺啥,就使用上面的代码安装缺失的包
install.packages("pRRophetic_0.5.tar.gz", repos = NULL, dependencies = TRUE)

认识R包pRRophetic的数据

安装成功之后,在你的R包pRRophetic的文件夹路径下面有如下所示文件 :

  77K Oct  4 10:46 Cell_Lines_Details-1.csv
  292M Oct  4 10:46 Cell_line_RMA_proc_basalExp.txt
   23M Oct  4 10:46 PANCANCER_IC_Tue Aug  9 15_28_57 2016.csv
  6.4M Oct  4 10:46 PANCANCER_IC_Tue_Aug_9_15_28_57_2016.RData
   25M Oct  4 10:46 bortezomibData.RData
  122M Oct  4 10:46 ccleData.RData
  126M Oct  4 10:46 cgp2016ExprRma.RData
  205B Oct  4 10:46 datalist
   72M Oct  4 10:46 drugAndPhenoCgp.RData

可以看到虽然这个包是2014的,但是里面有一些数据是2016的,应该是作者还在维护。不过它毕竟是没有提交到cran或者bioconductor,还是有点担心啊!

首先查看硼替佐米(Bortezomib)

Bortezomib (PS-341) 是一种可逆性和选择性的蛋白酶体 (proteasome) 抑制剂,通过靶向苏氨酸残基有效抑制 20S 蛋白酶体 (Ki=0.6 nM)。Bortezomib 破坏细胞周期、诱导细胞凋亡以及抑制核因子 NF-κB。

简而言之:Bortezomib 是第一种蛋白酶体抑制剂,具有抗癌活性。

library(pRRophetic)
data(bortezomibData)
dim(exprDataBortezomib)
exprDataBortezomib[1:4,1:4]
boxplot(exprDataBortezomib[1:4,])
# 264个样品的表达量矩阵
table(studyResponse)
# 264个病人的结局 (药物处理后)
PGx_Responder = IE PGx_Responder = NR  PGx_Responder = R 
                25                126                113

具体是什么癌症什么病人就需要看该文章以及该数据集的来源文献啦,但是药物处理结局事件是很明显的,主要是区分R和NR,应该是有无响应的简单情况。

然后查看ccle数据资源
library(pRRophetic)   
# exprMatCcle (ccleData)       
data(ccleData) 
dim(exprMatCcle)
exprMatCcle[1:4,1:4]
boxplot(exprMatCcle[,1:4])
# 1037个细胞系的18988个基因组成的 表达量矩阵
head(sensDataCcle)
tmp=as.data.frame(table(sensDataCcle[,2:3]) )
length(unique(sensDataCcle$Compound))
length(unique(sensDataCcle$Primary.Cell.Line.Name))

可以看到ccle数据库里面的表达量矩阵信息很丰富,有1037个细胞系的18988个基因表达。

但是药物处理信息只有24个药物,五百多个细胞系,如下所示:

> tmp=as.data.frame(table(sensDataCcle[,2:3]) )
> length(unique(sensDataCcle$Compound))
[1] 24
> length(unique(sensDataCcle$Primary.Cell.Line.Name))
[1] 504
> head(tmp)
  Primary.Cell.Line.Name Compound Freq
1                 1321N1   17-AAG    1
2                  22Rv1   17-AAG    1
3               42-MG-BA   17-AAG    1
4                   5637   17-AAG    1
5                  639-V   17-AAG    1
6                    697   17-AAG    1
> dim(tmp)
[1] 12096     3

全部的24种药物是:

> unique(sensDataCcle$Compound)
 [1] "17-AAG"       "AEW541"       "AZD0530"     
 [4] "AZD6244"      "Erlotinib"    "Irinotecan"  
 [7] "L-685458"     "LBW242"       "Lapatinib"   
[10] "Nilotinib"    "Nutlin-3"     "PD-0325901"  
[13] "PD-0332991"   "PF2341066"    "PHA-665752"  
[16] "PLX4720"      "Paclitaxel"   "Panobinostat"
[19] "RAF265"       "Sorafenib"    "TAE684"      
[22] "TKI258"       "Topotecan"    "ZD-6474" 
重头戏是 Cancer Genome Project (CGP)

可以看到 Cancer Genome Project (CGP)里面的也是一千多个细胞系的2万个基因的表达量矩阵,关键是它药物超过了200种。

library(pRRophetic)   
# exprMatCcle (ccleData)       
data(cgp2016ExprRma) 
dim(cgp2016ExprRma)
data(PANCANCER_IC_Tue_Aug_9_15_28_57_2016)
length(unique(drugData2016$Drug.name))
unique(drugData2016$Drug.name)

pRRophetic包的核心函数pRRopheticPredict的使用

这个核心函数pRRopheticPredict,有非常多的参数,不过绝大部分都是有默认值,如下所示:

pRRopheticPredict(testMatrix, drug, tissueType = "all", batchCorrect = "eb",
  powerTransformPhenotype = TRUE, removeLowVaryingGenes = 0.2,
  minNumSamples = 10, selection = -1, printOutput = TRUE,
  removeLowVaringGenesFrom = "homogenizeData", dataset = "cgp2014")

我们首先使用 默认的 cgp2014数据集,来预测 前面的 硼替佐米(Bortezomib)药物信息,看看是否一致。


library(pRRophetic)
library(ggplot2)
data(bortezomibData)
dim(exprDataBortezomib)
exprDataBortezomib[1:4,1:4]
boxplot(exprDataBortezomib[,1:4])
# 264个样品的表达量矩阵
table(studyResponse)

predictedPtype <- pRRopheticPredict(testMatrix=exprDataBortezomib, 
                                    drug="Bortezomib",
                                    tissueType = "all", 
                                    batchCorrect = "eb",
                                    selection=1,
                                    dataset = "cgp2014")

如果是实际使用,我们应该是读入自己的表达量哦,不过我们这里是演示如何使用它,所以直接用exprDataBortezomib矩阵来测试pRRophetic包的核心函数pRRopheticPredict即可。

因为就预测一个药物,所以速度很快:

11683  gene identifiers overlap between the supplied expression matrices... 
 
Found2batches
Adjusting for0covariate(s) or covariate level(s)
Standardizing Data across genes
Fitting L/S model and finding priors
Finding parametric adjustments
Adjusting the Data


 2324 low variabilty genes filtered.
Fitting Ridge Regression model... Done

Calculating predicted phenotype...Done

让我们看看,预测情况和时间情况的差异:

boxplot(predictedPtype)
df <- stack(list(NR = predictedPtype[((studyResponse == 'PGx_Responder = NR') & bortIndex)],
                 R = predictedPtype[((studyResponse == 'PGx_Responder = R') & bortIndex)]))
head(df)
ggplot(data = df,
       aes(y = values,
           x = ind))+
  geom_boxplot(alpha = 0.3,
               fill = c('#e94753','#47a4e9'))+
  theme_bw()+
  ylab('Predicted Bortezomib Sensitivity') +
  xlab('Clinical Response')

如下所示:

总体来说,确实是R的响应组,里面的病人预测得到的药物越敏感!

预测全部的药物

这个时候因为是每个药物都需要走前面的 pRRophetic包的核心函数pRRopheticPredict,所以可以写循环啦,而且可以加入并行机制。

这个时候我们选择 cgp2016数据集,全部的代码如下所示:


library(parallel)
library(pRRophetic)
library(ggplot2)
data(PANCANCER_IC_Tue_Aug_9_15_28_57_2016)
data(cgp2016ExprRma)
possibleDrugs2016 <- unique( drugData2016$Drug.name)
possibleDrugs2016
# 用system.time来返回计算所需时间
head(possibleDrugs2016)
system.time({ 
  cl <- makeCluster(8)  
  results <- parLapply(cl,possibleDrugs2016,
                       function(x){
                         library(pRRophetic) 
                         data(bortezomibData)
                         predictedPtype=pRRopheticPredict(
                                            testMatrix=exprDataBortezomib,
                                            drug=x,
                                           tissueType = "all", 
                                           batchCorrect = "eb",
                                           selection=1,
                                           dataset = "cgp2016")
                         return(predictedPtype)
                       }) # lapply的并行版本
  res.df <- do.call('rbind',results) # 整合结果
  stopCluster(cl) # 关闭集群
})

这个函数运行取决于你的计算资源,需要半个小时左右。慢慢等吧,喝一杯咖啡吧,如果可以的话希望你在咱们《生信技能树》公众号任意教程末尾打赏一杯咖啡也行,我们一起慢慢喝,慢慢等!

如果是自己的真实表达量矩阵,需要走 pRRophetic包的核心函数pRRopheticPredict进行预测,只需要读入进去,替换前面的 testMatrix=exprDataBortezomib 即可!

不同的数据库资源作为函数的训练集,得到的结果必然是不一样的哦!而且函数也可以调整很多参数。

这个时候其实可以看看 前面的2021年7月新鲜出炉的 药物预测R包之oncoPredict 结果跟本次介绍的药物预测R包之pRRophetic的一致性!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 认识R包pRRophetic的数据
    • 首先查看硼替佐米(Bortezomib)
      • 然后查看ccle数据资源
        • 重头戏是 Cancer Genome Project (CGP)
        • pRRophetic包的核心函数pRRopheticPredict的使用
        • 预测全部的药物
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档