Aizarani et al. 的人肝脏单细胞 atlas 是器官图谱类单细胞论文中非常适合复核的一篇。本文从 GEO GSE124395 的 processed expression matrix 出发,整理 12,622 个细胞和 26,268 个表达基因。作者 clusterpartition 文件覆盖其中 10,372 个细胞,另有 2,250 个细胞不在该分区表中;两部分均保留,缺失作者 cluster 的细胞标为 not_in_partition。文章分开呈现作者数字 cluster、重新计算的 Leiden 结构、连续 marker program、留出 marker 和细胞名中的分选/样本线索。
科学更正(2026-07-19) 早期页面曾按每个 Leiden cluster 的最高 signature score 强制赋予 hepatocyte、endothelial、Kupffer/macrophage、T/NK 或 B/plasma 标签,未设置绝对阈值、top-two margin 和
unassigned,又用同一批 marker 作复核。相关精确身份计数、比例和“验证”表述现已撤回。本文现加入 GEO 第一方GSE124395_clusterpartition.txt.gz作者数字 cluster,只把 marker 结果作为连续表达程序;图 5 使用未参与 score 构建的留出 marker,图 6 使用样本层 program score 描述。本文不再据此推断空间生态位、区域方向或细胞命运。
为什么选 Aizarani 人肝脏 atlas?
肝脏是单细胞 atlas 里非常有代表性的组织。它既有高丰度的 hepatocyte,也有内皮细胞、Kupffer macrophage、T/NK、B/plasma、胆管上皮、星状细胞等微环境成分。对单细胞复现来说,肝脏数据的好处是 marker 清楚,生物学结构明确;难点是细胞来源复杂、分选策略复杂,公开矩阵不一定带有完整的逐细胞注释表。
这篇复现重点回答几个问题:
- GEO processed expression matrix 能否重新整理成单细胞对象?
- 细胞名前缀中的分选来源能否作为 metadata 线索使用?
- 作者数字 cluster、重新计算的 Leiden 结构和连续 marker program 是否相互一致?
- hepatocyte、endothelial、myeloid、lymphoid 等表达程序是否形成可解释的区域,而不把最高分程序直接变成身份?
- 哪些结果可以作为公开复现结论,哪些需要源论文注释或子集分析进一步支持?
这篇数据对应的真实研究痛点
肝脏 atlas 类数据的难点不是有没有 hepatocyte marker;怎样在 processed matrix、分选来源和不完整逐细胞注释之间保持解释克制。很多读者拿到类似数据后,会希望直接讨论肝细胞分区、门静脉/中央静脉区域差异、Kupffer 细胞生态位或肝内皮状态,但如果公开文件缺少空间坐标、完整 metadata 或作者精细注释,这些解释就不能只靠 UMAP 和几个 marker 推到机制层面。
因此,这篇复现的主要痛点是:在公开 processed expression 的边界内,怎样把作者 cluster、分选来源、无监督结构和连续肝脏表达程序整理成一条可审查证据链;同时把细胞身份比例、空间生态位、区域化和机制解释留给作者注释、可靠参考映射、子集重分析或空间/组织学证据。这里能回答“哪些表达程序可见”,不能回答“每个细胞的精确身份和组织比例是多少”。
论文和数据来源
- 论文:Aizarani et al. Nature, 2019
- 论文题名:A human liver cell atlas reveals heterogeneity and epithelial progenitors
- DOI:10.1038/s41586-019-1373-2
- PubMed:PMID 31292543
- 公开数据:NCBI GEO GSE124395
- 公开矩阵:Normal human liver cell atlas processed expression
复现边界说明 本文使用 GEO 提供的 processed expression matrix,并新增读取第一方作者数字 cluster 文件。该输入不是 10X raw matrix,也不是完整 FASTQ 处理流程输出。作者 cluster 只有数字编号,不等同于细胞类型;连续 program score 也不转换成离散身份。因此本文不报告新推导的细胞类型计数或比例。
作者分区表与表达矩阵的分母不完全相同。表达矩阵有 12,622 个细胞,clusterpartition 可匹配 10,372 个,剩余 2,250 个占 17.83%。这些细胞没有被删除,也没有根据当前 Leiden 结果补写作者标签。后文涉及作者 cluster 的图和表必须同时显示或说明 not_in_partition,避免把 10,372 个分区细胞误写成全矩阵分母。
数据规模:12,622 个细胞和 26,268 个表达基因
原始文件包含 33,941 个 gene 行和 12,622 个 cell 列。去除全零基因后,本次分析保留 26,268 个表达基因。细胞名中包含若干分选来源线索,例如 ASGR1+、CD45+、LSEC、EPCAM+、CD34+、primary hepatocyte 和 mixed liver cells。虽然这些不是完整注释,但可以帮助判断 UMAP 区域是否与分选来源一致。
- cells:12,622
- expressed genes:26,268
- Leiden clusters:17
- 作者 cluster 来源:GEO
clusterpartition第一方文件 - 作者分区覆盖:10,372 / 12,622
- 不在作者分区表:2,250 / 12,622(17.83%)
- 样本层描述:从细胞名解析 P4/P5/P301/P304/P308/P309/P310/P311;
unspecified单列保留

