.h5ad文件,這是一種由Scanpy庫常用的單細(xì)胞數(shù)據(jù)分析文件格式,為anndata對象,可以使用R包anndata讀取到R中為R6對象,即有類似python中的面向?qū)ο蟮膶ο?,可以使?符號訪問屬性和應(yīng)用綁定的公用方法。
因此我們可以把最重要的信息,如表達(dá)矩陣,細(xì)胞注釋信息,高變基因信息提取出來用于創(chuàng)建Seurat、CellChat、monocle對象用于相應(yīng)的分析。
安裝和加載必要的R包
首先,確保安裝了Seurat, SeuratObject,CellChat, 以及monocle 包。如果未安裝,可以通過以下命令安裝:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install('monocle')
remotes::install_version("SeuratObject", "4.1.4", repos = c("https://satijalab.v", getOption("repos")))
remotes::install_version("Seurat", "4.4.0", repos = c("https://satijalab.v", getOption("repos")))
remotes::install_github('jinworks/CellChat')
remotes::install_github('immunogenomics/presto')
install.packages('anndata')
install.packages('reticulate')
然后加載這些包:
library(Seurat)
library(tidyverse)
library(CellChat
library(monocle)
library(magrittr)
library(reticulate)
設(shè)置python分析環(huán)境
確保python分析環(huán)境中安裝了anndata、scnapy等包
reticulate::use_condaenv(condaenv = '/home/data/will/miniforge3/envs/sc', required = TRUE)
讀取.h5ad文件
使用anndata包讀入adata.h5ad文件,讀入后的adata數(shù)據(jù)結(jié)構(gòu)如下,X儲存了表達(dá)矩陣行樣本名列是基因名,obs對應(yīng)seurat中的meta.data是細(xì)胞的注釋信息,var為基因的注釋信息數(shù)據(jù)框
ad <- reticulate::import("anndata")
adata <- ad$read_h5ad('adata.h5ad')
創(chuàng)建CellChat對象
CellChat通常需要特定的輸入格式,比如單細(xì)胞表達(dá)矩陣。如果您打算使用Seurat對象的數(shù)據(jù)進(jìn)行分析,可能需要提取表達(dá)矩陣和元數(shù)據(jù),具體方法請參考CellChat的文檔或教程。
cc <- CellChat::createCellChat(adata$T$X, meta=adata$obs, group.by = 'CellType')
創(chuàng)建Monocle 對象
對于Monocle ,首先確保您的數(shù)據(jù)已經(jīng)被正確整理成適合Monocle的格式,然后使用以下命令創(chuàng)建Monocle對象
fdata <- adata$var
fdata$gene_short_name <- rownames(fdata)
cds <- monocle::newCellDataSet(
cellData=Matrix::Matrix(adata$T$X),
phenoData = new("AnnotatedDataFrame", data = adata$obs),
featureData = new("AnnotatedDataFrame", data = fdata),
expressionFamily = VGAM::negbinomial.size()
)
創(chuàng)建Seurat對象
創(chuàng)建Seurat對象,保存原始counts信息,meta.data每個細(xì)胞的注釋信息,meta.features每個基因的注釋信息,umap信息用于繪圖。
對原始counts取log和標(biāo)準(zhǔn)化以便后續(xù)結(jié)果可視化和其他計算
srt <- Seurat::CreateSeuratObject(
counts=adata$T$layers['counts'],
assay = "RNA",
meta.data = adata$obs
)
srt[['RNA']]@meta.features <- adata$var
# 增加umap信息
coord <- adata$obsm$X_umap
rownames(coord) <- adata$obs_names
colnames(coord) <- c('umap_1','umap_2')
srt[['umap']] <- SeuratObject::CreateDimReducObject(
embeddings = as.matrix(coord),
key = "umap_",
assay = "RNA"
)
srt %<>% Seurat::NormalizeData() %>% Seurat::ScaleData(features=rownames(srt))
- 計數(shù)矩陣 (counts): 存儲每個細(xì)胞與基因的原始計數(shù)或經(jīng)過歸一化處理的表達(dá)值。這是Seurat對象的核心數(shù)據(jù),反映了每個細(xì)胞中各個基因的表達(dá)水平
- 元數(shù)據(jù) (meta.data): 包含每個細(xì)胞的額外信息,如細(xì)胞類型標(biāo)簽、樣本來源、實(shí)驗(yàn)條件等。這些信息對于后續(xù)的分析(如分群、注釋)至關(guān)重要。
- 特征(基因)數(shù)據(jù)(meta.features):每個特征(基因)的注釋信息
- log后的數(shù)據(jù) (data): 經(jīng)過規(guī)模校正(scale)的表達(dá)數(shù)據(jù),常用于降維和聚類分析之前,以消除技術(shù)偏差和細(xì)胞間總表達(dá)量的差異。
- 標(biāo)準(zhǔn)化數(shù)據(jù) (scale.data): 經(jīng)過規(guī)模校正(scale)的表達(dá)數(shù)據(jù),常用于降維和聚類分析之前,以消除技術(shù)偏差和細(xì)胞間總表達(dá)量的差異。
- 降維 (reductions): 存儲諸如PCA(主成分分析)、t-SNE(t分布鄰域嵌入)、UMAP(統(tǒng)一曼哈頓距離逼近投影)等各種降維方法的結(jié)果。這些降維表示有助于數(shù)據(jù)的可視化和探索。
- 集群信息 (ident 或 clusters): 記錄細(xì)胞的聚類結(jié)果,即每個細(xì)胞歸屬的細(xì)胞類型或亞群標(biāo)簽。
- 特征(基因)選擇 (selected.features): 在某些分析階段,如可視化時,可能只選取一部分最具區(qū)分度的基因。這部分?jǐn)?shù)據(jù)就記錄了這些被選中的基因。
- 標(biāo)記基因 (markers): 存儲了各個聚類或細(xì)胞群體的標(biāo)志性基因,通常基于差異表達(dá)分析得到。
- 圖譜 (neighbors): 計算細(xì)胞間的相似性并建立細(xì)胞間的鄰接關(guān)系,這對于識別細(xì)胞群體邊界和細(xì)胞間的連續(xù)性非常重要。
Reference
https://anndata./articles/getting_started.html