使用Celaref包进行单细胞类型注释分析(一):Celaref Overview and Installation

Celaref包简介

单细胞RNA-seq测序(scRNA-seq)技术可以解析组织或样品内的细胞异质性,并查看特定细胞类型的特征和变化情况。因此,在进行单细胞聚类分群后,我们需要弄清楚每个cluster簇的细胞类型。

在典型的scRNA-seq实验中,首先,我们对每个细胞的基因表达水平进行细胞计数定量。然后,根据基因表达水平的相似性对细胞进行聚类分群成不同的cluster簇。目前,有许多不同的细胞聚类工具可以做到这一点(Freytag et al. 2017)。

细胞聚类工具通常只能将相似的细胞聚成一个特定的cluster簇,但不提供有关其生物学意义的解释。对每个cluster簇的“细胞类型”的注释,主要由生物学家根据专业的生物学知识进行解析,它们通常会查看已知的marker基因的表达或差异分析以了解每个簇可能的细胞类型。

Celaref包主要通过与已知细胞类型的参考数据集的相似性进行比较,根据比较的结果对相似度高的、未知的cluster簇进行注释。Celaref需要每个细胞的基因表达矩阵,以及属于每个cluster的细胞列表(用于测试和参考数据)。它比较每个查询组中最显著富集的基因在参考样本中的排名,根据排名来匹配细胞类型。

参考文献:Sarah Williams (2019). celaref: Single-cell RNAseq cell cluster labelling by reference. R package version 1.0.1.

Celaref包工作流程

下面是典型的Celaref工作流程,它主要通过与带注释的参考数据集的转录组表达谱的相似性进行比较,来注释查询数据集中的不同clusters。


image.png

Prepare dataset 准备数据集

使用Celaref包进行细胞类型注释时,我们主要需要以下两个输入文件:

  • A counts matrix of number of reads per gene, per cell(基因表达矩阵)。
gene    Cell1   cell2   cell3   cell4   …   cell954
GeneA   0   1   0   1   …   0
GeneB   0   3   0   2   …   2
GeneC   1   40  1   0   …   0
  • Cluster assignment for each cell(细胞分群信息).
CellId  Cluster
cell1   cluster1
cell2   cluster7
…   …
cell954 cluster8

Within dataset differential expression 进行差异表达分析

我们采用相同的方式准备好每个数据集(无论是查询还是参考数据集)。对于每个cluster簇,将该簇内的细胞与其他簇合并在一起的细胞进行比较,使用MAST方法进行基因的差异表达分析(Finak等人,2015)。由于单细胞RNA-seq数据中很多基因的表达较低,并存在潜在的缺失(drop-out)问题,因此仅考虑每个cluster簇中显著富集的基因。对于每个cluster簇,Celaref将细胞根据其表达水平的差异倍数的低于95%CI值从高到低排序。每个基因都有一个从0(最富集)到1(最不存在)的“rescaled rank”。此步骤耗时最久,但每个数据集只需要执行一次。

Query-Reference comparison 比较查询-参考数据集

进行差异分析后,我们可以得到每个查询细胞簇(query cluster)的“Up”基因列表,这些基因在该cluster中的表达明显高于其在其他簇中的表达(BH多重假设校正后,p<0.01)。然后,在每个参考数据集的细胞簇中查找这些基因的排名。最后,根据这些“Up“基因排名的分布,来评估查询细胞组与参考细胞组的相似性。

输出结果

Interpreting output 解释输出结果

通常,我们将查询数据集中的每个cluster簇与参考数据集(X轴)中的所有cluster簇进行作图。其中,刻度线表示up基因,中间基因等级用粗线显示。靠近顶部的偏差分布表示各组的相似性 - 基本上相同的基因代表了它们各自样品中的cluster。


image.png
  • A median gene rank of 0.5 would indicate a completely random distribution. However, much lower values are common. The reciprocal nature of the within-dataset differential expression can cause this - what’s up in one cluster is down in another.

  • A small or heterogeneous cell group will not have much statistical power to select many ‘top’ genes (few tick marks) and these distributions will not be particuarly informative. If there are no ‘top’ genes it won’t be plotted at all.

  • Because ‘top’ genes are compared to total reference rankings - the comparison between two datasets is not symmetrical. In ambiguous cases, it might helpful to plot the reverse comparison from reference to query. Note that these receiprocal comparisons are considered in Assigning labels to clusters. For instance - if a query cluster happens to be a mix of two reference cell groups, a reciprocal plot may make this more obvious.

