Garnett

2020-06-16 14:54:37 浏览数 (1)

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对象和标记文件的路径外,还有一些要添加的参数:

  • dbdb是用于转换基因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来查看结果。

代码语言:javascript复制
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。如果传递细胞类型的名称,则只会打印该细胞类型的引用,否则将全部打印。

代码语言:javascript复制
get_classifier_references(pbmc_class)

2.对细胞进行分类

未完待续

0 人点赞