晚上一个人的时候看的小电影
RNAseq|Mime代码版-终极101 种机器学习算法组合构建最优预后模子

Mime1为构建基于机器学习的集成模子提供了一个用户友好的管理决策,运用复杂的数据集来识别与预后推敲的要津基因。

前边单独先容了Lasso ,randomForestSRC,Enet(Elastic Net),CoxBoost 和 SuperPC 构建生涯模子的规律和参数,本文先容如何使用Mime1包一时势完成文件中的101种机器学习组合的分析,并输出文件级别的图。

除此除外极端先容一下(1)替换我方数据时防御的点 (2)如何索要指定模子下的riskscore着力进行后续分析 和 (3)如何对缱绻癌种进行模子相比(胶质瘤不错使用数据内置的)(个东说念主合计更进军)

一 载入R包,数据

该包纠合了10种机器学习的包,是以装配上会略略繁琐一下,给点耐性缺什么下载什么。

# options("repos"= c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))# options(BioC_mirror="http://mirrors.tuna.tsinghua.edu.cn/bioconductor/")if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")depens<-c('GSEABase', 'GSVA', 'cancerclass', 'mixOmics', 'sparrow', 'sva' , 'ComplexHeatmap' )for(i in 1:length(depens)){  depen<-depens[i]  if (!requireNamespace(depen, quietly = TRUE))  BiocManager::install(depen,update = FALSE)}if (!requireNamespace("CoxBoost", quietly = TRUE))  devtools::install_github("binderh/CoxBoost")if (!requireNamespace("fastAdaboost", quietly = TRUE))  devtools::install_github("souravc83/fastAdaboost")if (!requireNamespace("Mime", quietly = TRUE))  devtools::install_github("l-magnificence/Mime")library(Mime1)

当先稽查示例数据

1. 基因集数据

不错是各异基因,热门通路(MsigDB),WGCNA简略PPI找到的hub gene ,简略某种单细胞亚型的marker gene 等等任何面目取得的缱绻基因集

load("./External data/genelist.Rdata")#> [1] "MYC"    "CTNNB1" "JAG2"   "NOTCH1" "DLL1"   "AXIN2"  "PSEN2"  "FZD1"   "NOTCH4" "LEF1"   "AXIN1"  "NKD1"   "WNT5B" #>[14] "CUL1"   "JAG1"   "MAML1"  "KAT2A"  "GNAI1"  "WNT6"   "PTCH1"  "NCOR2"  "DKK4"   "HDAC2"  "DKK1"   "TCF7"   "WNT1"  #>[27] "NUMB"   "ADAM17" "DVL2"   "PPARD"  "NCSTN"  "HDAC5"  "CCND2"  "FRAT1"  "CSNK1E" "RBPJ"   "FZD8"   "TP53"   "SKP2"  #>[40] "HEY2"   "HEY1"   "HDAC11"

2. 生涯数据与基因抒发信息

load("./External data/Example.cohort.Rdata") # 生涯数据与基因抒发信息list_train_vali_Data[["Dataset1"]][1:5,1:5]#                 ID    OS.time OS   MT-CO1   MT-CO3#60  TCGA.DH.A66B.01 1281.65322  0 13.77340 13.67931#234 TCGA.HT.7607.01   96.19915  1 14.96535 14.31857#42  TCGA.DB.A64Q.01  182.37755  0 13.90659 13.65321#126 TCGA.DU.8167.01  471.97707  0 14.90695 14.59776#237 TCGA.HT.7610.01 1709.53901  0 15.22784 14.62756

其中list_train_vali_Data是含有2个数据集的列表,每个数据集的第一列为ID ,2-3列为生涯信息(OS.time ,OS) ,后头为基因抒发量。

二 构建预后模子

1. 构建101机器学习模子组合

该包大大裁减了学习资本,不错通过ML.Dev.Prog.Sig函数凯旋构建

res <- ML.Dev.Prog.Sig(train_data = list_train_vali_Data$Dataset1,                     list_train_vali_Data = list_train_vali_Data,                     unicox.filter.for.candi = T,                     unicox_p_cutoff = 0.05,                     candidate_genes = genelist,                     mode = 'all',nodesize =5,seed = 5201314 )

ML.Dev.Prog.Sig() 可选 all, single 和 double三种款式. all 为整个10种算法 以及 组合 . single 为用10种算法中的一种. double 为两种算法的组合,一般情况下使用 all 款式.

默许情况下 unicox.filter.for.candi 为 T , 会先对西宾集进行单成分cox分析,unicox_p_cutoff 权贵的基因会用于构建预后模子.

淌若使用我方数据的时代,需要防御:

(1)替换我方数据防御前三列的条目,且将多个数据集以列表时势存储。

(2)分析之前最佳先阐明 所罕有据聚拢是否 有基因集列表中的整个基因 ,减少报错。

(3)种子数笃信好,会有一些小的影响 。

神往稽查后发现示例数据Dataset2中穷乏基因聚拢的几个基因,然则为什么莫得报错呢 ?

data2 <- data2 %>%    dplyr::select(ID , OS.time , OS, genelist )#Error in `dplyr::select()`:#! Can't select columns that don't exist.#✖ Columns `JAG1`, `DKK4`, and `WNT1` don't exist.#Run `rlang::last_trace()` to see where the error occurred.

通过View(ML.Dev.Prog.Sig) 查验函数,竖立unicox.filter.for.candi = T 后会先作念单成分cox分析,单成分权贵的基因 才会当作机器学习101模子组合的候选基因进行后续分析,而下图红框中单基因权贵的基因,恰巧莫得dataset2中穷乏的`JAG1`, `DKK4`, and WNT1 基因,因此莫得报错。

