理論知識:
組織是由不同譜系和亞型的細胞類型組成的復雜環境,每種細胞都有自己獨特的轉錄組。因此,批量轉錄組分析是細胞類型特異性基因表達的總和加權的細胞類型比例在給定的樣本。去卷積的基因表達譜允許重建組織的細胞組成。Xcell 是一個強大的計算方法,轉換基因表達譜為豐富分數的64免疫和基質細胞類型跨樣本。
不同受試者細胞類型組成的差異可以確定疾病的細胞靶點,并提出新的治療策略。此外,調整這些變異可以檢測真正的基因表達差異,并提高解釋下游分析。
1.安裝xCell
Xcell 是在 r 中開發的,用于運行 xcell 的 r 包可以作為 github 存儲庫中的開源代碼使用 (https://github.com/dviraran/xCell)
安裝 r 是一個先決條件(https://www.r-project.org/) ,rstudio 是運行 r 腳本的推薦環境(https://www.rstudio.com/)。
要安裝 xcell r 包,下面的所有命令都應該在 r 環境中輸入:
如果 devtools 包以前沒有安裝,首先安裝它:
install.packages('devtools')
從 github 安裝當前的 xcell 版本:
devtools::install_github('dviraran/xCell')
Xcell 包裝依賴于以下包裝: 生物導體包裝ーGSVA,GSEABase。
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install(c("GSVA","GSEABase"), version = "3.8")
CRAN packages—pracma, utils, stats, MASS, digest, curl,
quadprog.
install.packages('pracma', 'utils', ' stats', 'MASS',
'digest', 'curl', 'quadprog')
以上為xCell說明文檔的安裝說明,以下為網絡上的方法(用以下即可)。
install.packages('Rcpp') #########安裝各類程序包
devtools::install_github('dviraran/xCell')
library(xCell)
2.輸入文件
文件格式:Xcell 的輸入是來自人類混合樣本的基因表達矩陣。應該在運行 xcell 函數之前讀取它。矩陣應該是基因作為行名,列是樣本。如果基因表達式是一個標簽分隔的文件,可以使用下面的調用來讀取它:
expr = read.table(file.name, header=TRUE, row.names=1, as.is=TRUE, sep='\t')
如果基因表達數據來自微陣列,就不需要標準化。如果基因表達數據來自一個測序平臺,數值必須被歸一化為基因長度(例如,rpkm,tpm,fpkm)。Xcell 使用表達式級別排序,而不使用實際值,因此進一步的規范化不會產生影響。
3.xCell Pipeline
Xcell 管道由三個步驟組成,它們在 r 包中也表示為函數:
1. rawEnrichmentAnalysis
xCell.data$genes
作為最低要求,輸入基因表達矩陣至少需要5000個基因,但共用基因數目太少可能會影響結果的準確性。
Xcell 為每種單元格類型使用多個簽名??偣灿?89個特征符合64種細胞類型。完整的簽名列表可在以下網址找到:
xCell.data$signatures
得分計算使用單樣本基因集富集分析(ssGSVA)。對于每個單元格類型,計算來自多個相應簽名的多個得分的平均值。最后,平均分數被移動,使得每個單元格類型的最小分數為零。
scores = rawEnrichmentAnalysis(expr, signatures,
genes, file.name, parallel.sz, parallel.type = "SOCK")
2. transformScores
這個函數用于將得分從原始濃縮得分轉換為類似百分比的線性尺度,xcell 使用預先計算的校準參數進行轉換。Xcell 使用不同的參數設置基于序列的基因表達值和基于微陣列的值(有關調整校準參數的信息,請參閱注3)?;谛蛄械闹档膮悼梢栽谙旅嬲业?
xCell.data$spill$fv
對于基于微陣列的數據:
xCell.data$spill.array$fv
函數的用法如下:
tscores = transformScores(scores, fit.vals, scale, fn)
‘scores’是 rawenrichmentanalysis 的輸出; ‘ fit.vals’是上面描述的校準參數; 如果符合邏輯,則是否按比例縮放轉換后的分數(默認值為 true 并推薦使用)。
3. spillOver
spillOver(transformedScores, K, alpha = 0.5, file.name = NULL)
usage
xCellAnalysis(expr, signatures = NULL, genes = NULL, spill= NULL, rnaseq = TRUE, file.name = NULL, scale = TRUE, alpha =0.5, save.raw = FALSE, parallel.sz = 4, parallel.type = "SOCK",cell.types.use =NULL)
可簡化為
exprMatrix = read.table("expr",header=TRUE,row.names=1, as.is=TRUE)
4.實例
1)輸入樣本
在https://github.com/dviraran/xCell/tree/master/vignettes
sdy = readRDS('sdy420.rds')
sdy有兩種數據,一種是表達譜,另一種是細胞分數。
raw.scores = rawEnrichmentAnalysis(as.matrix(sdy$expr),
xCell.data$signatures,
xCell.data$genes) #首先生成原始分數
下一步是轉換原始分數,并應用溢出補償。為了獲得最佳的結果,最好只對相關的細胞類型進行溢出補償(例如,如果我們知道混合物中沒有巨噬細胞,最好將它們從分析中去除)。因此,我們將分數矩陣子集為僅在CyTOF數據集中也被測量的單元格類型:
cell.types.use = intersect(colnames(xCell.data$spill$K),
rownames(sdy$fcs))
最后一步是補償溢出效果的分數:
scores = spillOver(transformed.scores,xCell.data$spill.array$K)
請注意,我們在這里使用xCell.data$spill.array數據,因為表達式數據是用微陣列生成的。上面詳細介紹的管道也可以使用xCell分析包裝器功能同樣執行:
scores = xCellAnalysis(sdy$expr, rnaseq=F,cell.types.use = cell.types.use)
使用這些分數,我們現在可以找到細胞分數和細胞類型分數之間的相關性:
library(psych)
library(ggplot2)
fcs = sdy$fcs[rownames(scores),colnames(scores)]
res = corr.test(t(scores),t(fcs),adjust='none')
qplot(x=rownames(res$r),y=diag(res$r),
fill=diag(res$p)<0.05,geom='col',
main = 'SDY420 asspciation with immunoprofiling',
ylab = 'Pearson R')+labs(fill="p-value<0.05")+
theme_classic()+
theme(axis.text.x = element_text(angle = 45,hjust = 1))
該代碼生成一個條形圖(圖1a),用于顯示xCell分數與免疫分析的預期分數的相關性。我們發現18種細胞類型中的13種存在顯著相關性(p值<0.05),7種細胞類型中存在高相關性(R>0.5)。需要注意的是,xCell產生的是富集分數,而不是細胞類型的比例,因此不期望分數會與CyTOF比例相似,只是測量值之間將存在線性相關。
在上面的分析中,我們使用一個細胞子集運行了xCell,而不是所有64種細胞類型。在某些情況下,這可能會提高準確性,因為溢出補償程序可能會進行過度補償。因此,我們可以對所有細胞類型進行相同的分析,并與免疫圖譜分析進行關聯: