title: "Interface with other single-cell analysis toolkits"
author: "Suoqin Jin"
date: "r format(Sys.time(), '%d %B, %Y')
"
output:
html_document:
toc: true
theme: united
mainfont: Arial
vignette: >
%\VignetteIndexEntry{Interface with other single-cell analysis toolkits}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
knitr::opts_chunk$set(eval = FALSE)
From CellChat version 0.5.0, USERS can create a new CellChat object from Seurat or SingleCellExperiment object. . If input is a Seurat or SingleCellExperiment object, the meta data in the object will be used by default and USER must provide group.by
to define the cell groups. e.g, group.by = "ident" for the default cell identities in Seurat object.
Please check the examples in the documentation of createCellChat
for details via help(createCellChat)
.
NB: If USERS load previously calculated CellChat object (version < 0.5.0), please update the object via updateCellChat
There are several excellent tools to convert between Seurat objects, SingleCellExperiment objects, and anndata objects. Here are two examples: one is Seurat R package from Satija Lab, and another is zellkonverter R package from Theis Lab.
Below we shows how to extract the CellChat input files as data matrix from other existing single-cell analysis toolkits, including Seurat and Scanpy.
CellChat requires two user inputs: one is the gene expression data of cells, and the other is either user assigned cell labels (i.e., label-based mode) or a low-dimensional representation of the single-cell data (i.e., label-free mode). For the latter, CellChat automatically groups cells by building a shared neighbor graph based on the cell-cell distance in the low-dimensional space or the pseudotemporal trajectory space.
For the gene expression data matrix, genes should be in rows with rownames and cells in columns with colnames. Normalized data is required as input for CellChat analysis, e.g., library-size normalization and then log-transformed with a pseudocount of 1. If user provides count data, we provide a normalizeData
function to account for library size.
For the cell group information, a dataframe with rownames is required as input for CellChat.
The normalized count data and cell group information can be obtained from the Seurat object by
data.input <- GetAssayData(seurat_object, assay = "RNA", slot = "data") # normalized data matrix labels <- Idents(seurat_object) meta <- data.frame(group = labels, row.names = names(labels)) # create a dataframe of the cell labels
The normalized count data and cell group information can be obtained from the Seurat object by
data.input <- seurat_object@data # normalized data matrix labels <- seurat_object@idents meta <- data.frame(group = labels, row.names = names(labels)) # create a dataframe of the cell labels
anndata provides a python class that can be used to store single-cell data. This data format is also use for storage in the scanpy package. We first read the data into R using the reticulate package to import the anndata module.
Please also check the suggestions by other USERS (https://github.com/sqjin/CellChat/issues/300#issuecomment-1116343516)
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) meta <- meta.data
Upon extracting the required CellChat input files, then create a CellChat object and start the analysis.
cellchat <- createCellChat(object = data.input, meta = meta, group.by = "labels")
If cell mata information is not added when creating CellChat object, USERS can also add it later using addMeta
, and set the default cell identities using setIdent
.
cellchat <- addMeta(cellchat, meta = meta, 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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.