简 介
单细胞RNA测序(scRNA-seq)在异质组织中区分细胞类型、状态和谱系。然而,目前的单细胞数据不能直接将细胞簇与特定表型联系起来。在这里,我们提出Scissor方法,从单细胞数据中识别与给定表型相关的细胞亚群。Scissor通过首先量化每个单细胞和每个大样本之间的相似性,整合了表型相关的大样本表达数据和单细胞数据。然后,优化了与样本表型相关矩阵的回归模型,以确定相关的亚群。将Scissor应用于肺癌scRNA-seq数据集,确定了与生存率较差 和TP53突变相关的细胞亚群。在黑色素瘤中,Scissor发现了与免疫治疗反应相关的低PDCD1/CTLA4和高TCF7表达的T细胞亚群。除癌症外,Scissor在解释面部肩胛骨肌肉萎缩症和阿尔茨海默病数据集方面也很有效。Scissor通过利用表型和大体积组学数据集,从单细胞分析中识别生物学和临床相关的细胞亚群。
Sicssor包含拟议的Sicssor算法(Sicssor功能),这是一种新的单细胞数据分析方法,利用大量表型从单细胞测序数据中识别最高度表型相关的细胞亚群。Sicssor的优势可以简单概括如下:
首先,通过Sicssor识别的表型相关细胞具有独特的分子特性,涉及到关键的标记基因和给定表型的生物学过程。
其次,Scissor不需要对单细胞数据进行任何无监督聚类,从而避免了对细胞簇数或聚类分辨率的主观决定。
最后,Scissor提供了一个灵活的框架来整合大量数据中的各种外部表型,以指导单细胞数据分析,从而实现临床和生物学相关细胞亚群的无假设鉴定。
软件包安装
软件包安装非常简单,
if(!require(Scissor))
devtools::install_github('sunduanchen/Scissor')
但是要注意以下里面依赖的Seurat软件包,因为我安装的是V5+版的,所以在读取对象的时候显示Assay5,因此需要object的class 为 Assay,按照如下代码加入options()。
library(Scissor)
library(Seurat)
options(Seurat.object.assay.version = "v3")
数据读取
Scissor输入有三个数据源:单细胞表达矩阵、批量表达矩阵和感兴趣的表型。每个大样本的表型注释可以是一个连续的因变量,二元组指标载体,或临床生存数据。我们使用肺腺癌(LUAD) scRNA-seq癌细胞的几个应用数据作为示例来展示如何在实际应用中执行Scissor。
数据源需要三种类型数据:
单细胞数据:count矩阵或者Seurat创建的object;
bulk转录组数据:表达矩阵
临床信息数据:cox回归要求必须有time和status,其他两种不需要
看下例子中的数据格式:
1. 单细胞数据:
准备原始count矩阵,如下:
location <- "https://xialab.s3-us-west-2.amazonaws.com/Duanchen/Scissor_data/"
load(url(paste0(location, 'scRNA-seq.RData')))
dim(sc_dataset)
## [1] 33694 4102
class(sc_dataset)
## [1] "matrix" "array"
利用Seurat_preprocessing()对原始矩阵进行处理,包括"RNA"、"RNA_nn"、"RNA_snn"、"pca"、"tsne"、"umap"。详细流程如下:
Create a Seurat object from raw data.
Normalize the count data present in a given assay.
Identify the variable features.
Scales and centers features in the dataset.
Run a PCA dimensionality reduction.
Constructs a Shared Nearest Neighbor (SNN) Graph for a given dataset.
Identify clusters of cells by a shared nearest neighbor (SNN) modularity optimization based clustering algorithm.
Run t-distributed Stochastic Neighbor Embedding (t-SNE) dimensionality reduction on selected features.
Runs the Uniform Manifold Approximation and Projection (UMAP) dimensional reduction technique.
sc_dataset <- Seurat_preprocessing(sc_dataset, verbose = F)
## Warning: The default method for RunUMAP has changed from calling Python UMAP via reticulate to the R-native UWOT using the cosine metric
## To use Python UMAP via reticulate, set umap.method to 'umap-learn' and metric to 'correlation'
## This message will be shown once per session
names(sc_dataset)
## [1] "RNA" "RNA_nn" "RNA_snn" "pca" "tsne" "umap"
DimPlot(sc_dataset, reduction = 'umap', label = T, label.size = 10)
2. bulk转录组数据
load(url(paste0(location, 'TCGA_LUAD_exp1.RData')))
dim(bulk_dataset)
## [1] 56716 471
bulk_dataset[1:5,1:5]
## TCGA-05-4249 TCGA-05-4250 TCGA-05-4382 TCGA-05-4384 TCGA-05-4389
## TS