Garnett是一個(gè)從單細(xì)胞表達(dá)數(shù)據(jù)中實(shí)現(xiàn)自動(dòng)細(xì)胞類型分類的軟件包。Garnett的工作方式是獲取單細(xì)胞數(shù)據(jù)和細(xì)胞類型定義(marker)文件运褪,并訓(xùn)練一個(gè)基于回歸的分類器赠潦。一旦被訓(xùn)練成一個(gè)針對(duì)某一組織/樣本類型的一個(gè)分類器贬堵,它就可以應(yīng)用于從相似組織中對(duì)未來(lái)的數(shù)據(jù)集進(jìn)行分類。除了描述訓(xùn)練和分類功能脆侮,這個(gè)網(wǎng)站的另一個(gè)目標(biāo)是成為一個(gè)存儲(chǔ)以前訓(xùn)練出來(lái)的分類器倉(cāng)庫(kù)。
安裝Garnett
R> 3.5
依賴Monocle(3)勇劣,注意:Garnett 不再支持monocle2官網(wǎng)這樣寫真的很困惑靖避,因?yàn)楹竺娴睦雍芏噙€是基于monocle2的。
# First install Bioconductor and Monocle
if (!requireNamespace("BiocManager"))
install.packages("BiocManager")
BiocManager::install()
BiocManager::install(c("monocle"))
# Next install a few more dependencies
BiocManager::install(c('DelayedArray', 'DelayedMatrixStats', 'org.Hs.eg.db', 'org.Mm.eg.db'))
install.packages("devtools")
devtools::install_github("cole-trapnell-lab/garnett")
library(garnett)
Garnett工作流有兩個(gè)主要部分比默,每個(gè)部分的詳細(xì)描述如下:
Train/obtain the classifier: 要么下載現(xiàn)有的分類器幻捏,要么訓(xùn)練自己的分類器。為了訓(xùn)練命咐,Garnett解析一個(gè)標(biāo)記文件篡九,選擇一組訓(xùn)練細(xì)胞,然后訓(xùn)練一個(gè)多項(xiàng)分類器來(lái)區(qū)分細(xì)胞類型醋奠。
Classify cells: 接下來(lái)榛臼,Garnett將分類器應(yīng)用于一組細(xì)胞伊佃,以生成cell類型。Garnett還可以選擇將分類擴(kuò)展到類似的細(xì)胞讽坏,以生成一組獨(dú)立的分群擴(kuò)展類型锭魔。
使用預(yù)先訓(xùn)練的分類器
我們已經(jīng)為各種生物和組織生成了一系列預(yù)先訓(xùn)練的分類器。如果您的數(shù)據(jù)類型存在一個(gè)預(yù)先訓(xùn)練好的分類器路呜,我們建議您嘗試一下迷捧。可用的分類器列表可以在這里找到胀葱。我們希望在生成新的分類器時(shí)不斷地更新和添加它們漠秋。我們也接受由其他人產(chǎn)生的分類器-請(qǐng)?zhí)峤荒闼龅娜魏畏诸惼鞑椭⑸鐓^(qū)!關(guān)于如何提交分類器的詳細(xì)信息可以在這里找到。
目前已有的分類器模型:
Classifier | Marker file | Species | Tissue | Contributer | Training data source | Publication |
---|---|---|---|---|---|---|
hsLung | hsLung_markers.txt | Human | Lung | Hannah Pliner | Lambrechts et. al. | Pliner et. al. |
hsPBMC | hsPBMC_markers.txt | Human | PBMC | Hannah Pliner | 10x Genomics | Pliner et. al. |
mmLung | mmLung_markers.txt | Mouse | Lung | Hannah Pliner | Han et. al. | Pliner et. al. |
ceWhole | ceWhole_markers.txt | C. elegans | Whole | Hannah Pliner | Cao et. al. | Pliner et. al. |
mmBrain | mmBrain_markers.txt | Mouse | Brain and spinal cord | Hannah Pliner | Zeisel et. al. | Pliner et. al. |
根據(jù)你的組織類型下載一個(gè)吧抵屿。
使用一個(gè)預(yù)先訓(xùn)練好的分類器庆锦,首先下載分類器,然后將它加載到你的R會(huì)話使用:
classifier <- readRDS("path/to/classifier.RDS")
因?yàn)镚arnett 建立在 Monocle
上轧葛,所以Garnett 的數(shù)據(jù)保存在CellDataSet (CDS)類的對(duì)象中搂抒。這個(gè)類派生自Bioconductor ExpressionSet類,它為那些分析過(guò)生物微陣列實(shí)驗(yàn)的人提供了一個(gè)常見(jiàn)的接口尿扯。Monocle提供了關(guān)于如何生成輸入cds的詳細(xì)文檔here求晶。
例如,Garnett包含一個(gè)來(lái)自PBMC 10x V1表達(dá)式數(shù)據(jù)的小數(shù)據(jù)集.
# 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 <- new_cell_data_set(as(as.matrix(mat), 'sparseMatrix'),
cell_metadata = pdata,
gene_metadata = fdata)
# generate size factors for normalization later
#pbmc_cds <- estimateSizeFactors(pbmc_cds)#
有了分類器之后衷笋,就可以使用classify_cells函數(shù)對(duì)細(xì)胞進(jìn)行分類了!關(guān)鍵的點(diǎn)是:
-
cds
: 是包含您的基因表達(dá)數(shù)據(jù)的CDS對(duì)象(見(jiàn)上面)芳杏。 -
classifier
:這就是您在上面獲得的garnett_classifier -
db: db
: 是用于轉(zhuǎn)換基因id的生物導(dǎo)體注釋db類包的必要參數(shù)。例如辟宗,對(duì)于人類使用org.Hs.eg.db爵赵。在Bioconductor網(wǎng)站上可以找到相關(guān)的包裝。使用library(db)加載您選擇的db泊脐。如果您的物種沒(méi)有帶注釋的db類包空幻,請(qǐng)參見(jiàn)這里。 -
cluster_extend
:這告訴Garnett是否創(chuàng)建第二組任務(wù)容客,將分類擴(kuò)展到相同群中的細(xì)胞氛悬。您可以在名為“garnett_cluster”的列的pData表中提供分群的id,也可以讓Garnett分群并填充耘柱。
警告:如果不提供“garnett_cluster”列如捅,并將一個(gè)非常大的數(shù)據(jù)集的cluster_extend設(shè)置為TRUE,則此函數(shù)的運(yùn)行速度將大大降低调煎。為了方便起見(jiàn)镜遣,Garnett將它計(jì)算的集群保存為“garnett_cluster”,因此如果再次運(yùn)行該函數(shù),速度會(huì)更快悲关。
-
cds_gene_id_type
這個(gè)告訴garnett你的cd對(duì)象中基因id的格式谎僻。它應(yīng)該是列(db)中的一個(gè)值。默認(rèn)是“ENSEMBL”寓辱。
classify_cells函數(shù)在pData表中返回一個(gè)(如果cluster_extend = TRUE艘绍,則返回兩個(gè))包含Garnett分類的新列的輸入CDS對(duì)象。
pbmc_classifier<-hsPBMC
library(org.Hs.eg.db)
pbmc_cds <- classify_cells(pbmc_cds, pbmc_classifier,
db = org.Hs.eg.db,
cluster_extend = TRUE,
cds_gene_id_type = "SYMBOL")
head(pData(pbmc_cds))
DataFrame with 6 rows and 7 columns
tsne_1 tsne_2
<numeric> <numeric>
AAGCACTGCACACA-1 3.8403149909359 12.0841914129204
GGCTCACTGGTCTA-1 9.97096226657347 3.50539308651821
AGCACTGATATCTC-1 3.45952940410281 4.93527280576176
ACACGTGATATTCC-1 1.74394947394641 7.78267061846286
ATATGCCTCTGCAA-1 5.78344829514223 8.55889827553495
TGACGAACCTATTC-1 10.7928530485958 10.5852739146963
Size_Factor FACS_type garnett_cluster
<numeric> <character> <logical>
AAGCACTGCACACA-1 0.559181445161514 B cells NA
GGCTCACTGGTCTA-1 0.515934033527584 B cells NA
AGCACTGATATCTC-1 0.698028398302026 B cells NA
ACACGTGATATTCC-1 0.815631008885519 B cells NA
ATATGCCTCTGCAA-1 1.11532798424345 B cells NA
TGACGAACCTATTC-1 0.649469901028841 B cells NA
cell_type cluster_ext_type
<character> <character>
AAGCACTGCACACA-1 B cells B cells
GGCTCACTGGTCTA-1 B cells B cells
AGCACTGATATCTC-1 B cells B cells
ACACGTGATATTCC-1 B cells B cells
ATATGCCTCTGCAA-1 B cells B cells
TGACGAACCTATTC-1 Unknown Unknown
table(pData(pbmc_cds)$cell_type)
B cells CD34+ CD4 T cells CD8 T cells
321 1 89 52
Dendritic cells T cells Unknown
12 160 165
table(pData(pbmc_cds)$cluster_ext_type)
B cells CD4 T cells Dendritic cells T cells
373 200 3 200
Unknown
24
qplot(tsne_1, tsne_2, color = cell_type, data = as.data.frame(pData(pbmc_cds))) + theme_bw()
qplot(tsne_1, tsne_2, color = cluster_ext_type, data = as.data.frame(pData(pbmc_cds)))+ theme_bw()
上面的第一個(gè)圖顯示了Garnett的cell類型分配秫筏,第二個(gè)圖顯示了Garnett的集群擴(kuò)展類型分配诱鞠。您可以看到,T細(xì)胞子集(CD4和CD8)在這些集群中并沒(méi)有很好地分離这敬,因此在計(jì)算集群擴(kuò)展類型時(shí)航夺,Garnett將層次結(jié)構(gòu)退回到更可靠的“T細(xì)胞”分配。
因?yàn)檫@個(gè)示例數(shù)據(jù)來(lái)自FACS排序的細(xì)胞樣本崔涂,所以我們可以將Garnett的分配與“真正的”細(xì)胞類型進(jìn)行比較阳掐。
Troubleshooting
Common marker file errors
這里,我們提供了一些常見(jiàn)的標(biāo)記文件錯(cuò)誤和Garnett分類的潛在結(jié)果的例子冷蚂。對(duì)于所有面板缭保,分類器在10x PBMC version 2 (V2)數(shù)據(jù)上進(jìn)行訓(xùn)練,然后使用分類器對(duì)上面所示的10x PBMC version 1 (V1)數(shù)據(jù)進(jìn)行分類蝙茶。第一個(gè)面板由基于facs的10x單元類型分配著色涮俄。其余的面板由Garnett集群無(wú)關(guān)的細(xì)胞類型分配著色。
A cell type is missing from the marker file尸闸。在PBMC標(biāo)記文件中,不包括T細(xì)胞定義(面板2)孕锄。在原稿中討論的例外情況是吮廉,缺失的細(xì)胞類型(即表達(dá)NK標(biāo)記FCGR3A的NKT細(xì)胞)中存在描述現(xiàn)有細(xì)胞類型的特征。
A cell type is defined but includes no good specific markers. 在PBMC標(biāo)記文件中畸肆,只使用CD4而不是CD3來(lái)定義T細(xì)胞(面板3)宦芦。在這種情況下,我們發(fā)現(xiàn)Garnett只標(biāo)記了T細(xì)胞的一個(gè)子集轴脐,而未標(biāo)記其余細(xì)胞调卑。
A gene that is not specific and widely expressed is used to define a cell type. 如果我們將MALAT1 (PBMC數(shù)據(jù)集中表達(dá)最多的轉(zhuǎn)錄本)添加到T細(xì)胞定義(面板4)中,在這種情況下大咱,我們會(huì)發(fā)現(xiàn)每個(gè)細(xì)胞類型最終都在真細(xì)胞類型和T細(xì)胞之間混合分配恬涧。在另一種情況下,包含一個(gè)廣泛表達(dá)的非特異性基因可能會(huì)導(dǎo)致Garnett根本找不到足夠的訓(xùn)練樣本碴巾,因?yàn)樗鼤?huì)認(rèn)為所有細(xì)胞都是模糊的(即它們會(huì)表達(dá)其他標(biāo)記加上非特異性的)溯捆。
A cell type definition includes genes that are specific to another cell type. 是這樣一個(gè)定義在哪里真正的“錯(cuò)誤”,即如果B細(xì)胞(CD79A)是最好的標(biāo)記添加到T細(xì)胞的定義(面板5)。我們發(fā)現(xiàn)B細(xì)胞集群混合細(xì)胞類型任務(wù)的B細(xì)胞和T細(xì)胞,但是剩下的細(xì)胞類型的標(biāo)簽主要不變厦瓢。
My species doesn't have an AnnotationDbi-class database
If your species doesn't have an available AnnotationDbi-class database, then Garnett won't be able to convert among gene ID types. However, you can still use Garnett for classification. Set db = 'none' and then be sure that you use the same gene ID type in your marker file as your CDS object. When db = 'none' Garnett ignores the arguments for gene ID type.
citation("garnett")
# Hannah A. Pliner, Jay Shendure & Cole Trapnell (2019). Supervised classification enables rapid annotation of cell atlases. Nature Methods
#
# A BibTeX entry for LaTeX users is
#
# @Article{,
# title = {Supervised classification enables rapid annotation of cell atlases},
# journal = {Nature Methods},
# year = {2019},
# author = {Hannah A. Pliner and Jay Shendure and Cole Trapnell},
# }
#