Monocle之CellDataSet结构
• 是什么:基因×细胞的 raw count 或 normalized 表达矩阵(稠密 matrix 或 sparse Matrix)。• 是什么:细胞×细胞距离矩阵(通常用 Reversed graph embedding 算出的)。• 是什么:mean-dispersion 拟合表(做负二项建模前计算的)。• 是什么:一个 igraph 对象,存 MST 的边、权重、节点名。• 是什么:表达量
下面把这个对象一次性讲透:
它来自 Monocle(注意不是 Monocle3!)的 CellDataSet 类(简称 CDS)。
CellDataSet 是一个 S4 对象,一共有 19 个 slot(官方文档说 18 个,但早期版本会多一个)。每个 slot 都存着单细胞轨迹分析不同阶段的关键信息。下面按“是什么 → 怎么取出来 → 什么时候用”的顺序逐条说明。
-
expressionData
• 是什么:基因×细胞的 raw count 或 normalized 表达矩阵(稠密 matrix 或 sparse Matrix)。
• 怎么取exprs(cds) # 取表达矩阵 exprs(cds) <- new_exprs # 重新赋值 -
phenoData
• 是什么:细胞元数据(细胞名、批次、cluster、Pseudotime…)。
• 怎么取pData(cds) # data.frame pData(cds)$Cluster # 取某一列 -
featureData
• 是什么:基因注释(gene_short_name、gene_biotype…)。
• 怎么取fData(cds) # data.frame -
reducedDimS / reducedDimW / reducedDimA / reducedDimK
• 是什么:不同降维结果
– S:t-SNE(2D/3D)
– W:diffusion map(Reversed graph embedding 用)
– A:ICA(早期版本)
– K:DDRTree 的 latent space(2D,轨迹主空间)
• 怎么取reducedDimS(cds) # 矩阵 2×nCells reducedDimK(cds) # 2×nCells,画轨迹图就用它 -
minSpanningTree
• 是什么:一个 igraph 对象,存 MST 的边、权重、节点名。
• 怎么取cds@minSpanningTree # 直接@ plot_spanning_tree(cds) # 高层接口 -
cellPairwiseDistances
• 是什么:细胞×细胞距离矩阵(通常用 Reversed graph embedding 算出的)。
• 怎么取cds@cellPairwiseDistances -
genePairwiseDistances
• 是什么:基因×基因距离矩阵(做基因聚类时用)。
• 怎么取cds@genePairwiseDistances -
dispersionTable
• 是什么:mean-dispersion 拟合表(做负二项建模前计算的)。
• 怎么取cds@dispersionTable -
fitModels / modelFormulaStr
• 是什么:负二项 GLM 的拟合结果和公式。
• 怎么取cds@fitModels cds@modelFormulaStr -
expressionFamily
• 是什么:VGAM 的 family 对象,告诉 Monocle 用负二项还是 tobit 等。
• 怎么取cds@expressionFamily -
lowerDetectionLimit / upperDetectionLimit
• 是什么:表达量阈值(如 0.1)用于定义“检测到/未检测到”。
• 怎么取cds@lowerDetectionLimit -
cellNames / geneNames
• 是什么:细胞/基因 ID 向量,冗余但方便。
• 怎么取cds@cellNames cds@geneNames -
logLikelihood / numCells / numGenes
• 是什么:拟合 log-likelihood 及细胞/基因数。
• 怎么取cds@logLikelihood -
其余 slot(略常用)
– DIMESlot(早期版本)
– paramsSlot(内部参数)
– featureNames(同 geneNames)
快速索引表(“我要拿什么?”)
| 任务场景 | 推荐函数/语法 |
|---|---|
| 查看表达矩阵 | exprs(cds) |
| 查看细胞注释 | pData(cds) |
| 查看基因注释 | fData(cds) |
| 画 t-SNE | plot_cell_trajectory(cds, color_by="Cluster") |
| 画 DDRTree 轨迹 | plot_cell_trajectory(cds, reduction_method="DDRTree") |
| 取 DDRTree 的 2D 坐标 | reducedDimK(cds) |
| 取 MST 的 igraph | cds@minSpanningTree |
| 手动改表达矩阵 | exprs(cds) <- as.matrix(new) |
| 手动改细胞注释 | pData(cds)$Time <- new_time |
常见陷阱 & 提示
-
早期 Monocle 版本(2017 前后)的 CellDataSet 里,
expressionFamily的 slot 名是fini1,新版 VGAM 把它改成了fini,于是老对象在新 VGAM 下会报Not a validObject(): 没有名称为"fini1"的插槽解决:重新用
newCellDataSet()生成,或用updateObject()升级对象。 -
如果只想把 CellDataSet 转成 Seurat:
library(Seurat) seu <- as.Seurat(cds) # Seurat ≥4.0 自带转换 -
保存 / 加载
saveRDS(cds, "cds_monocle.rds") cds <- readRDS("cds_monocle.rds")
至此,你就能读懂并随意操作这个 CellDataSet 了。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)