Assigning labels to clusters 为clusters分配标签

image.png

Celaref包的安装

The bioconductor landing page with information about this package is at https://bioconductor.org/packages/celaref

# To install from bioconductor via BiocManager
# Installing BiocManager if necessary:
install.packages("BiocManager")
BiocManager::install("celaref")

# Or, to use the dev version from github
devtools::install_github("MonashBioinformaticsPlatform/celaref")

Quickstart

假设有一个新的scRNA-seq数据集(查询集),其细胞被分为了4个cluster组,但并不知道这些cluster分别代表哪种细胞类型。幸运的是,在相同的组织类型中,有一个其他的数据集(参考集)已经确定好了其中的细胞类型,并将其分别命名为‘Weird subtype’, ‘Exciting’, ‘Mystery cell type’和‘Dunno’。
本示例,我们将使用这个参考数据集的标签,对未知的测试数据集进行细胞类型的注释。

# 加载celaref包
library(celaref)

# Paths to data files.
# 设置查询数据集路径
counts_filepath.query <- system.file("extdata", "sim_query_counts.tab", package = "celaref")
cell_info_filepath.query <- system.file("extdata", "sim_query_cell_info.tab", package = "celaref")

# 设置参考数据集路径
counts_filepath.ref <- system.file("extdata", "sim_ref_counts.tab", package = "celaref")
cell_info_filepath.ref <- system.file("extdata", "sim_ref_cell_info.tab", package = "celaref")

# Load data
# 加载参考数据集
toy_ref_se <- load_se_from_files(counts_file=counts_filepath.ref, cell_info_file=cell_info_filepath.ref)
toy_ref_se

class: SummarizedExperiment 
dim: 200 515 
metadata(0):
assays(1): counts
rownames(200): Gene1 Gene2 ... Gene199 Gene200
rowData names(1): ID
colnames(515): Cell1 Cell4 ... Cell995 Cell1000
colData names(5): cell_sample Cell Batch group ExpLibSize

# 加载测试数据集
toy_query_se <- load_se_from_files(counts_file=counts_filepath.query, cell_info_file=cell_info_filepath.query)
toy_query_se

class: SummarizedExperiment 
dim: 200 485 
metadata(0):
assays(1): counts
rownames(200): Gene1 Gene2 ... Gene199 Gene200
rowData names(1): ID
colnames(485): Cell2 Cell3 ... Cell998 Cell999
colData names(5): cell_sample Cell Batch group ExpLibSize

# Filter data
# 使用trim_small_groups_and_low_expression_genes函数进行数据过滤
toy_ref_se     <- trim_small_groups_and_low_expression_genes(toy_ref_se)
toy_query_se   <- trim_small_groups_and_low_expression_genes(toy_query_se)

# Setup within-experiment differential expression
# 使用contrast_each_group_to_the_rest函数进行差异表达分析
de_table.toy_ref   <- contrast_each_group_to_the_rest(toy_ref_se, dataset_name="ref")
head(de_table.toy_ref)[,1:5]

de_table.toy_query <- contrast_each_group_to_the_rest(toy_query_se, dataset_name="query")
head(de_table.toy_query)[,1:5]

# Plot
# 使用make_ranking_violin_plot函数可视化分析结果
make_ranking_violin_plot(de_table.test=de_table.toy_query, de_table.ref=de_table.toy_ref)
#> Warning: `fun.y` is deprecated. Use `fun` instead.
#> Warning: `fun.ymin` is deprecated. Use `fun.min` instead.
#> Warning: `fun.ymax` is deprecated. Use `fun.max` instead.
image.png
# And get group labels
# 使用make_ref_similarity_names函数查看注释的结果
make_ref_similarity_names(de_table.toy_query, de_table.toy_ref)
image.png

参考来源:http://www.bioconductor.org/packages/release/bioc/vignettes/celaref/inst/doc/celaref_doco.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343