繼續上面MetaNeighbor 1的學習,我們做第二個測試數據,第二組場景的測試。
========測試數據2============
第二個數據集,基于已經訓練好或者注釋好的參考數據集,來衡量新數據集細胞類型注釋的準確性。這個測試數據是采用的BICCN,一個小鼠初級運動皮層的細胞。可以去作者的paper鏈接中下載。
library(MetaNeighbor)
library(SingleCellExperiment)
biccn_data <- readRDS("full_biccn_hvg.rds")
colnames(colData(biccn_data))
table(biccn_data$study_id)
dim(biccn_data)
從數據集來看,BICCN數據包含7個不同sample的數據集,總共482,712個細胞。這個數據,作者已經魚過濾,挑了319個高變異的基因了。
下面,使用trainModel函數通過訓練來獲得參考數據集,該函數具有與前面使用的MetaNeighborUS函數相同的參數。這里,我們利用兩種不同的注釋信息:一個是joint_subclass_label(中等分辨率,例如Vip中間神經元、L2/3 IT興奮神經元)和joint_cluster_label(高分辨率,例如Chandelier細胞),其實就是一個注釋的偏大類,一個注釋到了小類。
pretrained_model <- MetaNeighbor::trainModel(var_genes = rownames(biccn_data),
? ? ? ? ? ? ? ? ? ? ? ? dat = biccn_data,
? ? ? ? ? ? ? ? ? ? ? ? study_id = biccn_data$study_id,
? ? ? ? ? ? ? ? ? ? ? ? cell_type = biccn_data$joint_subclass_label)
write.table(pretrained_model,"pretrained_biccn_subclasses.txt")
pretrained_model <- MetaNeighbor::trainModel(var_genes = rownames(biccn_data),
? ? ? ? ? ? ? ? ? ? ? ? dat = biccn_data,
? ? ? ? ? ? ? ? ? ? ? ? study_id = biccn_data$study_id,
? ? ? ? ? ? ? ? ? ? ? ? cell_type = biccn_data$joint_cluster_label)
write.table(pretrained_model,"pretrained_biccn_clusters.txt")
下面,我們就加載我們的測試數據,也是scRNAseq包中的一組數據。
library(scRNAseq)
tasic <- TasicBrainData(ensembl=FALSE)
colnames(colData(tasic))
tasic$study_id <- "tasic"
biccn_subclasses <- read.table("pretrained_biccn_subclasses.txt",check.names=FALSE)
biccn_clusters <- read.table("pretrained_biccn_clusters.txt",check.names=FALSE)
aurocs <- MetaNeighborUS(trained_model=biccn_subclasses,
? ? ? ? ? ? ? ? ? ? ? ? dat = tasic,
? ? ? ? ? ? ? ? ? ? ? ? study_id = tasic$study_id,
? ? ? ? ? ? ? ? ? ? ? ? cell_type = tasic$primary_type,
fast_version=TRUE)
plotHeatmapPretrained(aurocs)
從圖中可以看出,主要有3個大的block,根據細胞類型來看,主要是non-neurons (左上), inhibitory neurons (中間block) 和excitatory neurons (右下角)。同時也說明在三個大類型內部,可以相互很好的匹配和預測。其實大類里面還可以再繼續細分小類,比如中間的inhibitory neurons。
進而,為了更加清晰的去發現inhibitory neurons 這個類型的詳細信息,我們可以利用splitTrainClusters和splitTestClusters函數,來提取結果的子集重新顯示。
gabaergic_tasic <- splitTestClusters(aurocs,k=4)[[2]]
gabaergic_biccn <- splitTrainClusters(aurocs[gabaergic_tasic,],k=4)[[4]]
full_label <- makeClusterName(tasic$study_id,tasic$primary_type)
tasic_subdata <- tasic[,full_label %in% gabaergic_tasic]
aurocs <- MetaNeighborUS(trained_model=biccn_subclasses[,gabaergic_biccn],
? ? ? ? ? ? ? ? ? ? ? ? dat = tasic_subdata,
? ? ? ? ? ? ? ? ? ? ? ? study_id = tasic_subdata$study_id,
? ? ? ? ? ? ? ? ? ? ? ? cell_type = tasic_subdata$primary_type,
fast_version=TRUE)
plotHeatmapPretrained(aurocs,cex=0.7)
從結果來看,訓練集中BICCN的Lamp5和測試數據的Igtp和Smad3高度一致同源。?
上面的熱圖表明,所有Tasic細胞類型都可以與一個BICCN亞類相匹配。我們下面查看inhibitory neurons 的細胞是否在高分辨率細胞類型上能獲得同樣的結果。
aurocs <- MetaNeighborUS(trained_model=biccn_clusters,
? ? ? ? ? ? ? ? ? ? ? ? dat = tasic_subdata,
? ? ? ? ? ? ? ? ? ? ? ? study_id = tasic_subdata$study_id,
? ? ? ? ? ? ? ? ? ? ? ? cell_type = tasic_subdata$primary_type,
fast_version=TRUE)
plotHeatmapPretrained(aurocs,cex=0.7)
因為BICCN的細胞類型過多,這個圖就顯得稍微復雜,我們也可以像前面一樣,只顯示最高hit的cell來顯示。
best_hits<- MetaNeighborUS(trained_model=biccn_clusters,
? ? ? ? ? ? ? ? ? ? ? ? dat = tasic_subdata,
? ? ? ? ? ? ? ? ? ? ? ? study_id = tasic_subdata$study_id,
? ? ? ? ? ? ? ? ? ? ? ? cell_type = tasic_subdata$primary_type,
fast_version=TRUE,
one_vs_best=TRUE)