图片

然则在不笃信哪些基因单成分预后权贵的前提下,分析我方数据时代仍是先确保西宾集和考据集均有基因列表的整个基因。

2. C-index 展示

示例数据list_train_vali_Data 为2个数据集的list,着力图中队伍为2个,临了两列为Cindex的均值,这也等于机器学习模子组合文件中的主图。

cindex_dis_all(res,               validate_set = names(list_train_vali_Data)[-1],               order = names(list_train_vali_Data),               width = 0.35)

图片

3. 稽查指定模子的着力

假定咱们遴荐第一个模子(StepCox[forward] + plsRcox) ,不错单独稽查该模子下各个数据集的cindex弘扬

cindex_dis_select(res,                  model="StepCox[forward] + plsRcox",                  order= names(list_train_vali_Data))

图片

也不错稽查该模子下各个数据集的KM弧线情况

survplot <- vector("list",2) for (i in c(1:2)) {  print(survplot[[i]]<-rs_sur(res, model_name = "StepCox[forward] + plsRcox",                              dataset = names(list_train_vali_Data)[i],                              #color=c("blue","green"),                              median.line = "hv",                              cutoff = 0.5,                              conf.int = T,                              xlab="Day",pval.coord=c(1000,0.9))  )}aplot::plot_list(gglist=survplot,ncol=2)

图片

索要模子RS着力

这里有个很进军的点是要索要指定模子下的RS着力,然后就不错左证我方的需求再行绘画KM 以及 孤苦预后分析,丛林图,列线图等其他分析了。

着力王人在res中,左证str(res)知说念对应的信息,索要即可

head(res$riskscore$`StepCox[forward] + plsRcox`[[1]])head(res$riskscore$`StepCox[forward] + plsRcox`[[2]])

图片

4. AUC着力

策划每个模子的1年,3年,5年 的 auc值 ,并可视化整个模子的1年auc着力

all.auc.1y <- cal_AUC_ml_res(res.by.ML.Dev.Prog.Sig = res,train_data = list_train_vali_Data[["Dataset1"]],                             inputmatrix.list = list_train_vali_Data,mode = 'all',AUC_time = 1,                             auc_cal_method="KM")all.auc.3y <- cal_AUC_ml_res(res.by.ML.Dev.Prog.Sig = res,train_data = list_train_vali_Data[["Dataset1"]],                             inputmatrix.list = list_train_vali_Data,mode = 'all',AUC_time = 3,                             auc_cal_method="KM")all.auc.5y <- cal_AUC_ml_res(res.by.ML.Dev.Prog.Sig = res,train_data = list_train_vali_Data[["Dataset1"]],                             inputmatrix.list = list_train_vali_Data,mode = 'all',AUC_time = 5,                             auc_cal_method="KM")auc_dis_all(all.auc.1y,            dataset = names(list_train_vali_Data),            validate_set=names(list_train_vali_Data)[-1],            order= names(list_train_vali_Data),            width = 0.35,            year=1)

图片

一样不错绘画遴选模子下的auc弧线

roc_vis(all.auc.1y,        model_name = "StepCox[forward] + plsRcox",        dataset = names(list_train_vali_Data),        order= names(list_train_vali_Data),        anno_position=c(0.65,0.55),        year=1)

图片

auc_dis_select(list(all.auc.1y,all.auc.3y,all.auc.5y),               model_name="StepCox[forward] + plsRcox",               dataset = names(list_train_vali_Data),               order= names(list_train_vali_Data),               year=c(1,3,5))

图片

5. 模子相比

该包还提供了和之前文件报说念的预后模子相比的函数,诚然只提供了胶质瘤的。

那淌若你作念的是其他癌种呢?不错通过稽查函数了解是若何的输入时势,然后就作念对应的替换后就不错分析了。(很进军)

cc.glioma.lgg.gbm <- cal_cindex_pre.prog.sig(use_your_own_collected_sig = F,                                             type.sig = c('Glioma','LGG','GBM'),                                             list_input_data = list_train_vali_Data)cindex_comp(cc.glioma.lgg.gbm,            res,            model_name="StepCox[forward] + plsRcox",            dataset=names(list_train_vali_Data))

图片

稽查函数,找到内置模子的时势

type.sig = c('Glioma','LGG','GBM')pre.prog.sig <- Mime1::pre.prog.sig    if (all(type.sig %in% names(pre.prog.sig))) {      if (length(type.sig) == 1) {        sig.input <- pre.prog.sig[[type.sig[1]]]      }      else {        sig.input <- pre.prog.sig[[type.sig[1]]]        for (i in 2:length(type.sig)) {          sig.input <- rbind(sig.input, pre.prog.sig[[type.sig[i]]])        }      }    }    View(sig.input)

图片

稽查30810537文件,发现最终组成riskscore的基因(热图)与 该包内置的基因一致,右图的总共也一致。

图片

OK ,到这里就完成了预后模子的构建以及考据,后头可能还需要左证文中的骨子将模子RS索要出来进行孤苦预后历练以及一些可视化分析。

现时你要作念的等于 (1)准备缱绻癌种的TCGA数据和GEO数据--用于构建预后101模子 ,(2)缱绻癌种预后模子的基因列表 以及 对应的总共 -- 用于模子相比。(3)写著述发表。

参考贵寓:https://github.com/l-magnificence/Mime?tab=readme-ov-file

本站仅提供存储劳动,整个骨子均由用户发布,如发现存害或侵权骨子,请点击举报。