前面我們已經完成了cytof數據處理的主要步驟,讀入文件,質量控制,降維聚類分群,生物學注釋和細胞亞群比例差異分析。目錄如下:
其實跟純粹的單細胞轉錄組就非常類似了,不過單細胞轉錄組數據分析的細節以及背景我就不贅述了,看我在《單細胞天地》的單細胞基礎10講:
以及各式各樣的個性化匯總教程,差不多就明白了。
基本流程走完了,僅僅是萬裡長徵第一步而已。我們可以開始嘗試分析一些文獻的公共數據集啦,不過在處理那些數據的過程中,我們還需要傳授給大家幾個小技巧。
合併兩個不同panel的cytof數據集有一些情況下,你的同一個實驗項目的多個FCS文件,它們的抗體順序並不一致。如下:
sce1 <- prepData(fs, panel, md, features = panel$fcs_colname)
sce2 <- prepData(fs, panel, md, features = panel$fcs_colname)
rowData(sce1)[,1]
rowData(sce2)[,1]可以看到,兩個數據集的panel其實是一樣的:
> rowData(sce1)[,1]
[1] "PerCP-Cy5-5-A" "APC-H7-A" "BV510-A" "PE-Cy7-A"
[5] "BV421-A" "Alexa Fluor 647-A" "PE-A" "FITC-A"
> rowData(sce2)[,1]
[1] "PerCP-Cy5-5-A" "APC-H7-A" "BV510-A" "PE-Cy7-A"
[5] "PE-A" "Alexa Fluor 647-A" "FITC-A" "BV421-A"都是8個抗體,但是呢,順序不一樣。
這個時候需要對 SingleCellExperiment 對象了如指掌:http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html
different quantifications (e.g., counts, CPMs, log-expression) can be stored simultaneously in the assays slot,
and row and column metadata can be attached using rowData and colData, respectively.
metadata(1): experiment_info
assays(2): counts exprs
首先把SingleCellExperiment對象拆分SingleCellExperiment對象比較複雜,需要自行閱讀,http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html
拆分的代碼如下:
ct1=assay(sce1,1)
ct1[1:4,1:4]
ex1=assay(sce1,2)
ex1[1:4,1:4]
r1=as.data.frame(rowData(sce1))
c1=as.data.frame(colData(sce1))
ct2=assay(sce2)
ct2[1:4,1:4]
ex2=assay(sce2,2)
ex2[1:4,1:4]
r2=as.data.frame(rowData(sce2))
c2=as.data.frame(colData(sce2))
然後把兩個抗體對齊:r1;r2
n=match(r1$channel_name,r2$channel_name)
r1;r2[n,]
# 首先合併抗體信號矩陣
ct=cbind(ct1,ct2[n,])
ex=cbind(ex1,ex2[n,])
# 然後合併細胞的樣本來源及其分組信息
phe=rbind(c1,c2)
head(phe)
# 最後確定抗體的標記信息
r1 # 因為r2已經被修改回來成為了r1
# 參考 http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html
有了兩個矩陣,assays(2): counts exprs ,以及抗體信息,樣品信息,就可以重新組建SingleCellExperiment對象,它比較複雜,需要自行閱讀,http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html
最後重新組建SingleCellExperiment對象代碼超級簡單
sce <- SingleCellExperiment(
assays = list(counts = ct,exprs=ex),
colData = phe,
rowData = r1
)
sce得到的全新的SingleCellExperiment對象就包含了兩個不同panel順序的cytof數據集啦。
如果不僅僅是panel順序不一樣panel本身也不一樣,就比較麻煩了,不同的panel可能研究的生物學問題不一樣,或許有批次效應等其它未知的混雜因素。
需要具體問題具體分析啦。