掃描下方二維碼免費領取☟☟☟
做腫瘤方向的小夥伴一定對於「免疫浸潤」這個概念特別熟悉。所謂腫瘤免疫微環境的概念,就是腫瘤的內部和周圍往往聚集著大量的免疫細胞。這些免疫細胞之間,以及腫瘤細胞和免疫細胞之間存在著千絲萬縷,免疫細胞多種多樣,所以所謂免疫微環境,或者說免疫浸潤的分析,本質上,就是搞清楚腫瘤組織當中免疫細胞的構成比例。而當今主流的的計算免疫微環境的方法為CIBERSORT與ssGSEA,今天我們來學習一下CIBERSORT。CIBERSORT主要通過反卷積算法(歐?不明白算法。會用就可以了!)這個算法的功能就是根據一個已知的訓練集(訓練集中包含了不同免疫細胞的基因表達特徵),然後使用算法最終得出輸入樣本中包含哪些免疫細胞。讀到這裡大家是不是有些熟悉了,其功能與EPIC,TIMER相同,而在這些資料庫中CIBERSORT是最為優秀的(至於哪裡優秀,大家可以自行體會),為了方便用戶使用CIBERSORT被做成了網頁版,之後又進行了改版,升級為CIBERSORTX(https://cibersortx.stanford.edu/)。與Oncomine資料庫相同,CIBERSORT資料庫也需要學術帳號註冊,為了照顧那些沒有學術郵箱的同學,我們今天來使用R語言代碼製作一些CIBERSORT的運算流程。此次分享的數據與代碼都可以從文末獲得。其中需要注意的是第一行第一列交界處需要用Tab鍵隔開一格,不然會導致報錯歐。準備文件已經完畢,接下裡我將用Rstudio演示。Rstudio是基於R軟體的一款軟體,大家可以自行安裝,其最大特點是報錯後大家根據右上方面板可以及時找到變量或函數定義錯誤(其實是因為有變量函數記憶功能,便於偷懶)。大家可以點開Rstudio,按照如下方式導入資料腳本」 CIBERSORT-Results.R」接下來大家將光標放在第一行後,點擊「Run」即可運行每行代碼,此處不建議刷住多行代碼直接點擊Run,對於初學者應當感悟每行代碼所代表的意義,而且萬一出錯會導致二次檢查,費時費力。
rm(list = ls())#清空R參數setwd("C:/Users/DELL/Desktop/解螺旋/results")#此處設置工作目錄,切記把"\"換為「/」或「\\」options(stringsAsFactors = F)source("CIBERSORT.R")# 首先讀取兩個文件LM22.file <- "LM22.txt"# cibersoft 內置資料庫挖掘資料中已有,不需要改動exp.file <- "test.txt"# 此處為輸入文件我們採用TCGA資料庫TME.results = CIBERSORT(LM22.file, exp.file, perm = 1000, QN = TRUE)#輸出結果文件文件夾中出現新文件,這個文件即為我們運行CIBERSORT的結果文件,在文件中會對應輸入樣品名出現22種免疫細胞的浸潤比例(如下圖:僅顯示部分截圖)。我們在論文中往往會對數據進行可視化操作,接下來就讓我們對數據進行一下繪圖操作。在此之前要對於數據進行清洗,因為有些免疫細胞在樣本中不會進行表達,我們要篩選出那些0值比較多的細胞(在這裡我們需要預先安裝一下函數包)。library(dplyr)library(tidyr)library(tidyverse)cibersort_raw <- cibersort_raw <- read.table("CIBERSORT-Results.txt",header = T,sep = '\t') %>% rename("Sample" = "Mixture") %>% select(-c("P.value","Correlation","RMSE"))cibersort_tidy <- cibersort_raw %>% remove_rownames() %>% column_to_rownames("Sample")flag <- apply(cibersort_tidy,2,function(x) sum(x == 0) < dim(cibersort_tidy)[1]/2)cibersort_tidy <- cibersort_raw[,which(flag)] %>% as.matrix() %>% t()bk <- c(seq(0,0.2,by = 0.01),seq(0.21,0.85,by=0.01))運行結果都會在右上角顯示,大家可以點開看結果之間的區別。library(RColorBrewer)mypalette <- colorRampPalette(brewer.pal(8,"Set1"))cibersort_barplot <- cibersort_raw %>% gather(key = Cell_type,value = Proportion,2:23)ggplot(cibersort_barplot,aes(Sample,Proportion,fill = Cell_type)) + geom_bar(position = "stack",stat = "identity") + labs(fill = "Cell Type",x = "",y = "Estiamted Proportion") + theme_bw() + theme(axis.text.x = element_blank()) + theme(axis.ticks.x = element_blank()) + scale_y_continuous(expand = c(0.01,0)) + scale_fill_manual(values = mypalette(23))運行代碼後我們可以看到右下方會出來圖像,之後我們點擊圖像上方「Export」即可完成圖像格式的本地保存。ggplot(cibersort_barplot,aes(Cell_type,Proportion,fill = Cell_type)) + geom_boxplot(outlier.shape = 21,coulour = "black") + theme_bw() + labs(x = "Cell_Type", y = "Estimated Proportion") + theme(axis.text.x = element_blank()) + theme(axis.ticks.x = element_blank()) + scale_fill_manual(values = mypalette(23))這樣即可完成箱線圖的繪製,至於導出大家應該都很熟悉了,參照第一個圖那樣就可以了。想必到了這裡,大家應該對CIBERSORT有了一個更為深刻的了解,話不多說,我們之間來應用部分。我們今天介紹的是2020年3月發表在Journal of Cancer(IF:3.182)上的一篇文章,「The immune infiltration in clear cell Renal Cell Carcinoma and their clinical implications: A study based on TCGA and GEO databases」
這篇文章的分析思路較為簡單,數據來源均來自GEO與TCGA,之後採用CIBERSORT算法進行免疫細胞佔比估計。最後採用生存曲線證明其臨床意義。
在這裡我們放一張論文中的圖片:
是不是與我們做出來的圖片很相同呢,這篇文獻中的主要內容均是基於CIBERSORT的結果文件進行計算,文獻的全文我們已經打包在資料中,感興趣的小夥伴可以復現一下這篇文獻
無論是在線網站分析或者R語言代碼分析,我們都不要忘記引用算法文獻呀!!!
Newman, A.M., et al., Determining cell type abundance and expression from bulk tissues with digital cytometry. Nature Biotechnology, 2019. 37(7): p. 773-782.
最後,我們在資料文件中放了一個「CIBERSORT-Results補充.R」文件,這個代碼可以對數據進行熱圖繪製,這相當於一個拓展,大家可以點開自己試一下歐。