本文摘自公众号 【生信诊断所】
原文链接:https://mp.weixin.qq.com/s/eV0m1H6a9gyf4FMZjqQnzA
摘要
Garnett是一个单细胞自动注释软件包,输入数据包括一个单细胞数据集和细胞类型定义文件。Garnett使用弹性网回归模型的机器学习算法训练出一个基于回归的分类器。随后训练好的分类器就可以用于更多数据集的细胞类型定义。 官网:https://cole-trapnell-lab.github.io/garnett/
b84303b69baa1fbcc7067ca42e05959c.png
- 安装
Garnett的运行依赖于monole,因此在安装garnett前需要先安装monole和其他依赖包。
我这里安装的是monocle3,所以以下记录都是根据monocle3的版本。
从Github上安装:必须要先安装monocle3和其他依赖包。
# First install Bioconductor and Monocle 3
if (!requireNamespace("BiocManager"))
install.packages("BiocManager")
BiocManager::install()
# Next install a few more dependencies
BiocManager::install(c('BiocGenerics', 'DelayedArray',
'DelayedMatrixStats',
'limma', 'S4Vectors', 'SingleCellExperiment',
'SummarizedExperiment'))
install.packages("devtools")
devtools::install_github('cole-trapnell-lab/monocle3')
安装Garnett
# Install a few Garnett dependencies:
BiocManager::install(c('org.Hs.eg.db', 'org.Mm.eg.db'))
# Install Garnett
devtools::install_github("cole-trapnell-lab/garnett",ref="monocle3")
导入Garnett
安装后,通过打开一个新的R会话并键入,测试Garnett是否安装正确
library(garnett)
2.使用
2.1,如果你有自己的marker,就可以训练你自己的classifier,
如果没有,可以下载官方的marker文件进行训练,或者直接下载已经训练好的classifier。
2.1a :训练自己的文件
先准备文件:文件格式要求如下:
>B cells
expressed: CD19, MS4A1
>T cells
expressed: CD3D
可以根据需要:
>B cells
expressed: CD19, MS4A1
expressed above: CD79A 10
references: https://www.abcam.com/primary-antibodies/b-cells-basic-immunophenotyping,
10.3109/07420528.2013.775654
>T cells
expressed: CD3D
sample: blood # A meta data specification
>Helper T cells
expressed: CD4
subtype of: T cells
references: https://www.ncbi.nlm.nih.gov/pubmed/?term=12000723
可以使用check_markers 和plot_markers去检查你自己的marker表达情况,根据情况再去调整marker文件,以达到最好的效果。
2.1b :下载已经训练好的classifier
下载地址:https://cole-trapnell-lab.github.io/garnett/classifiers/
2.2 导入数据
这里使用Seurat前期处理后的
Garnett 是基于monocle3,所以它输入的数据格式是CellDataSet(CDS)。
这一部分的操作可以参考monocle3的使用。
需要先创建CDS 对象
library(monocle3)
library(garnett)
library(org.Hs.eg.db)
# 这里使用的是Seurat经过标准流程处理过的seurat对象
data = GetAssayData(sc_seurat_obj, assay="RNA", slot = 'counts')
cell_metadata <- sc_seurat_obj@meta.data
gene_annotation <- data.frame(gene_short_name = rownames(data))
rownames(gene_annotation) <- rownames(data)
# 创建cds 对象
cds <- monocle3::new_cell_data_set(data, cell_metadata = cell_metadata,
gene_metadata = gene_annotation)
cds <- monocle3::preprocess_cds(cds, num_dim = 10)
# 对marker file中的marker基因评分
# 将自己准备的marker文件放入这里:"pbmc_bad_markers.txt",
marker_check <- check_markers(pbmc_cds, "./my_marker_file.txt",
db=org.Hs.eg.db,
cds_gene_id_type = "SYMBOL",
marker_file_gene_id_type = "SYMBOL")
plot_markers(marker_check)
0032fecb2b1dc90358bddb565889c59a.png
评估结果会以红色字体提示哪些marker基因在数据库中找不到对应的Ensembl名称,以及哪些基因的特异性不高(标注“High overlap with XX cells”)。我们可以根据评估结果优化marker基因,或者添加其他信息来辅助区分细胞类型。
2.4 训练分类器
# 使用marker file和cds对象训练分类器 # 这一步比较慢可以使用cores
sc_seurat_obj_classifier <- train_cell_classifier(cds = cds,
marker_file = "./my_marker_file.txt",
db = org.Hs.eg.db,
cds_gene_id_type = "SYMBOL",
num_unknown = 10,
marker_file_gene_id_type = "SYMBOL",
min_observations = 50,
cores = 16, # windows
# cores = 64, # linux
)
- 使用自己训练好的classifier预测自己的数据
pData(cds)$garnett_cluster <- pData(cds)$seurat_clusters
# 使用前面训练的pbmc_classifier来对自己的数据进行细胞分型
cds <- classify_cells(cds, sc_seurat_obj_classifier,
db=org.Hs.eg.db,
cluster_extend = TRUE,
cds_gene_id_type = "SYMBOL")
## 将结果返回给seurat对象# 提取分类结果
cds.meta <- subset(pData(cds),
select = c("cell_type","cluster_ext_type")) %>% as.data.frame()
sc_seurat_obj <- AddMetaData(sc_seurat_obj, metadata = cds.meta)
# 查看结果
DimPlot(sc_seurat_obj, group.by = "cluster_ext_type",
label = T, label.size = 3) + ggtitle("Classified by Garnett")
90e0f0441fb5da39b896391426f35e64.png
上图是用自己的真实的数据测试的结果。
准确性暂不评价,等测试完SingleR,scCATCH之后再对比一下。
生信学习交流Q群:826162518
网友评论