图 1. 数据集概览。根据细胞名解析分选/富集来源和样本线索,并展示每个细胞的总表达量与检测基因数。这个图不是最终细胞注释;它帮助理解公开矩阵的来源结构。
组成图必须和采样设计一起读。它能说明当前公开矩阵里哪些群体被观察到、样本或组织标签是否均衡,但不能直接外推成真实组织比例或临床差异。
分析流程:processed expression 的复现策略
这组数据不是 10X 三件套;它是一个 processed expression 大表。复现时不能机械套用 raw count 的全部参数。本次流程如下:
- 下载 GEO processed expression matrix,并确认 gene × cell 表结构。
- 去除全零基因,构建 cell × gene 单细胞对象。
- 从细胞名中解析分选来源和样本线索,作为 metadata,而不是当作最终细胞类型。
- 对表达值做清理和截断,避免 processed expression 中极端值影响高变基因选择。
- 按方差选择 3000 个高变基因,执行 PCA、neighbors、UMAP 和 Leiden 聚类。
- 计算 hepatocyte、cholangiocyte、endothelial、myeloid、lymphoid、mesenchymal 和 cycling 等连续 program score。
- 作者数字 cluster、Leiden cluster、分选来源和 program score 分栏保存;不执行最高分身份赋值。
- 使用未参与 score 构建的留出 marker 按 Leiden cluster 汇总,避免同 marker 循环自证。
这里特意没有使用会对 processed expression 做 expm1 的高变基因方法,因为该矩阵中存在较大的 processed 数值,直接使用某些 raw-count 假设会导致溢出。这是复现公开老数据时很常见的技术细节:先判断矩阵层级,再选择预处理策略。
UMAP 总览:主要大类结构可以恢复

图 2. UMAP 总览。依次展示分选来源、样本线索、重新计算的 Leiden cluster 和作者提供的数字 cluster。四类 metadata 的来源彼此独立,不把数字 cluster 或分选前缀直接当作细胞类型。
从 UMAP 看,部分表达区域与 ASGR1、LSEC/CD34 或 CD45 富集前缀存在对应,但分选来源只是实验入口,不是逐细胞身份。作者数字 cluster 和重新计算的 Leiden 也不是一一对应;这种差异正是需要保留的审计信息,而不是用最高分标签抹平。
marker UMAP:肝细胞、内皮和免疫细胞的证据

图 3. 经典肝脏 marker 在 UMAP 上的分布。ALB/APOA1 支持 hepatocyte,PECAM1/VWF 支持 endothelial,LYZ/PTPRC 支持免疫细胞,COL1A1 提示基质相关信号,KRT19/EPCAM 用于检查胆管/上皮相关区域。
这张图回答的是不同表达程序在低维空间中的位置。ALB/APOA1、PECAM1/VWF、LYZ/PTPRC 等基因可以提示肝实质、内皮或免疫相关区域,但单基因和 UMAP 位置都不构成逐细胞身份判定。
signature score:保留连续程序,不做最高分身份赋值

