TIDE(http://tide.dfci.harvard.edu/)代表腫瘤免疫功能障礙和排斥伴挚,用于評估免疫療法在不同風(fēng)險(xiǎn)組中的潛在臨床療效,反映腫瘤免疫逃避的潛在能力瑟匆,較高的TIDE評分與較差的ICI療效相關(guān)革半。
1. 表達(dá)矩陣預(yù)處理
# TCGA-STADfpkm表達(dá)矩陣
STAD_Expr[1:4, 1:4]
# TCGA-BR-A4J4-01A-12R-A251-31 TCGA-BR-A4IZ-01A-32R-A251-31 TCGA-RD-A7C1-01A-11R-A32D-31 TCGA-BR-6852-01A-11R-1884-13
# 5_8S_rRNA 0.0866 0.4991 1.0460 0.1388
# 5S_rRNA 0.0000 0.2676 2.6896 0.3327
# 7SK 0.3533 0.2546 1.2531 0.2813
# A1BG 0.0197 0.0358 0.1067 0.1153
# 臨床信息医增,含風(fēng)險(xiǎn)評分
clin_info[1:4, 1:5]
# riskscore entity_submitter_id status time riskgroup
# 1 0.5443136 TCGA-BR-A4J4-01A-12R-A251-31 0 16 Low
# 2 1.9722861 TCGA-BR-A4IZ-01A-32R-A251-31 1 273 High
# 3 1.1310911 TCGA-RD-A7C1-01A-11R-A32D-31 1 507 High
# 4 0.7301153 TCGA-BR-6852-01A-11R-1884-13 0 1367 Low
dt <- as.data.frame(t(STAD_Expr))
identical(rownames(dt), clin_info$entity_submitter_id) # 保險(xiǎn)檢查一下行名是否一致
# [1] TRUE
dt$score <- clin_info$riskscore # 在表達(dá)矩陣中新增風(fēng)險(xiǎn)評分列
dt$riskgroup <- clin_info$riskgroup # 在表達(dá)矩陣中新增風(fēng)險(xiǎn)分組列
df <- dt[order(dt$score, decreasing = F),] # 按風(fēng)險(xiǎn)評分把矩陣升序排列
df$id <- c(1:length(df$score)) # 新增id列
df$id2 <- paste(df$riskgroup, df$id, sep = '_') # 將風(fēng)險(xiǎn)分組和id串聯(lián)
rownames(df) <- df$id2 # 修改為行名
df <- df[,1:59427] # 去掉新增列谆构,僅保留表達(dá)矩陣
df <- t(df) # 轉(zhuǎn)置
# 將矩陣重新轉(zhuǎn)換為數(shù)值型:
df2 <- apply(df, 2, as.numeric)
row.names(df2) <- row.names(df)
df2[1:6,1:6]
# Low_1 Low_2 Low_3 Low_4 Low_5 Low_6
# 5_8S_rRNA 0.0000 0.2109 0.2046 0.6394 0.2617 0.0000
# 5S_rRNA 0.3354 0.7560 0.5184 0.4585 0.7506 0.2370
# 7SK 0.0720 0.1613 0.2518 0.1967 0.3115 0.2108
# A1BG 0.0222 0.0681 0.0272 0.0486 0.0298 0.0188
# A1BG-AS1 0.1054 0.0238 0.0323 0.0000 0.0668 0.0186
# A1CF 0.0426 0.0083 3.9530 0.1316 3.8196 0.0262
# 計(jì)算方法: 表達(dá)量減去每個(gè)基因所在樣本的均值(即按行計(jì)算均值虾攻,再用每個(gè)表達(dá)量-均值)
Expr <- t(apply(df2, 1, function(x){x-(mean(x))})) # 均值標(biāo)準(zhǔn)化
Expr[1:6,1:6]
# Low_1 Low_2 Low_3 Low_4 Low_5 Low_6
# 5_8S_rRNA -0.92326170 -0.71236170 -0.718661702 -0.283861702 -0.66156170 -0.92326170
# 5S_rRNA -0.17608644 0.24451356 0.006913564 -0.052986436 0.23911356 -0.27448644
# 7SK -0.11633750 -0.02703750 0.063462500 0.008362500 0.12316250 0.02246250
# A1BG -0.02267952 0.02322048 -0.017679521 0.003720479 -0.01507952 -0.02607952
# A1BG-AS1 -0.04596277 -0.12756277 -0.119062766 -0.151362766 -0.08456277 -0.13276277
# A1CF -1.62320053 -1.65750053 2.287199468 -1.534200532 2.15379947 -1.63960053
write.table(Expr, file = 'TIDE.txt', sep = "\t", quote = F, row.names = T) # 矩陣保存到本地
2. TIDE評分計(jì)算
- 進(jìn)入官網(wǎng)(http://tide.dfci.harvard.edu/login/)
- 在菜單欄第一個(gè)‘Response Prediction'選項(xiàng)頁面下拉铡买,上傳整理好的制表符分隔文本格式的表達(dá)矩陣(首行Tab一下,保持列名對齊)台谢,'Cancer type'選擇Other寻狂,'Previous immunotherapy'保持默認(rèn)No,然后點(diǎn)擊 'Predict response' 即可靜待結(jié)果
- 分析完成后朋沮,會(huì)直接跳轉(zhuǎn)到預(yù)測結(jié)果報(bào)告頁蛇券,下拉導(dǎo)出csv文件即可
TIDE-1
3. 結(jié)果可視化
# 讀入結(jié)果表:
result <- read.csv('TIDE_result.csv')
colnames(result)
# 根據(jù)行名新增分組列:
result$Risk <- ifelse(
str_sub(result$Patient, 1, 1) == 'L', 'Low_Risk', 'High_Risk'
)
# 轉(zhuǎn)換為因子,調(diào)整順序:
result$Risk <- factor(result$Risk, levels = c('Low_Risk','High_Risk'))
# 小提琴圖展示結(jié)果:
# 1.TIDE小提琴圖:
my_comparisons <- list( c("Low_Risk", "High_Risk")) # 添加比較分組
p1 <- ggviolin(result, x = 'Risk', y = 'TIDE', fill = 'Risk',
palette = c("#2E9FDF", "#E7B800"),
add = 'boxplot', add.params = list(fill = "white")) +
stat_compare_means(comparisons = my_comparisons, label = "p.signif", bracket.size=0.5, tip.length = 0.02, method = 't.test')
p1
# 2.Dysfunction小提琴圖:
# dysfunction score的計(jì)算原理:免疫失調(diào)作用的基因擁有更高的權(quán)重樊拓,再乘以表達(dá)量
p2 <- ggviolin(result, x = 'Risk', y = 'Dysfunction', fill = 'Risk',
palette = c("#2E9FDF", "#E7B800"),
add = 'boxplot', add.params = list(fill = "white")) +
stat_compare_means(comparisons = my_comparisons, label = "p.signif", bracket.size=0.5, tip.length = 0.02, method = 't.test')
p2
# Exclusion小提琴圖:
# exclusion score是由免疫排斥的基因擁有更高的權(quán)重纠亚,再乘以表達(dá)量得到
p3 <- ggviolin(result, x = 'Risk', y = 'Exclusion', fill = 'Risk',
palette = c("#2E9FDF", "#E7B800"),
add = 'boxplot', add.params = list(fill = "white")) +
stat_compare_means(comparisons = my_comparisons, label = "p.signif", bracket.size=0.5, tip.length = 0.02, method = 't.test')
p3
# MSI小提琴圖:
colnames(result)[6]
colnames(result)[6] <- c('MSI') # 簡化一下列名
p4 <- ggviolin(result, x = 'Risk', y = 'MSI', fill = 'Risk',
palette = c("#2E9FDF", "#E7B800"),
add = 'boxplot', add.params = list(fill = "white")) +
stat_compare_means(comparisons = my_comparisons, label = "p.signif", bracket.size=0.5, tip.length = 0.02, method = 't.test')
p4
p <- p1 + p2 + p3 + p4
p
TIDE-2
★ 高風(fēng)險(xiǎn)組的TIDE評分、Exclusion評分和Dysfunction評分顯著升高筋夏,MSI評分較低蒂胞,說明高風(fēng)險(xiǎn)組患者的免疫逃逸潛力增大,免疫檢查點(diǎn)抑制治療(ICI)療效可能較差