CellChat || Seurat、scanpy单细胞数据构建CellChat对象

我们展示如何从其他现有的单细胞分析工具包(包括Seurat和Scanpy)中提取CellChat输入文件。

CellChat需要两个输入文件:一个是细胞的基因表达数据,另一个是用户指定的细胞标签(即细胞标签)。或细胞数据的低维表示(即基于标签的模式(label-free模式)。对于后者,CellChat通过在低维空间或伪时间轨迹空间中根据cell-cell的距离建立共享邻居图来自动对cell进行分组。

对于基因表达数据矩阵,基因在行而cell在列,规范化数据作为CellChat分析的输入。如果提供counts数据,我们提供一个normalizeData函数来考虑库的大小。

  • Seurat V3
data.input <- GetAssayData(seurat_object, assay = "RNA", slot = "data") # normalized data matrix
labels <- Idents(seurat_object)
identity <- data.frame(group = labels, row.names = names(labels)) # create a dataframe of the cell labels
  • Seurat V2
data.input <- seurat_object@data # normalized data matrix
labels <- seurat_object@idents
identity <- data.frame(group = labels, row.names = names(labels)) # create a dataframe of the cell labels
  • Scanpy
    anndata提供了一个可用于存储单细胞数据的python类。这种数据格式也用于存储在scanpy包中。我们首先使用reticulate包将数据读入R以导入anndata模块。
library(reticulate)
ad <- import("anndata", convert = FALSE)
ad_object <- ad$read_h5ad("scanpy_object.h5ad")
# access normalized data matrix
data.input <- t(py_to_r(ad_object$X))
rownames(data.input) <- rownames(py_to_r(ad_object$var))
colnames(data.input) <- rownames(py_to_r(ad_object$obs))
# access meta data
meta.data <- py_to_r(ad_object$obs)
identity <- meta.data

接下来,我们可以构建cellchat对象了。

cellchat <- createCellChat(data = data.input)

cellchat <- addMeta(cellchat, meta = identity, meta.name = "labels")
cellchat <- setIdent(cellchat, ident.use = "labels") # set "labels" as default cell identity
levels(cellchat@idents) # show factor levels of the cell labels

https://htmlpreview.github.io/?https://github.com/sqjin/CellChat/blob/master/vignettes/Interface_with_other_single-cell_analysis_toolkits.html

你可能感兴趣的:(CellChat || Seurat、scanpy单细胞数据构建CellChat对象)