老规矩,推荐大家看官网,资料:
- 官网scMappR:https://cran.r-project.org/web/packages/scMappR/vignettes/scMappR_Vignette.html
- 数据:https://github.com/wilsonlabgroup/scMappR_Data
- 文章:https://academic.oup.com/nargab/article/3/1/lqab011/6148840
- 文章中所有数据和代码:https://figshare.com/s/3b5cfb597a0b3bc2801c
此包简单介绍:
当整个组织的RNA-seq(bulk RNA-seq)完成时,确定基因表达的变化在多大程度上是由于细胞类型比例的变化往往是一个挑战。这一挑战可以通过单细胞RNA-seq(scRNA-seq)方法来解决,该方法在单细胞分辨率下测量基因表达,利用scRNA-seq从bulk RNA-seq中了解细胞类型比例(RNA-seq反褶积)。
scMappR(single cell Mapper),通过利用scRNAseq和现有的反褶积方法生成细胞类型表达数据,为从bulk RNA-seq中获得的DEGs分配细胞类型特异性评分。
scMappR能同时推断哪些细胞类型驱动特定DEG的表达,并利用推断的DEG细胞类型特异性来完成细胞类型特异性通路分析。
原理图:
为了推断哪些细胞类型驱动了特定DEG的表达,scMappR工作流首先使用已建立的反褶积工具来推断细胞类型的比例。
主要功能:
- 1.Transforming summary statistics of differentially expressed genes by cell-type specific information
- scMappR_and_pathway_analysis()函数
- two_method_pathway_enrichment()函数
- cwFoldChange_evaluate()函数
- 2.Enriching cell-type markers in a list of genes
- 3.Processing scRNA-seq count data into a signature matrix
本教程需要使用的数据在:https://github.com/wilsonlabgroup/scMappR_Data,可前往自行下载下来保存到本地。
环境准备
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
if (!requireNamespace("devtools", quietly = TRUE))
install.packages("devtools")
BiocManager::install("pcaMethods")
BiocManager::install("GSVA")
devtools::install_github("wilsonlabgroup/scMappR")
library(scMappR)
signature matrix构建过程
我主要比较关心cell-type signature matrix是如何构建的~
文章中主要使用scMappR构建了一个cell-type signature matrix,然后使用CIBERSORT:(https://cibersortx.stanford.edu/) 进行尿液外泌体的细胞类型溯源。
溯源结果如下:
那么这里的关键就是:cell-type signature matrix的构建。
scMappR包可以将单细胞count矩阵转化为signature matrix,步骤如下:
- scMappR 输入一个count矩阵列表(列表内可以是 list、 dCGMatrix 或matrix对象类型) ,使用Seurat V4 对其进行重新处理
- 然后,基于 CellMarker 和 Panglao 数据库,使用 GSVA 和 Fisher精确检验方法查找细胞类型marker并识别潜在的细胞类型
- 最后,使用odds ratios值与ranks值创建一个signature matrix
- 这个包内置可选的组织数据有: “brain”, “epithelial”, “endothelial”, “blood”, “connective”,“eye”, “epidermis”, “Digestive”, “Immune”, “pancreas”, “liver”, “reproductive”, “kidney”, “respiratory”
主要使用的函数为:process_dgTMatrix_lists
去这个包内部一探究竟:
这个函数内部使用Seurat包处理单细胞数据,进行注释等操作。
只有一个样本的情况
只有一个样本时,不需要进行样本整合。
sm示例数据包含752个基因,236个细胞,组织类型为小鼠的眼睛。
rm(list=ls())
library(scMappR)
library(ggplot2)
library(RColorBrewer)
library(tidyverse)
# 参考数据例子
data(sm)
class(sm)
colnames(sm)
rownames(sm)
dim(sm)
sm[1:4,1:4]
4 x 4 sparse Matrix of class "dgCMatrix"
TCTCTAACACAGGCCT GTTAAGCTCAAGGTAA ATTCTACGTAAGGGAA TAAGCGTCAAGCTGTT
Abi1 . 7 1 1
AC026478.1 1 8 2 1
AC102483.1 7 2 3 7
AC120860.1 . 1 1 1
# 转成list对象
toProcess <- list(example = sm)
# 一键生成signature matrix
tst1 <- process_dgTMatrix_lists(toProcess, name = "testProcess", species_name = "mouse",
naming_preference = "eye", rda_path = "scMappR_Data-master/",
toSave = TRUE, saveSCObject = TRUE, path = "./")
# 探索一下数据结果
str(tst1)
tst1$wilcoxon_rank_mat_t[1:4,1:4]
tst1$wilcoxon_rank_mat_or[1:4,1:4]
str(tst1$generes)
tst1$cellLabel
这个步骤有用到一个marker数据,为包中:mouse_cell_markers.rda:https://github.com/wilsonlabgroup/scMappR_Data
lname <- load("scMappR_Data-master/mouse_cell_markers.rda")
lname
str(gmt_list,max.level = 1)
List of 5
$ gmt_both :List of 721
$ gmt_cellmarker:List of 579
$ gmt_gobp :List of 19394
$ gmt_panglao :List of 142
$ gmt_subtype :List of 19
总共有5个来源的常见细胞类型marker库
# CellMarker数据库marker
head(gmt_list$gmt_cellmarker)
$`Human: Kidney: Proximal tubular cell`
[1] "Akp3" "Alppl2" "Alpi"
$`Human: Liver: Ito cell (hepatic stellate cell)`
character(0)
$`Human: Endometrium: Trophoblast cell`
[1] "Psg16" "Psg23" "Ceacam2" "Ceacam13" "Psg22" "Psg26" "Ceacam14" "Psg21" "Ceacam12" "Psg29" "Ceacam3" "Psg20" "Psg25"
[14] "Ceacam5" "Psg19" "Ceacam1" "Psg27" "Psg18" "Psg28" "Ceacam10" "Psg17" "Gm5155" "Ceacam11"
$`Human: Germ: Primordial germ cell`
[1] "Ddx4"
$`Human: Corneal epithelium: Epithelial cell`
[1] "Klf6"
$`Human: Placenta: Cytotrophoblast`
[1] "Fgf10"
# 看看有多少种组织
names(gmt_list$gmt_cellmarker)
[1] "Human: Kidney: Proximal tubular cell"
...
[565] "Human: Fetal liver: Lymphoblast"
[566] "Human: Fetal liver: Erythroblast"
[567] "Human: Fetal liver: Endothelial cell"
[568] "Human: Fetal liver: Kupffer cell"
[569] "Human: Fetal liver: Mesenchymal cell"
[570] "Human: Fetal liver: Hepatocyte"
[571] "Mouse: Liver: Hepatocyte"
[572] "Human: Lung: Basal cell"
[573] "Human: Lung: Secretory cell"
[574] "Human: Lung: Ciliated cell"
[575] "Human: Lung: Brush cell (Tuft cell)"
[576] "Human: Lung: Neuroendocrine cell"
[577] "Human: Lung: Ionocyte cell"
[578] "Mouse: Trachea: Basal cell"
[579] "Mouse: Trachea: Cycling basal cell"
根据上面的process_dgTMatrix_lists函数,生成一个tst1对象,内容为:
- wilcoxon_rank_mat_t:数据框,为signature matrix的ranks值,rank值为(-log10(Padj) * sign(fold-change))
- wilcoxon_rank_mat_or:数据框,signature matrix的odds-ratios值
ranks值与or值的核心代码:所以,以后如果需要比较灵活的生成signature matrix,直接用下面的公式就可以了。
对于signature matrix,行是marker基因,列是注释的cell-type
- generes:注释后的细胞类型差异表达结果,为list对象,每一个list为此细胞类型中的细胞相对于剩余所有细胞的差异表达结果
- cellLabel:细胞注释详细情况,由四种方法分别注释的结果CellMarkerFisher,PanglaoFisher,CellMarkerGSVA,PanglaoGSVA。以及the top 30 markers per cluser。
其余情况
这个包还有列出有多个样本时和已经有注释的Seurat对象如果操作,那么,到这里,知道了ranks值与or值的核心代码,其实就可以脱离这个包自己造signature matrix了。