图 4. 多组肝脏相关 program score 在 UMAP 上的连续分布。颜色表示相对程序强度,不表示最终细胞类型,也不要求每个细胞必须属于某一类。
将 cluster 平均 score 的最大值直接转成身份,会迫使所有 cluster 进入某个类别;由该规则产生的 5,073、2,474 等身份计数已撤回。本文保留每个 Leiden cluster 的多维 program 均值,并在样本层保存 program 中位数。某个区域 hepatocyte program 较高,只能说明该表达程序更强;要转成细胞类型,需要作者标签或带置信度和拒绝状态的参考映射。
留出 marker:检查无监督 cluster,而不是循环验证标签

图 5. 使用未参与 program score 构建的留出 marker,按 Leiden cluster 汇总表达。该图用于描述 cluster 的额外表达特征,不为任何最高分标签背书。
留出面板包括 HP/FGB/CPS1、EMCN/PLVAP/RAMP2、FCER1G/TYROBP/CTSS、CD247/IL7R/KLRD1 和间质相关基因。它与 score 构建基因分离,因此可以帮助发现 cluster 与预期程序是否一致或冲突;但没有作者细胞类型标签时,仍不能据此发布精确身份比例。
样本层统计:不同样本的连续程序如何变化

图 6. 从细胞名解析到的样本 ID 层面汇总连续 program score 中位数;无法解析的细胞保留为 unspecified,不混入样本比较。
图 6 已停用推导身份比例,改为展示 P4/P5/P301/P304/P308/P309/P310/P311 等样本线索的连续程序中位数。样本 ID 来自细胞名解析,仍需把它视为描述性分层;没有临床协变量和完整样本设计时,不进行总体差异检验。分选策略会改变进入矩阵的细胞构成,因此也不能把任何样本差异解释成正常肝脏中的普遍比例或空间分区。
和源论文结果如何对照?
源论文的主线是构建人肝脏单细胞 atlas,揭示细胞异质性和 epithelial progenitor 相关结构。本文复现到的层级与源论文有以下一致点:
- 公开矩阵可恢复与 hepatocyte、endothelial、myeloid、lymphoid 等程序相关的表达结构。
- 作者数字 cluster、Leiden、分选来源、连续 score 和留出 marker 可以交叉审查,但不合并成未经校准的最终标签。
- 部分分选来源与表达区域相符,同时也保留不一致和
unspecified,避免把 metadata 线索写成身份事实。 - 肝脏 atlas 的解释必须同时考虑实质细胞和微环境细胞。
本文没有覆盖的内容也必须明确:
- 没有使用源论文完整逐细胞注释表。
- 没有复现所有精细亚群和 epithelial progenitor 分析。
- 没有进行空间定位、发育轨迹或完整细胞通讯分析。
- 没有把 processed expression 重新当作 raw UMI count 处理。
- 没有把分选后的细胞比例解释为完整组织真实比例。
复现这类 processed atlas 数据时容易出错的地方
第一,矩阵层级要先看清楚:这里是 gene × cell processed expression。第二,细胞名里的分选信息只能当 metadata 线索。第三,processed expression 不适合直接套用 raw count 假设。第四,没有作者细胞类型名称或可靠参考映射时,只报告连续 program 和 cluster 特征。第五,任何构成解释都要保留分选策略和样本来源。
主要结论 GSE124395 的 processed expression matrix 保留了可解释的肝脏表达程序和 cluster 结构。本文能支持的是作者数字 cluster、无监督结构、分选来源、连续 program score 与留出 marker 的一致性检查;不能支持新推导细胞身份的精确计数、组织比例、空间生态位或发育方向。
这篇复现能作为哪些项目模板?
- 器官 atlas 复现:从 processed expression matrix 恢复主要细胞结构。
- marker-supported 注释:在缺少完整注释表时,用 signature 给 cluster 做大类判断。
- 肝脏微环境解释:同时展示 hepatocyte、endothelial 和免疫细胞。
- 分选来源检查:把 ASGR1、CD45、LSEC、EPCAM 等来源线索纳入解释。
- 公开数据边界:区分 processed matrix 重分析和完整论文复刻。
- 报告结果图整理:将 UMAP、marker、signature 和 composition 组织成可读长文。
深度解读:这篇复现应该怎么读?
这篇 Aizarani 人肝脏 atlas 复现最值得强调的地方,是 GEO 同时提供 processed expression 和作者数字 cluster,却没有在当前输入中给出可直接使用的完整细胞类型名称。最高 program score 不用于补造标签;本文把作者 cluster、Leiden、分选来源、连续 program 和留出 marker 分开呈现。
1. 这篇复现回答了什么?
它主要回答的是“在缺少完整细胞类型名称时,公开 processed matrix 是否仍保留可审查的肝脏表达程序和 cluster 结构”。结果显示多组 program 与部分分选来源和留出 marker 相互呼应,但这一级证据只适合描述表达区域,不适合生成逐细胞身份比例。
这个层级的复现对公开笔记很有价值,因为很多老数据不是给你一个干净的 h5ad 或 Seurat 对象;它给一个 gene × cell 大表和不完整 metadata。本文展示的是如何把这类材料重新整理成可读图谱,但它不等于源论文的完整 annotation 复刻。
2. raw / processed matrix 的边界在哪里?
GSE124395 这里的输入是 processed expression,不是 10X raw matrix,也不是 FASTQ 重新比对结果。因此本文可以做表达图谱层面的复核,但不能重新评估所有上游步骤。例如原始低质量细胞如何过滤、每个分选批次的建库差异、作者精细注释时使用的全部辅助信息、epithelial progenitor 相关模型,都不能只靠本文这个矩阵重新完整还原。
本文还特意避免了把 processed expression 当作 raw count 处理。比如该矩阵中存在较大的 processed 数值,直接套用某些 raw-count 假设的 expm1 步骤可能导致溢出。这个技术细节看似小,但决定了复现文章是否严肃:先判断矩阵是什么,再决定分析策略。
3. 主要图应该怎么读?
图 1 先看数据来源和细胞名线索,图 2 对照分选来源、样本线索、Leiden 与作者数字 cluster,图 3 看代表性基因,图 4 看连续 program,图 5 用留出 marker 检查无监督 cluster,图 6 回到样本层 program 中位数。
图 6 已改为样本层连续 program 中位数。Aizarani 数据带有 ASGR1+、CD45+、LSEC、EPCAM+、CD34+ 等分选/富集来源,进入矩阵的细胞构成本来就会被实验设计改变;因此本文不再展示新推导身份组成,也不外推正常肝脏比例。
4. 哪些地方不能过度解释?
第一,不能把连续 program 的最高值写成细胞身份。第二,不能把作者数字 cluster 擅自翻译成现代细胞类型。第三,不能把分选来源直接等同于细胞类型。第四,不能把 processed expression 复现扩展成 epithelial progenitor、空间定位、发育轨迹或细胞通讯证明。
严肃的写法是:本文支持 hepatocyte、endothelial、myeloid、lymphoid 等连续表达程序在若干区域可见;更细的细胞类型、epithelial progenitor、胆管/星状细胞亚群和空间解释,需要作者标签、可靠参考映射或额外证据。
5. 如果继续深入,下一步做什么?
继续深入时,优先做三件事。第一,寻找或重建更完整的逐细胞注释表,把本文的粗粒度 identity 与源论文精细标签对齐。第二,分开处理 hepatocyte、endothelial 和 immune 子集,避免大类之间的表达差异掩盖内部状态。第三,把 epithelial progenitor、cholangiocyte、stellate/fibroblast 等低丰度或局部信号单独拿出来复核,而不是在全局 cluster 平均 score 中一笔带过。
如果要服务真实课题,Aizarani 这类图谱更适合作为肝脏单细胞项目的参照框架:先确认自己的数据是否能恢复 hepatocyte、endothelial、Kupffer/macrophage、T/NK、B/plasma 等主干结构,再根据课题问题进入更细的状态比较。不要一开始就把公开 atlas 中的所有亚群名称照搬到私有数据上。
小结
本次复现从 GSE124395 processed expression matrix 和作者 clusterpartition 出发,整理 12,622 个细胞和 26,268 个表达基因。本文只报告作者数字 cluster、Leiden、分选/样本线索、连续肝脏 program 和留出 marker;早期页面曾报告由最高分产生的精确身份计数与比例,这些结果已撤回。更细的细胞类型、空间区域和机制问题需要作者标签、可靠参考映射或额外实验层证据。