Garnett工作流包含两个主要部分: 训练/获取分类器:下载现有分类器,或训练自己的分类器。为了训练分类器,Garnett解析一个marker文件,选择一组训练细胞,然后训练一个多项式分类器来区分细胞类型。 对细胞进行分类:接下来,Garnett将分类器应用于待测组细胞,以分配细胞类型。Garnett可以选择将分类扩展到相似的细胞,以得到同一种细胞的亚型。
1.准备分类器
1.1使用预先训练的分类器
下载已有的分类器,并读入。
代码语言:javascript复制classifier <- readRDS("path/to/classifier.RDS")
1.2建立自己的分类器
如果针对您的组织类型不存在分类器,或者您的数据中不包含预期的细胞类型,则您需要生成自己的分类器。
image.png
导入数据
训练分类器的第一步是加载单细胞数据。 因为Garnett建立在Monocle上,所以Garnett的数据保存在 CellDataSet (CDS)该类的对象中。Monocle 在此处提供有关如何生成输入CDS的详细文档 。
例如,以PBMC数据为例
代码语言:javascript复制library(garnett)
# load in the data
# NOTE: the 'system.file' file name is only necessary to read in
# included package data
#
mat <- Matrix::readMM(system.file("extdata", "exprs_sparse.mtx", package = "garnett"))
fdata <- read.table(system.file("extdata", "fdata.txt", package = "garnett"))
pdata <- read.table(system.file("extdata", "pdata.txt", package = "garnett"),
sep="t")
row.names(mat) <- row.names(fdata)
colnames(mat) <- row.names(pdata)
# create a new CDS object
pd <- new("AnnotatedDataFrame", data = pdata)
fd <- new("AnnotatedDataFrame", data = fdata)
pbmc_cds <- newCellDataSet(as(mat, "dgCMatrix"),
phenoData = pd,
featureData = fd)
# generate size factors for normalization later
pbmc_cds <- estimateSizeFactors(pbmc_cds)
构造标记文件
除了表达式数据外,需要的第二个主要输入是标记文件。每个细胞类型定义均以 “>”符号和单元格类型名称开头,后接一系列带有定义信息的行。定义行以关键字和“:”开头,条目之间用逗号分隔。 如:
image.png
除了CDS对象和标记文件的路径外,还有一些要添加的参数:
-
db
:db
是用于转换基因ID的Bioconductor AnnotationDb类包的必需参数。例如,对于人类使用 org.Hs.eg.db。请参阅Bioconductor网站上的可用软件包 。使用加载您选择的数据库library(db)
。如果您的物种没有AnnotationDb类包,请参见 此处。 -
cds_gene_id_type
:此参数告诉Garnett CDS对象中基因ID的格式。它应该是中的值之一columns(db)
。默认值为“ ENSEMBL”。 -
marker_file_gene_id_type
:与上述类似,此参数告诉Garnett标记文件中基因ID的格式。
生成marker_check data.frame之后,可以使用的内置绘图功能 plot_markers
来查看结果。
library(org.Hs.eg.db)
marker_file_path <- system.file("extdata", "pbmc_bad_markers.txt",
package = "garnett")
marker_check <- check_markers(pbmc_cds, marker_file_path,
db=org.Hs.eg.db,
cds_gene_id_type = "SYMBOL",
marker_file_gene_id_type = "SYMBOL")
plot_markers(marker_check)
image.png
训练分类器
现在是时候训练分类器了。
代码语言:javascript复制library(org.Hs.eg.db)
set.seed(260)
marker_file_path <- system.file("extdata", "pbmc_test.txt",
package = "garnett")
pbmc_classifier <- train_cell_classifier(cds = pbmc_cds,
marker_file = marker_file_path,
db=org.Hs.eg.db,
cds_gene_id_type = "SYMBOL",
num_unknown = 50,
marker_file_gene_id_type = "SYMBOL")
head(pData(pbmc_cds))
查看分类基因
代码语言:javascript复制feature_genes <- get_feature_genes(pbmc_classifier,
node = "root",
db = org.Hs.eg.db)
head(feature_genes)
查看参考
上面 我们说明了如何在标记文件中包含有关如何选择标记的文档。为了获得这些信息-查看如何为已经训练有素的分类器选择标记-使用此功能get_classifier_references
。除分类器外,还有一个名为的附加可选参数cell_type
。如果传递细胞类型的名称,则只会打印该细胞类型的引用,否则将全部打印。
get_classifier_references(pbmc_class)
2.对细胞进行分类
未完待续