午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

RNAseq | ComplexHeatmap繪制臨床數(shù)據(jù)熱圖(所見即所得)

 生信補給站 2024-04-19 發(fā)布于北京

當使用各種機器學習方法(CoxBoost,LassoSuperPC,randomForestSRC,Elastic Net等)完成預后模型后,除了在組學層面( IPS評分藥物反應預測WGCNA等)進行一系列的分析外,還可以將定義的風險得分和臨床指標進行比較。如Expression of hub genes of endothelial cells in glioblastoma-A prognostic model for GBM patients integrating single-cell RNA sequencing and bulk RNA sequencing中下圖所示

最初我完成該圖的方法是用含有基因表達的熱圖,然后截圖或者PS成只有臨床指標。這里介紹使用ComplexHeatmap直接完成該圖。

一 載入R包,數(shù)據(jù)

使用前面系列推文的TCGA-SKCM的臨床數(shù)據(jù)和隨訪數(shù)據(jù),以及經(jīng)過lasso模型計算的風險評分結果 。

后臺回復“臨床”既可獲取Expr_phe_cli_riskscore.RData的示例數(shù)據(jù)。

library(tidyverse)library(ComplexHeatmap)library(ggsci) #顏色library(circlize) #連續(xù)顏色
#載入數(shù)據(jù)load("Expr_phe_cli_riskscore.RData")
riskScore_cli2 <- riskScore_cli %>% inner_join(phe) %>% column_to_rownames("sample") %>% select(- "_PATIENT")head(riskScore_cli2)

只要數(shù)據(jù)框中含有想展示的表型數(shù)據(jù)即可,一般會有風險得分,生存信息以及重要的臨床指標,當然也可以其他重點關注的指標:(1)重點基因突變與否,例如KRAS突變 (2)某個CNV有無(3)TMB ,MSI,IDH等等你想展示的指標。如果添加基因表達量的話那就是正常的熱圖即可。

2,臨床數(shù)據(jù)處理

在TCGA下載的臨床數(shù)據(jù)需要進行一些處理,可以在excel中完成,當然也可以使用R完成。

包括但不限于以下(1)連續(xù)數(shù)值按照某個閾值轉為分類 (2)向量和因子的轉化 (3)將數(shù)據(jù)中的T1a ,T1b,T1 統(tǒng)一為T1期 類似的整理。

(1)和(2)比較簡單,如下

#連續(xù)數(shù)值,按需轉為分類riskScore_cli2$Age =ifelse(riskScore_cli2$age > 60,">60","<=60")
#字符串轉為因子riskScore_cli2$OS <- as.factor(riskScore_cli2$OS)riskScore_cli2$tumor_stage <- as.factor(riskScore_cli2$tumor_stage)

(3)可以使用多種方式完成數(shù)據(jù)整理

A :T分期使用直接指定的方法

注意%in% c("T1a","T1b","T1")的向量中要列出所有想轉化的,假設有T1c的話 也需要加上。

table(riskScore_cli2$pathologic_T)# T0  T1 T1a T1b  T2 T2a T2b  T3 T3a T3b  T4 T4a T4b Tis  TX # 23  10  21  10  30  32  15  14  39  37  13  26 109   7  44
riskScore_cli2$pathologic_T[riskScore_cli2$pathologic_T %in% c("T1a","T1b","T1")] <- "T1"riskScore_cli2$pathologic_T[riskScore_cli2$pathologic_T %in% c("T2a","T2b","T2")] <- "T2"riskScore_cli2$pathologic_T[riskScore_cli2$pathologic_T %in% c("T3a","T3b","T3")] <- "T3"riskScore_cli2$pathologic_T[riskScore_cli2$pathologic_T %in% c("T4a","T4b","T4")] <- "T4"table(riskScore_cli2$pathologic_T)

B:N分期,使用gsub替換的方式

table(riskScore_cli2$pathologic_N)# N0  N1 N1a N1b  N2 N2a N2b N2c  N3  NX #226  17  19  37   6  13  21   9  56  34 
riskScore_cli2$pathologic_N <- gsub("N1[abc]?", "N1", riskScore_cli2$pathologic_N)riskScore_cli2$pathologic_N <- gsub("^N2.*", "N2", riskScore_cli2$pathologic_N)riskScore_cli2$pathologic_N <- gsub("^N3.*", "N3", riskScore_cli2$pathologic_N)

