男同

家庭教师 RNAseq|Mime代码版-终极101 种机器学习算法组合构建最优预后模子

         发布日期:2025-07-03 15:21    点击次数:166

家庭教师 RNAseq|Mime代码版-终极101 种机器学习算法组合构建最优预后模子

Mime1为构建基于机器学习的集成模子提供了一个用户友好的管理决策家庭教师,诈欺复杂的数据集来识别与预后关连的要津基因。

勾引twitter

前边单独先容了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家庭教师

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

 
友情链接:

Powered by 丝袜诱惑 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群系统 © 2013-2024