C:M分期,使用grepl的方法

table(riskScore_cli2$pathologic_M)# M0  M1 M1a M1b M1c #407   5   5   5   9 
riskScore_cli2$pathologic_M <- ifelse(grepl("^M1", riskScore_cli2$pathologic_M), "M1", riskScore_cli2$pathologic_M)riskScore_cli2$pathologic_M <- ifelse(grepl("^M0", riskScore_cli2$pathologic_M), "M0", riskScore_cli2$pathologic_M)

D:還可以使用str_replace 或者 str_detect等方法進行轉化,這里示例展示一下,不運行不影響推文的后續(xù)操作 。

riskScore_cli2$pathologic_T2 <- riskScore_cli2$pathologic_T# str_replaceriskScore_cli2$pathologic_T2 <- str_replace(riskScore_cli2$pathologic_T2, "T1[a-d-c-d]?", "T1")#str_detectriskScore_cli2$pathologic_T2 <- ifelse(str_detect(riskScore_cli2$pathologic_T2, "^T1"), "T1", riskScore_cli2$pathologic_T2)

以上就完成了本次分析需要的數(shù)據(jù)處理部分。

二 臨床指標熱圖可視化

1,直接繪制

使用ComplexHeatmap繪制臨床數(shù)據(jù)注釋圖 ,重點在于構建一個和臨床數(shù)據(jù)相同列的0矩陣 。

# 提取想展示的臨床數(shù)據(jù)riskScore_cli2 <- riskScore_cli2 %>%   select(riskScore:tumor_stage,Age) %>%   select(- "age")# 構建列注釋塊ha=HeatmapAnnotation(df=riskScore_cli2)# 構建zero矩陣zero_row_mat=matrix(nrow=0, ncol=nrow(riskScore_cli2))#繪制熱圖Hm <- Heatmap(zero_row_mat, top_annotation=ha)Hm#調整legend的位置和大小draw(Hm, merge_legend = TRUE,      heatmap_legend_side = "bottom",      annotation_legend_side = "bottom",     width = unit(16, "cm"), height = unit(1, "cm")     )

2,圖形優(yōu)化調整

上面可以順利的完成圖形可視化,相較文獻還可以在(1)表型內(nèi)容排序,比如優(yōu)先Score高低排序,然后Stage排序(2)表型注釋的順序,比如先展示Score,然后OS,stage等 和(3)每種表型進行自定義的顏色設置 上進行優(yōu)化和調整。

(1)表型內(nèi)部排序  ,使用arrange 進行排序,可以依次選擇多個指標

riskScore_cli3 <- riskScore_cli2 %>%  arrange(riskScore2,OS,tumor_stage,gender,OS.time,Age)

(2)和(3)一起在HeatmapAnnotation注釋中解決,如果為省事未展示T M N分期 ,可以自行添加。

library(circlize)#連續(xù)性變量的顏色設置col_fun_time <- colorRamp2(  c(0, 3000, 11000),  #根據(jù)值的范圍設置  c("#DC0000FF", "grey", "#1f78b4"))#ha <- HeatmapAnnotation(  Score = riskScore_cli3$riskScore2,  Stage = riskScore_cli3$tumor_stage ,  OS.Status = riskScore_cli3$OS,  OS.Time = riskScore_cli3$OS.time,  Gender = riskScore_cli3$gender ,  Age = riskScore_cli3$Age,  col = list(     Score = c("High" = "#BC3C29FF", "Low" = "#0072B5FF"),    OS.Status = c("0" = "#E18727FF", "1" = "#20854EFF"), #分類    OS.Time = col_fun_time , #連續(xù)    Gender = c("female" = "#AB3282", "male" = "#3A6963"),    Age = c("<=60" = "#712820", ">60" = "#E4C755"),    Stage = c("0" = "#E64B35FF", "1" = "#4DBBD5FF",              "2" = "#00A087FF", "3" = "#3C5488FF",              "4" = "#DC0000FF", "NA" = "#8491B4FF")      ))

可視化展示

Hm <- Heatmap(zero_row_mat, top_annotation=ha)draw(Hm, merge_legend = TRUE,      heatmap_legend_side = "bottom",      annotation_legend_side = "bottom",     width = unit(16, "cm"), height = unit(1, "cm"))

以上就完成了風險得分和臨床指標的熱圖,拿去發(fā)文章吧。

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多