单细胞染色质的三维重建 — ChromPolymerDB 结构库

约一亿条构象 / 五十种细胞 / 5 kb 分辨率

来源 https://chrompolymerdb.bme.uic.edu/发布时间: 2026-10-28最后更新: 2026-10-28 阅读 14
单细胞染色质的三维重建 — ChromPolymerDB 结构库

信息速览

数据集名称单细胞染色质的三维重建 — ChromPolymerDB 结构库
数据类型多组学,原始数据链接,元数据,文献引用
规模不适用(五十份细胞系样本,非患者队列)
接入方式https://chrompolymerdb.bme.uic.edu/
AI 就绪度

Hi-C 给出的是接触频率:某两个 5 kb 片段在一千万个细胞里被交联到一起的次数。这个数字很硬,也很糊——它把细胞之间的差别全部平均掉了。同一份样本里,有的细胞把增强子折到启动子旁边,有的没有;热图上只剩一个不高不低的灰度。

ChromPolymerDB 想做的是把这张平均图重新拆开。它从五十份人类 Hi-C 样本出发,用聚合物物理模型把接触频率还原成一条条具体的珠链:每个建模区段给出五千条三维构象,每条构象是一串带坐标的珠子,每颗珠子对应 5 kb 的染色质。官方把这个集合的规模写作约 10⁸ 条。

代价也很清楚:这些坐标是推断出来的,不是拍出来的;覆盖的是被挑选过的区段,不是整条染色体;分辨率停在 5 kb,再细就看不清了。它适合回答「空间关系在细胞之间有多不稳定」,不适合回答「这个细胞里这两个位点到底隔多少纳米」。一屏速览见下表。

维度 内容
全名 ChromPolymerDB: a high-resolution database of single-cell 3D chromatin structures for functional genomics
维护方 伊利诺伊大学芝加哥分校 生物医学工程系 生物信息与定量生物学中心、电子可视化实验室
通讯作者 Constantinos Chronis(UIC)、Daniel M. Czajkowsky(上海交通大学)
首次发布 2025 年,版本 v1.0
正式论文 核酸研究 2026 年 54 卷 D1 期,D994–D1004,DOI 10.1093/nar/gkaf1233
预印本 bioRxiv,DOI 10.1101/2025.09.27.678816
样本数 50 份人类 Hi-C 样本(4D Nucleome 19、ENCODE 18、GEO 13)
细胞类型 50 种(36 种正常、14 种疾病相关),覆盖十一大生理系统中的十个
构象总量 官方摘要写作约 10⁸ 条
基因组区段 六万余个
分辨率 5 kb,参考基因组 hg38
每区段构象 5000 条
接触判据 两珠欧氏距离小于 80 nm
导出格式 CSV(坐标表、距离矩阵),无整库打包
许可 论文 CC BY 4.0;数据库本身未单列数据许可
官方入口 https://chrompolymerdb.bme.uic.edu/

§1 它要解决的具体麻烦

1.1 群体平均把最要紧的那部分信息抹掉了

一份标准 Hi-C 文库要动用百万量级的细胞。交联、酶切、连接、测序,最后得到的是一个矩阵,矩阵里每个格子是「这两个片段被连在一起」的相对频次。这个过程在设计上就是求平均:它不区分是哪个细胞贡献了这次连接,也无法追溯。于是热图上一条清晰的斜线、一个方正的域、一处亮点,都是统计意义上的结构,不是任何一个真实细胞的素描。

单细胞 Hi-C 想解决这个问题,但它有另一个麻烦:每个细胞能测到的接触太少。一份单细胞文库常常只有几万到几十万个有效接触,摊到全基因组上,5 kb 的格子绝大多数是空的。用它重建三维结构,等于用几十个点去定几千个位置,解不稳定。

sBIF 走的是第三条路:不去测单细胞,而是把群体数据当成一个约束,反推出一批满足这个约束的单细胞构象。逻辑上它更接近「用边缘分布采样联合分布」,代价是这批构象的可信度完全依赖于模型假设——核体积、聚合物行为、接触阈值这三件事一旦定错,出来的链就会系统性偏移。§4.2 的案例展示了这条路能走多远:在 MYC 位点上,它给出的不是一张图,而是一个分布。

1.2 三条常见的错误期待

第一条,期待它是「单细胞级别的观测坐标」。这是最普遍的误解。库里的每一个 x、y、z 都是模型算出来的,官方从未把它包装成显微成像的替代品。真实的三维测量要靠染色质追踪或超分辨成像,一次只能看几十个位点;这里一次给出整段 5 kb 链,但都是推断值。两者能互相印证,不能互相替代。

第二条,期待它能覆盖整个基因组、拿来做全基因组训练。实际情况是:建模单元由最外层拓扑关联域的边界决定,小于 1 Mb 的域会被合并,接触过于稀疏的区段被整体剔除。所以六万余个区段是「被选中的可建模区段」的集合,而不是把三十亿碱基切成 5 kb 之后的连续平铺。

第三条,期待它自带模拟引擎、可以自己改参数重跑。库里给的是结果,不是模型。sBIF 与 CHROMATIX 的代码需要回到原论文的仓库去拿;本库提供的是结构、查询界面和几个离线分析脚本(聚类、多体接触统计、可视化),不含从 Hi-C 重新推断构象的完整流程。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
某个位点在单细胞间的构象差异 每区段五千条构象,可算两两距离分布 够,这是它最核心的能力
增强子与启动子的空间距离 指定珠对的三维距离及全系综分布 够,但距离是模型单位,需自行标定
多增强子协同接触(多体接触) 可从坐标自行统计,官方给了范例脚本 够,口径须与官方一致(§5.6)
跨细胞类型的结构比较 五十种细胞同一区段的并排查询 够,但样本选择受原始数据限制
表观遗传与结构的联合查看 内嵌 IGV,可挂 ENCODE 轨道或自传文件 够,轨道是外链,不是库内数据
全基因组连续的 5 kb 坐标 仅覆盖被建模区段 不够,缺的区段没有插值
实验验证过的单细胞位置 无 不够,库内无成像对照
直接训练三维结构预测模型 六万余区段乘五千条,体量大且需自行抓取 可做,工程成本高于想象(§5.7)
非人类物种的构象 仅人类 不够,官方把扩展物种列为未来计划
商用产品内嵌 许可未单列 不够,须先取得书面确认

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
你手上有一份 Hi-C,想说明「这个增强子-启动子接触在细胞间不稳定」 提供同细胞类型同区段的构象系综,可算接触频率分布 先用同一区段对齐坐标,再用距离阈值复算接触率,别直接引用库里的百分比
你在做变异致病性解读,怀疑结构变异破坏了某个域内接触 给出野生型背景下的距离分布,作为「正常范围」参照 记下区段边界与珠序号映射,结构变异需自己改链再重算
你想比较两种细胞类型的调控结构差异 五十种细胞可并排查询,官方给了三细胞对比范例 选差异明确的细胞对(如高表达与不表达),先看表观轨道再下结论
你在搭三维基因组的多模态模型 坐标、距离、接触三类张量齐备,可作监督或先验 先确认许可与引用要求,再按区段批量导出(§5.7)
你想验证自己的构象推断方法 有官方基线,同一区段可直接比对 用官方导出的距离矩阵做对齐,别用自己的单位换算
你只是想知道某个基因周围长什么样 网页端输基因名即可出图 直接开网页,不必写代码(§5.2)
你要写综述,需要一句话说清它与 Hi-C 浏览器的差别 一条明确的分界:二维接触 vs 三维坐标 引论文讨论节,那里有它与六个近邻的对比

1.5 一句话判断

它不是「更好的 Hi-C 浏览器」,而是「把 Hi-C 的热图翻译成坐标」的一台翻译机:翻出来的句子读得通,但每个词都是译者的选择。

1.6 不适合谁:四条边界

不适合把坐标当测量值的人。 任何需要用纳米级真实距离下结论的研究——比如判断某个增强子在某细胞里是否物理接触——都不能只靠这个库。它的距离是模型内部的欧氏距离,单位与真实核内距离之间只做过整体标定,没做过逐位点校准。

不适合要全基因组覆盖的人。 区段是被挑选的,挑选规则与数据质量绑定:测序深度不够的样本,能建模的区段就少;接触稀疏的区域被整体剔除。要做全基因组扫描式的分析,会撞上大片的空洞,而且空洞不是随机的——它们系统性偏向基因贫瘠区与着丝粒附近。

不适合要跨物种比较的人。 目前只有人类。官方在讨论里把「扩展到其他物种」写成未来计划,说明现在没有。

不适合把五千条构象当五千个细胞的人。 这是一个采样集合,每条构象都是模型在同一组约束下的一次抽样。它们之间的差异反映的是解的分布宽度,不是细胞的真实异质性。把接触频率读成细胞阳性率,是本库最典型的一次误用,也是 json_ld 里专门标注的那一条。

§2 数据构成与规格

2.1 一份样本、一个区段、五千条链

库的组织方式可以拆成三级。最外层是样本:五十份 Hi-C,各自对应一个细胞系或一种实验条件,命名沿用原始数据的细胞系名,例如 Calu3、GM12878、IMR90、CD14 阳性单核细胞。中间层是区段:每份样本按自己的拓扑关联域边界切出若干可建模区段,官方给出的总量是六万余个,跨全部样本累计。最内层是构象:每个区段五千条珠链,每条链上珠子的数量由区段长度除以 5 kb 决定。

三级结构决定了查询方式。你不能「下载 Calu3 的全基因组坐标」,只能「查询 Calu3 在 8 号染色体某个区间的坐标」。网页端要求输入细胞系名与坐标或基因名,后端再判断这个区间是否落在某个已建模区段内;落不进去就返回无覆盖的提示。这个交互不是设计缺陷,而是数据本身的形状:模型是逐区段跑的,没有跨区段的连续解。

珠子的物理含义需要说清。一颗珠子代表 5 kb 染色质,被当作一个球形单元,直径与接触阈值同量级。珠间只有两种关系被显式建模:沿链的相邻连接与空间距离小于阈值的接触。域、隔间、环这些更高阶结构都不是输入,而是从这两条规则里涌现的——所以库里没有「TAD 标签」这一列:域边界是建模的输入(用来切区段),域本身不以标注形式存储。

2.2 字段与记录的完整字典

下表把网页端可见的信息项、接口返回的字段与导出文件的列放在一起。需要提醒的是:官方没有发布字段说明文档,下表依据论文方法节、官方教程仓库的示例脚本与前端代码整理,属于「按可观察行为归纳」,不是官方数据字典。

信息项 出现位置 取值形态 含义 使用注意
细胞系名 查询表单 字符串,如 Calu3 样本标识 大小写敏感,须与官方列表一致
染色体 查询表单 字符串,如 chr8 染色体 不同接口对前缀要求不一致(§5.3)
区段起点 查询表单 整数,碱基坐标 查询区间左端 须落在已建模区段内
区段终点 查询表单 整数,碱基坐标 查询区间右端 超出部分被截断
基因名 查询表单 字符串,如 MYC 按基因定位区段 走另一条后端路径
分辨率 论文与界面 固定 5 kb 每颗珠的碱基数 全库统一,无多分辨率选项
参考基因组 论文 hg38 坐标体系 hg19 数据已被转换
构象编号 导出表 整数,0 至 4999 该区段的第几条链 跨区段不唯一,须与区段联合做主键
珠序号 导出表 整数,从 0 起 沿链的位置 与基因坐标的换算靠区段起点
三维坐标 x 导出表 浮点 模型空间横坐标 单位未在文档中给出
三维坐标 y 导出表 浮点 模型空间纵坐标 同上
三维坐标 z 导出表 浮点 模型空间竖坐标 同上
两两距离 距离矩阵导出 浮点矩阵 构象内珠对欧氏距离 每构象一个矩阵
显著接触对 热图上三角 区间对列表 CHROMATIX 判定的折叠重构接触 已做多重检验校正
实验接触频率 热图下三角 整数或浮点矩阵 原始 Hi-C 观测 与上三角共用色标
表观轨道 内嵌浏览器 外链或本地上传 ENCODE 的组蛋白与转录因子数据 非库内存储
基因注释 热图下方面板 基因名与位置 区段内基因 点击可高亮

导出坐标表的确切列数,官方教程没有列全。仓库里的多体接触脚本只取其中四列——珠序号与 x、y、z——其余列在脚本里没有被引用。这意味着如果要做坐标之外的分析(比如按基因组坐标对齐),需要自己确认列的语义,不能照抄脚本的下标。

2.3 一条记录的完整解剖

以官方教程反复使用的那个例子为例:Calu3 细胞,8 号染色体 127,200,000 到 127,750,000,这是 MYC 所在的一段,长约 550 kb。除以 5 kb,得到约 110 颗珠子,正好对上脚本里「每个构象 110 行」的假设。

导出之后,文件是长表,一行一颗珠。结构大致如下:

id,sampleid,...,x,y,z
0,0,...,12.418,-3.207,8.915
1,0,...,13.002,-2.884,9.401
2,0,...,13.551,-2.402,9.877
#-- 同一构象编号下连续 110 行构成一条链
#-- 编号换到 1 之后,重新从链首开始

读这张表有三件事必须记住。第一,sampleid 是构象编号而不是样本编号,同一个区段内取值从 0 到 4999;跨区段不唯一,所以主键必须是「细胞系 + 染色体 + 区段 + 构象编号 + 珠序号」五元组。第二,id 是珠在链上的位置,从 0 开始,左闭右开地对应基因组坐标:第 n 颗珠覆盖区段起点加 n 乘 5000 到加 (n+1) 乘 5000。第三,xyz 是模型空间的坐标,单位在官方文档里没有写明;不同区段、不同样本之间的坐标不能直接相减比较,只有在同一构象内部算距离才有意义。

把这三条落到代码上:

import pandas as pd
import numpy as np

#-- 官方教程给出的导出文件命名规则:细胞系_染色体_起点_终点.csv
path = "Calu3_chr8_127200000_127750000.csv"
df = pd.read_csv(path)

print(df.columns.tolist())
print(df.shape)

#-- 每个构象的珠数,应与 (终点-起点)/5000 相符
per_model = df.groupby("sampleid").size()
print(per_model.head(), per_model.unique())

#-- 取一条链,算首尾距离,作为该构象的回转半径替代量
one = df[df["sampleid"] == 0].sort_values("id")
xyz = one[["x", "y", "z"]].to_numpy()
print(np.linalg.norm(xyz[-1] - xyz[0]))
print(np.linalg.norm(xyz - xyz.mean(axis=0), axis=1).mean())

最后两行给出两个最常用的结构量:端到端距离与平均回转半径。它们本身没有绝对意义,只有放进五千条构象的分布里、或者跨样本对比时,才有解释力。

2.4 五十份样本的来源与构成

样本不是自己测的,是从三个公共门户里挑出来的。官方在方法节给出了明确的三分法与筛选标准。

来源 样本数 补充说明
4D Nucleome 数据门户 19 美国核小体计划产出的高深度 Hi-C
ENCODE 门户 18 细胞系齐全,配套表观数据完整
基因表达综合库 13 零散提交,格式与深度差异较大

三条筛选标准是:人类来源、测序深度足以支撑 5 kb 分辨率、细胞群体足够均一。官方还说明,在某些情况下把条件相近的多个数据集合并,以把分辨率推到 5 kb。这条说明值得注意:所谓「五十份样本」中有部分是合并后的产物,一个样本不等于一次实验、一个文库。

构成上,三十六种为正常细胞(含原代与培养细胞),十四种为疾病相关;覆盖十一大生理系统中的十个,缺的是泌尿系统。这个覆盖度是按系统点数的,不是按细胞数加权的——某个系统可能只有一种细胞,另一个系统有七八种。

维度 官方表述 实际含义
正常细胞 36 种 含原代细胞与永生化培养细胞,二者不可混为一类
疾病相关 14 种 以肿瘤细胞系为主,含少量其他疾病模型
生理系统 十一分之十 缺泌尿系统,肾脏与膀胱来源的细胞不在库内
物种 仅人类 小鼠、果蝇等模式生物不在库内
合并样本 部分 为达到 5 kb 而合并条件相近的数据集
细胞均一性 筛选条件之一 排除了混合群体与组织切片类样本

有几类具体的细胞在论文的案例里被点名:Calu3(肺腺癌)、GM12878(B 淋巴母细胞样)、IMR90(胎肺成纤维)、CD14 阳性单核细胞(原代)。这四个恰好构成一条对照轴——两种高表达 MYC 的细胞、一种低表达的、一种正常原代,官方用它来讲跨样本比较能看出什么(§4.3)。

2.5 与同类资源的字段差异

对比项 ChromPolymerDB 3D Genome Browser HiChIPdb GSDB Nucleome Browser
核心内容 三维坐标 二维接触矩阵 二维接触矩阵 三维结构 多组学浏览
数据结构 每区段五千条链 每条记录一套矩阵 每条记录一套峰 结构模型 异构资源索引
单细胞分辨率 模型系综 部分数据集有 无 部分 视资源而定
分辨率 5 kb 低至 1 kb 视实验 视模型 视资源
数据来源 五十份 Hi-C 八百余套公开数据 公开 HiChIP 已发表模型 多门户聚合
是否含模型推断 全部是 否 否 是 部分
导出形态 CSV 坐标与距离 矩阵文件与注释 峰表 结构文件 链接跳转
覆盖范围 六万余区段 全基因组 全基因组 视研究 视资源
许可 未单列 随来源定 随来源定 随来源定 随来源定

这张表想说明的只有一件事:本库在「是否含模型推断」这一列上是唯一全部为「是」的。其余资源的坐标要么来自实验,要么来自各自研究的一次性建模,都不是可批量取用的系综。

2.6 从接触矩阵到坐标的四步预处理

官方把从原始 Hi-C 到可建模区段的过程写成四步,每一步都会在最终数据里留下痕迹。

第一步是取矩阵。有 hg38 版本的 .hic 就直接下载;只有 hg19 版本的,用 HiCLift 转到 hg38;连矩阵都没有的,从原始测序读段重新生成。这一步决定了坐标系的一致性,也解释了为什么库内所有区段都是 hg38。

第二步是调用域边界。用 OnTAD 在 50 kb 尺度上跑,参数放得比较宽松(惩罚项置零、局部差异阈值 0.25、最小与最大域规模分别设为 3 与 80 个 50 kb 单元),目的是尽量多地覆盖基因组。只取最外层(第一层)的域作为建模单元,因为最外层域通常包含完整的结构单元。

第三步是切区段与合并。小于 1 Mb 的域并入邻域,前提是合并后不超过 3.5 Mb。这条规则直接决定了库里的区段长度分布:太短的不要,太长的拆不开就先合并,上限 3.5 Mb。

第四步是剔除稀疏区。一个区段里如果含有任何接触的格子不到百分之一,整段剔除。这条最狠,也最能解释「为什么有些基因查不到」:它在数据里存在,但它的邻域接触太稀疏,模型跑不出可信结构。

步骤 工具 关键参数 留下的痕迹
取矩阵 原始门户、HiCLift 参考基因组 hg38 全库坐标统一
调边界 OnTAD 50 kb 分辨率、宽松参数 区段边界与常见 TAD 调用结果不完全一致
切与并 自定规则 小于 1 Mb 合并、上限 3.5 Mb 区段长度集中在 1 至 3.5 Mb
剔稀疏 自定规则 有接触的格子占比小于百分之一 部分基因区域整体缺失

第三步与第四步的规则是官方自定的,没有对应的公开工具,也没有在论文里给出实现代码。这意味着别人无法用同样的规则复现出同一套区段边界——这是本库在可复现性上的一处结构性缺口,不是疏漏,而是方法学论文常见的边界。

§3 它是谁的数据库:一个可视化实验室与一个物理模型

3.1 机构与团队

库挂在伊利诺伊大学芝加哥分校的生物医学工程系下,具体是两个单元的联合产物:生物信息与定量生物学中心负责数据与建模,电子可视化实验室负责前端与三维渲染。域名里的 bme 就是生物医学工程系的缩写,这一点常被误读成某个独立机构。

作者列表有十二人,共同一作为 Min Chen 与 Lin Du。通讯作者两位:Constantinos Chronis,UIC 生物化学与分子遗传学系,负责染色质与基因调控方向;Daniel M. Czajkowsky,上海交通大学生物医学工程学院,负责方法学与单分子方向。其余作者覆盖建模(Jie Liang)、可视化(G. Elisabeta Marai、Debaleena Chattopadhyay)、数据(Siyuan Zhao、Bowei Ye、Pourya Delafrouz、Hammad Farooq)与生物学(Zhifeng Shao)。

这个组合解释了两件事:前端比多数生物数据库细,因为有专门的可视化实验室参与,三维用 WebGL 直接渲染而不是塞静态图;方法节比常规数据库论文长,因为模型是主线,数据库是配套。

角色 人员 所属 负责
共同一作 Min Chen UIC 生物医学工程 数据构建、分析、初稿
共同一作 Lin Du UIC 生物医学工程 建模流程、项目管理
通讯 Constantinos Chronis UIC 生物化学与分子遗传学 染色质生物学、课题统筹
通讯 Daniel M. Czajkowsky 上海交通大学 方法学、单分子
建模 Jie Liang UIC 生物医学工程 sBIF 与构象推断
可视化 G. Elisabeta Marai UIC 电子可视化实验室 三维界面与交互
数据 Siyuan Zhao、Bowei Ye UIC 数据处理与软件

3.2 模型的谱系:从串珠与结合者到 sBIF

要理解库里那些坐标是怎么来的,得先知道它所处的方法谱系。染色质聚合物模型有两条主线:一条是平衡态的自组装模型,把染色质当成自避链,链上散布能与扩散分子结合的位点,结合之后自动成环;另一条是非平衡的挤出模型,靠马达蛋白主动把环挤出来。前者在文献里通常叫串珠与结合者模型(strings and binders),后者常与黏连蛋白、CTCF 一起讨论。

sBIF 属于前一条线,但做法反了过来。传统用法是先设参数、再算构象、最后与 Hi-C 比;sBIF 是先拿 Hi-C 当目标,用序贯贝叶斯的方式一步步收紧约束,生成一批与目标一致的构象。官方强调它「假设最少、无可调参数」,指的是不需要人工调结合能或浓度这类物理量——约束来自数据本身。

这里必须切开一个容易混淆的地方。串珠与结合者模型的原产地是那不勒斯的一支物理团队,他们围绕 Sox9、Epha4、HoxD 等位点做过大量工作,参数集散落在各篇论文的补充材料里,从未汇总成一个公开参数库。本库不是那套参数集的集合,它收录的是模型跑完之后的结构坐标。名字里的 polymer 指的是建模手段,不是指它存的是参数。

3.3 资金、期刊与收录

论文的资助来源横跨两国:中国国家重点研发计划一项、国家自然科学基金四项、何鸿毅基金会;美国国立卫生研究院六项、国家科学基金会一项、能源部 INCITE 计划的高性能计算机时;另有 UIC 健康数据科学研究所的支持。这套资助结构说明计算资源不是小数目——五十份样本、每份五十万条零模型构象、每个区段五千条推断构象,加起来是千万核时量级的工作。

期刊方面,正式版发表在核酸研究的数据库专刊,2026 年 54 卷 D1 期,页码 D994 到 D1004。时间线是 2025 年 8 月 13 日收稿、9 月 27 日修回、10 月 16 日接受、11 月 18 日上线,随后收入次年一月的专刊。预印本在 2025 年 9 月 29 日挂出,节点正好在收稿与修回之间。

第三方收录方面,国家生物信息中心的 Database Commons 有两条记录(编号 10677 与 10686),字段基本重复,内容略有出入:一条把总量写成 10⁸,另一条在摘要里把上标写丢成「108」。这类小毛病在自动抓取的目录里很常见,引用时应以论文与官网为准。

3.4 它不是什么:先把三个近邻排除

第一个要排除的是「Hi-C 数据仓库」。它不存原始测序数据,也不存接触矩阵的原始文件;热图是查询时从库里取的中间结果,用于和模型对照。要拿原始 .hic,得回 4DN、ENCODE 或 GEO。

第二个要排除的是「三维基因组浏览器」。浏览器类的资源围绕基因组坐标组织注释,核心动作是「沿染色体滑动看轨道」;本库围绕构象组织坐标,核心动作是「取一组链、算距离分布」。两者的检索入口长得像,取出来的东西完全不同。

第三个要排除的是「参数库」。名字里带 polymer,容易让人以为它存的是结合能、浓度、网格间距这类模型参数。实际上这些参数在 sBIF 里被消解掉了——官方明确说无可调参数。库里没有一张参数表,只有坐标表。

§4 质量与特色

4.1 分辨率与区段划分的实际含义

5 kb 是一个需要放在上下文里理解的分辨率。它比常规 Hi-C 的 25 kb 或 40 kb 细,比 Micro-C 的几百碱基粗,比单细胞成像能看到的位点密得多。落到生物学上:一个 5 kb 的珠子大约能装下几个基因的启动子区,但装不下一个完整的增强子簇;能看出「这一带靠近那一带」,看不出「这个碱基贴着那个碱基」。

这个尺度决定了它的适用问题。域级别的重排、隔间切换、大范围的距离变化,都在它的能力范围内;单个转录因子结合位点与启动子之间的精确几何,超出它的能力。用的时候要把问题调到与分辨率匹配的尺度上,否则会得到一堆看起来有差异、实际是噪声的数字。

区段划分带来的限制更实际。因为建模单元是最外层域,库里的区段边界与常见的 TAD 调用结果不会完全一致;因为小于 1 Mb 的域被合并,短域在库里可能根本不存在;因为稀疏区被剔除,着丝粒附近与基因贫瘠区大片缺失。这三点叠加起来,使得「按基因查不到」成为常态而非例外。查不到时先别怀疑拼写,先看该区间是否落在已建模区段内。

4.2 案例:Calu3 细胞里 MYC 位点的六个增强子

官方用 MYC 讲了两遍故事,一遍讲单样本内的异质性,一遍讲跨样本的差异。这个例子值得细看,因为它同时展示了这个库能做什么、以及它的数字该怎么读。

先看单样本。Calu3 是肺腺癌细胞,MYC 高表达。官方先在热图与表观轨道上圈出六个候选增强子,再用 sBIF 为该区段生成五千条构象,然后统计有多少条构象里至少有一个增强子与 MYC 的转录起始位点距离小于阈值。结果是 45.5%,也就是五千条中的二千二百七十五条。再往下拆:其中 37.5%(一千八百七十一条)只有单个增强子接触,14.8%(三百三十六条)有两个增强子同时靠近,3%(六十八条)有三个。

官方由此得出一个判断:约 18% 的增强子-启动子关系发生在多体构型里。这句话的含义是,在这批构象中,多数接触是「一对一」的,但也有相当一部分是几个增强子聚在启动子周围同时接触。官方进一步算了每个增强子的偏好:增强子 I、III、IV 更容易参与多体接触,其中 I 对三增强子组合的富集倍数达到 5;VI 更偏向单增强子接触,富集倍数 1.19。三增强子的具体组合也有偏好,(IV, V, VI) 占 54.4%,(I, IV, VI) 占 20.6%,(I, II, III) 占 8.8%。

这些数字怎么读,是这一节的关键。它们描述的是五千条模型构象的分布,不是五千个细胞的普查。官方自己在方法里写得很清楚:每个数据集生成五千条构象,两条珠距离小于 80 nm 记为接触。所以「45.5%」的准确读法是「在这个模型系综里,45.5% 的采样满足该几何条件」,它可以用来比较不同细胞类型之间的相对高低,不能用来声称「这个肿瘤里近一半细胞如此」。

放到跨样本比较里,这个相对性就更清楚了。官方把 Calu3、GM12878 与 CD14 阳性单核细胞放在一起:前两者 MYC 高表达,后者几乎不表达。三者的增强子 repertoire 不同——Calu3 有六个活跃增强子,GM12878 共享其中两个另有一个独有的,单核细胞的候选增强子与转录起始位点没有接触。GM12878 的增强子-启动子接触只出现在约 10% 的构象里(五千条中的四百四十六条),其中三增强子占 1.8%、双增强子占 10.3%;同样的多体组合在 Calu3 里出现频率高出 9.6 倍。

三个细胞都是「MYC 高表达」,但空间组织方式完全不同:Calu3 靠多增强子协同,GM12878 靠少量稳定接触。这个结论用群体 Hi-C 看不出来,因为平均之后两者的热图都只是一个方块。这正是 §4.2 的案例想说明的价值:不是给了更清楚的热图,而是给了热图背后的分布。

4.3 跨样本比较做出了什么

跨样本比较在实现上是同一套工具的两次调用:选定两个细胞系、同一个区段,界面并排显示两张热图、两组构象。难点不在工具,在可比性。三个前提必须同时成立,比较才有意义:区段边界一致(同一段基因组)、分辨率一致(都是 5 kb)、构象数量一致(都是五千条)。官方在案例里选的三个细胞系恰好满足这三点,因为它们都覆盖了 MYC 所在的同一段。

不满足时会出问题。如果两个细胞系的测序深度不同,能建模的区段就不同,交集可能比想象的小;如果其中一个的区段因为稀疏被剔除,界面上会直接没有数据,而不是给一个低质量的解。这类空结果容易被误读成「该细胞里没有这个结构」,实际是「该细胞里这段没被建模」。两者的区别在写结论时是致命的。

4.4 精度校验:拿什么对齐

官方给的校验方式是自洽性检验:把五千条构象的接触频率汇总,得到一张模拟接触图,再与实验 Hi-C 图比。两张图在同一区段、同一分辨率下应当高度相似,这是模型能成立的最低条件。界面上把实验图放在下三角、模型图放在上三角,就是为了让这种对照一眼可见。

这种校验有一个固有的弱点:它验证的是「模型能复现输入」,不是「模型反映了真实单细胞结构」。因为输入就是群体 Hi-C,模型只要拟合得好,自洽性检验必然通过。真正的独立验证需要单细胞成像或单细胞 Hi-C 的对照,官方在讨论里提到与染色质追踪数据的整合是未来方向,说明现在还没有系统性的外部验证。

这一点不应被读成缺陷。任何从群体数据反推单细胞分布的方法都面临同样的困境:没有金标准。诚实的做法是把校验的层级说清楚——本库通过的是「群体层面自洽」,未通过的是「单细胞层面独立验证」。用的时候按这个层级来用,就不会越界。

4.5 官方未公布的部分

以下几项在论文、官网与教程里都找不到明确说法,只能标为未公布:坐标的物理单位、每个样本的建模区段数、导出文件的确切列定义、单条构象的收敛判据、五千条构象的独立性如何保证、更新频率与版本策略。这些不是细枝末节:单位与列定义决定能否做定量比较,收敛判据决定系综宽度是否可信。

遇到这类空白,正确做法是回到论文方法节与其引用的 sBIF 原文,而不是靠猜——本库对 sBIF 只做了引用性描述。

§5 怎么拿到:界面、接口与离线脚本

5.1 三条取数路径

第一条是网页端。输入细胞系与坐标或基因名,得到热图、三维结构与下载按钮。适合探索与少量取数,不需要写代码。

第二条是后端接口。前端调用的那几个地址可以直接用 HTTP 客户端打,返回 JSON 或文件流。适合脚本化,但官方没有接口文档,参数与返回结构要从前端代码里读。

第三条是离线脚本仓库。仓库里放的是分析脚本,不是数据;它假设你已经从网页端导出了 CSV。适合复现官方的多体接触统计与聚类分析。

三条路径都不提供整库打包。若项目需要全量坐标,工程量按「六万余个区段逐个请求」估算,而不是按下载一个压缩包估算。

5.2 网页端的一次完整查询

打开站点,界面是一个典型的单页应用,首屏需要几秒加载脚本。查询区有两组输入:细胞系下拉框与坐标区间,或者细胞系与基因名。填完点查询,页面下方依次出现三个面板。

上方面板是二维接触图。上三角是模型判定的显著接触,下三角是实验 Hi-C,共用一条色标,可拖动滑块调对比度。右上角按钮依次是:显著接触两两比较、恢复原图、展开大图、下载显著接触、生成三维结构。展开后多出一个内嵌基因组浏览器,可挂 ENCODE 轨道或上传自己的 bed 与 bigwig。

中方面板是热图本体。点任意格子会高亮对应的接触对;拖动可以缩放。

下方面板是该区段内的基因列表。点某个基因,会把它在热图与三维视图里同时标出来。这一步对定位很有用:想知道 MYC 的转录起始位点落在第几颗珠上,点一下就知道了。

三维视图在另一次点击后生成,默认显示「最具代表性」的构象,即与系综平均相关性最高的一条。可在五千条间切换或按编号跳转;视图支持旋转、缩放、按珠上色,选中珠对可算距离并显示其分布。

5.3 后端接口:没文档,但可以读前端

官方没有 API 文档,但前端打包文件里保留了全部调用地址与请求体结构。整理出来大致是九条:

接口 方法 请求体要点 用途
/api/getChromosData POST 细胞系、染色体、区段 取接触矩阵与显著接触
/api/getChromosValidIBPData POST 细胞系、染色体、区段 取该区段内有效区间
/api/getChromosomeSize POST 细胞系、染色体 取染色体上可建模区段列表
/api/getChromosomeSizeByGeneName POST 细胞系、基因名 按基因反查区段
/api/getGeneList POST 染色体、区段 取区段内基因
/api/geneNamesListSearch POST 关键词 基因名联想搜索
/api/getChromosome3DData POST 细胞系、染色体、区段、构象号 取单条构象坐标
/api/downloadFullChromosome3DPositionData POST 细胞系、染色体、区段、是否示例 流式下载坐标 CSV
/api/downloadFullChromosome3DDistanceData POST 同上 流式下载距离矩阵 CSV

一个必须知道的细节:染色体命名在两个接口之间不一致。取基因列表时前端会先 slice(3) 把 chr 前缀去掉再传,取接触矩阵时则原样传。这说明后端对命名的处理没有统一,写脚本时要按接口分别试,先用一个已知可用的区段探通再批量跑。

最小可用的一次调用:

#-- 取一个区段内的基因列表;后端期待不带 chr 前缀
curl -s -X POST "https://chrompolymerdb.bme.uic.edu/api/getGeneList" \
  -H "Content-Type: application/json" \
  -d '{"chromosome_name":"8","sequences":{"start":127200000,"end":127750000}}'
import requests

BASE = "https://chrompolymerdb.bme.uic.edu"
payload = {
    "cell_line": "Calu3",
    "chromosome_name": "chr8",
    "sequences": {"start": 127200000, "end": 127750000},
    "sample_id": 0,
}
r = requests.post(f"{BASE}/api/getChromosome3DData", json=payload, timeout=180)
r.raise_for_status()
data = r.json()
print(sorted(data.keys()))

#-- 返回里通常带一列逐构象的距离向量,键名形如 sample_distance_vector
if "sample_distance_vector" in data:
    vec = data["sample_distance_vector"]
    print(len(vec), vec[:5])

5.4 导出 CSV 的列与规模

坐标导出走的是流式接口,返回的是文件流,前端把它拼成一个 CSV 交给浏览器下载。命名规则从教程示例可推知为「细胞系_染色体_起点_终点.csv」。

规模要提前算。一个 550 kb 的区段约 110 颗珠,乘五千条构象,是五十五万行;一个 3.5 Mb 的区段约 700 颗珠,乘五千,是三百五十万行。单文件几十到几百兆,五十份样本乘六万余区段,全量在拍字节量级之外——正确说法是:全量远超单机可承受,任何项目都应先划定细胞系与区段子集。

import requests

BASE = "https://chrompolymerdb.bme.uic.edu"
body = {
    "cell_line": "Calu3",
    "chromosome_name": "chr8",
    "sequences": {"start": 127200000, "end": 127750000},
    "is_example": False,
}
with requests.post(f"{BASE}/api/downloadFullChromosome3DPositionData",
                   json=body, stream=True, timeout=600) as r:
    r.raise_for_status()
    with open("Calu3_chr8_127200000_127750000.csv", "wb") as fh:
        for chunk in r.iter_content(chunk_size=1 << 20):
            fh.write(chunk)

距离矩阵单独一个接口,体积比坐标表大一个量级(每构象是珠数的平方),只在确实需要两两距离时才下载。多数分析可以只拿坐标,本地算距离。

5.5 离线脚本仓库

仓库在 GitHub 上,账号 ldu3,仓库名 ChromPolymerDB_tutorial。里面四个东西值得看:一份图文教程(就是网页端每个按钮的说明书)、一份样本信息表、一个脚本目录。脚本目录下四个文件:聚类笔记本、基于图像自编码器的聚类脚本、多体接触统计的 R 脚本、坐标可视化笔记本。

它们的定位是「分析示例」,不是「生产工具」。三个具体问题:R 脚本第一行把工作目录硬编码成作者本机的 Windows 路径;脚本假设每个构象固定 110 行,换一个区段就得改;聚类笔记本里的参数是按 MYC 区段调的,换区段不保证合理。

这不是苛责。数据库论文附带的脚本普遍是这个状态,能跑通示例就算达标。使用时的正确姿态是把它当参照实现读,而不是当依赖装。

5.6 自己算多体接触:复现官方口径

多体接触是这套数据里最有信息量的量,也最容易被算错。官方脚本给出了口径,值得逐行拆——§4.2 的案例里那些百分比,正是按这套口径算出来的。

它先按构象编号把珠分组,每组取七个珠:六个增强子加一个转录起始位点。然后对每组算七个点之间的所有两两距离,只保留涉及启动子的那六对。接着用一个阈值筛出「算接触」的对,最后按构象统计有几对同时成立。

关键在于阈值。官方正文写的是 80 nm,脚本里写的是 distance < 80 + 34.3。多出来的 34.3 没有在正文里解释,推测与珠子半径或接触判据的几何修正有关,但官方未说明。这个差异会直接改变多体接触的比例:阈值放宽三成,三增强子同时接触的构象数会明显上升。复现时若要与论文数字对齐,必须用脚本里的阈值;若要按物理定义严格算,用 80。

import itertools
import pandas as pd

df = pd.read_csv("Calu3_chr8_127200000_127750000.csv")

#-- 官方示例的珠序号(0 基):六个增强子 + 一个转录起始位点
beads = [3, 19, 40, 61, 77, 94, 107]
tss = beads[-1]

rows = []
for sid, grp in df[df["id"].isin(beads)].groupby("sampleid"):
    pos = grp.set_index("id")[["x", "y", "z"]]
    n_close = 0
    for b in beads[:-1]:
        d = ((pos.loc[b] - pos.loc[tss]) ** 2).sum() ** 0.5
        n_close += int(d < 80 + 34.3)
    rows.append((sid, n_close))

res = pd.DataFrame(rows, columns=["sample_id", "n_enh"])
print(res["n_enh"].value_counts().sort_index())
print((res["n_enh"] >= 1).mean())

最后一行输出的就是「至少一个增强子接触」的比例。把它与论文的 45.5% 对照,是检验自己是否读对了列、对齐了珠序号的最快办法。对不上,先查珠序号是不是差了 1,再查阈值。

5.7 批量抓取的现实约束

没有整库打包,批量只能逐区段请求。工程上有四件事必须先想清楚。

第一,区段清单从哪来。官方没有发布区段列表文件;可行的办法是先按染色体调 /api/getChromosomeSize 枚举区段,再逐个下载,这一步本身就要几百次请求。

第二,节流。站点是单机 Flask 加 Redis 缓存,没有公开的速率限制说明。稳妥做法是串行加固定间隔;被限流时返回的不是明确的错误码,而是超时。

第三,断点续传。逐区段下载必然中断,至少要记录已完成清单。文件命名里已含细胞系与坐标,可以据此做幂等。

第四,存储估算。单区段几十到一百多兆,一千个区段就是几十到上百吉字节。规划时按区段数乘单区段体积估,不要按「五十份样本」估。

§6 与库内词条的关系

6.1 关系图谱

本库在站内不是孤立词条,它与三类已有词条构成上下游关系:数据来源类、同域不同层类、下游应用类。

关系 站内词条 关系性质 具体说明
上游数据源 ENCODE 基因组功能元件百科全书 供料 十八份样本的 Hi-C 与表观轨道来自该门户
上游数据源 Roadmap Epigenomics 参照 表观图谱可作为结构解释的旁证,非直接供料
同域不同层 相隔五十万碱基的两个位点 — 3D Genome Browser 互补 一个存二维接触,一个存三维坐标(§6.3)
下游应用 CZ CELLxGENE Census — 版本化云端单细胞语料 可组合 结构系综可与表达谱按细胞类型对齐
下游应用 Single Cell Expression Atlas 可组合 提供同一细胞系的表达背景,用于解释构象差异
方法来源 sBIF 原始论文 前置 库不含推断代码,算法须回原文

6.2 检索路径

站内的检索习惯是按数据类型找词条。如果你的问题是「这个位点的接触频率有多高」,路径是三维基因组浏览器那条线;如果你的问题是「这个位点在细胞之间隔多远」,路径通向本库。两条路径在中途会交叉,因为都要先确定细胞系与坐标,但取出来的东西不同。

按标签检索时,本库落在基因组学与多组学、表观基因组、单细胞基因组学、测序数据四个标签下。前两个是内容标签,第三个是方法标签(它的单细胞性是模型给的,不是测序给的),第四个是来源标签。第三个标签容易被误读成「单细胞测序数据」,实际不是——库里没有一条单细胞读段。

6.3 与 3D Genome Browser 的区隔

这两个词条最容易被混为一谈,因为名字都带三维基因组,界面都长得像浏览器。区别可以压成三句话。

第一句:一个存矩阵,一个存坐标。3D Genome Browser 的核心资产是实验得到的接触矩阵与在其上算出的注释(隔间、域、环),打开看到的是热图与轨道;ChromPolymerDB 的核心资产是模型算出的三维坐标,打开看到的是珠链。前者的最小查询单位是一个矩阵格子,后者是一条链上的一颗珠。

第二句:一个回答「多频繁」,一个回答「多远」。热图上的数值是接触频次,反映的是群体里两个片段被连在一起的相对次数;坐标里的数值是欧氏距离,反映的是模型里两颗珠的空间间隔。这两个量有关系,但不等价:接触频率高不一定距离近(可能只是片段长),距离近也不一定在热图上显著(可能接触被噪声淹没)。

第三句:一个可回溯到实验,一个不可。前者每套数据能追到一次实验与一个登录号,后者每条构象只能追到一个模型与一组参数。这不是贬低,而是划定边界:要证据链用前者,要结构假设与分布用后者。

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

在打分之前,要先校正一个默认预期:多数人会把「数据库」默认理解为「数据的集合」,于是用「覆盖多少、多干净、多完整」这把尺子来量。用这把尺子量本库,会得出一个很低的分数,因为它覆盖不全、没有原始数据、坐标还都是算出来的。

正确的尺子是「模型的集合」:它提供的是一批可复现的结构假设,价值在分布宽度与可比较性,不在覆盖率。换尺子之后,评分重心从「有多少」转到「一致性如何、口径是否清楚、能否复现」。误判往往来自尺子拿错,而不是数据本身有诈。

7.1 五维评分

按 DAIMS 框架的五个维度打分,每项十分制。分数是编辑判断,不是官方数据。

维度 分数 判断依据
目的性(Purpose) 8 目标明确:把群体 Hi-C 变成可查询的单细胞结构;边界也写得清
完整性(Completeness) 6 五十份样本、六万余区段,覆盖十个生理系统;但仅人类、仅区段、缺原始矩阵
准确性(Accuracy) 6 群体层面自洽性通过;单细胞层面无独立验证;单位与列定义未公布
一致性(Consistency) 7 全库统一 5 kb 与 hg38;接口命名与导出列有不一致处
可获得性(Accessibility) 7 免费、无需注册、界面流畅;无整库下载、无接口文档、无数据许可
综合 6.8 方法学上扎实,工程上可用,制度上留白

7.2 分数背后的理由

目的性扣两分,是因为论文把「能做什么」讲得很足,对「什么不算它的用途」只在方法节一笔带过,误用门槛低。完整性扣在「只有人类」与「只有区段」两处:前者是建模流程要按物种重调的主动取舍,后者是稀疏区跑不出结构的被动结果。

准确性给 6 最需要解释。自洽性检验做得规范——零模型五十万条、多重检验校正、显著接触阈值明确;缺的是外部验证,没有任何一条构象被单细胞成像或单细胞 Hi-C 直接对照过。给及格偏上合适,给高分等于替它背书。

一致性扣在接口对染色体命名处理不统一、导出列无文档、坐标单位未标明,三处都会让第一次接入的人踩坑。可获得性扣在「能看不能搬」:网页端体验在同类资源里属上乘,但整库无法打包、接口无文档、许可未单列,对一个以支持广泛使用为初衷的库是明显落差。

7.3 已知的、可枚举的偏差

偏差 机制 后果 缓解办法
覆盖偏差 稀疏区被剔除,短域被合并 基因贫瘠区与着丝粒附近系统性缺失 分析前先统计目标区段是否在库内
样本偏差 五十份样本由公共数据可用性决定 热门细胞系过度代表,罕见细胞类型缺席 按细胞类型查覆盖,别假设均匀
疾病比例偏差 十四种疾病样本对三十六种正常 疾病与正常的比较样本量不对等 比较时报告每组样本数
深度偏差 不同来源测序深度差异大 深样本区段多,浅样本区段少 同细胞类型比较时对齐区段交集
模型偏差 核体积、阈值等假设全样本共用 系综宽度可能系统性偏窄或偏宽 跨样本比较只看相对差异
阈值偏差 接触判据 80 nm,脚本用 80 加 34.3 多体接触比例随阈值显著变化 固定阈值并写明
采样偏差 五千条构象非独立细胞 接触频率不等于细胞阳性率 表述改成「系综中占比」

其中两条最值得展开。核体积在 sBIF 里逐样本设定,官方在补充材料给了每个样本的核尺寸,但正文没讲这个值怎么来、误差多大;它直接约束链的紧凑程度,定小了链就挤,定大了链就散,两种情况都会改变距离分布的形状。

采样偏差则是解读层面的。五千条构象来自同一约束集,它们之间的差异是「满足约束的解有多少种」,不是「细胞之间有多少种」。这两件事在数学上相关、在生物学上不等价,把前者说成后者是本库最容易被写进讨论段的一句错话。

7.4 外部验证矩阵

验证类型 是否做过 证据 可信度影响
群体 Hi-C 自洽 是 模拟接触图与实验图并排对照 支持「能复现输入」
独立 Hi-C 留出 未报道 论文未见留出集设计 无法判断过拟合程度
单细胞 Hi-C 对照 未报道 讨论中列为未来方向 单细胞层面无外部锚点
染色质追踪成像 未报道 仅提到可整合,未做系统对照 纳米级距离无标定
与表达谱一致性 部分 案例中与 RNA-seq 表达高低定性吻合 弱支持,属旁证
与表观轨道一致性 部分 增强子活性与接触频率方向一致 弱支持,属旁证
跨方法复现 未报道 无第二套模型结果可比 无法排除方法特异性

这张表最该被记住的是第二行与第三行。留出集缺失意味着「模型能多好地泛化到没见过的样本」没有答案;单细胞对照缺失意味着「模型给出的异质性是不是真的」没有答案。两条都不影响它作为假设生成工具的用途,但都影响它作为监督信号的可靠性。

7.5 它为何能持续:一门必须有人兜底的公共品

这类库的生存逻辑与商业数据库不同。它没有订阅收入,没有 API 计费,靠的是资助周期内的机构支持与论文带来的引用。它的存在价值在于:sBIF 的计算成本高到单个实验室难以承受——五十份样本、每份五十万条零模型、每区段五千条推断,累计是千万核时——所以把结果算一次、公开出来,比让每个课题组各算一遍更省。

这个逻辑有一个脆弱点:它依赖持续的计算资源与人力维护。论文的资助列表里,能源部的 INCITE 机时与两家机构的项目经费是主要支撑,这类资源按周期申请,不是长期编制。库能不能活过下一个资助周期,取决于它是否被足够多的论文引用、是否有新的数据进来。官方把「扩展物种、纳入新数据、增加分析算法」写成计划,说明维护方也清楚这一点。

对使用者而言,这意味着两件事:一是现在能用就尽快用,二是关键结果要落成本地副本,别把流程设计成每次运行都去请求远程接口。

§8 生态位与历史

8.1 时间线

时间 事件 意义
2009 年 串珠与结合者模型提出 聚合物模型解释染色质折叠的起点
2016 年 该模型用于 Sox9 位点,与 Hi-C 定量吻合 证明模型能复现真实接触图
2018 年 基于机器学习的模型反演方法出现 从「设参数」转向「从数据学」
2025 年 sBIF 在 eQTL 位点上的应用发表 序贯贝叶斯推断路线成型
2025 年 9 月 本库预印本上线 从方法走向资源
2025 年 11 月 核酸研究正式发表 进入数据库专刊序列
2026 年 1 月 收入 54 卷 D1 期 获得稳定引用标识

这条线真正的转折在 2018 年前后:模型从「先定物理参数」转向「从数据学」。前者要先知道结合能与浓度,后者直接从接触矩阵反推结合位点排布,不必逐位点人工调参,这才可能批量跑六万余个区段。

8.2 它填的那个空

在它之前,三维基因组资源大致分三类:二维接触矩阵的仓库、一次性建模的补充材料、少量早期三维结构库。第一类只给热图,第二类无法批量取用,第三类分辨率与样本量都有限。

本库填的是第二类与第三类之间的缝隙:把「一次性建模」变成「批量、统一口径、可查询」。这个空当不大,但确实空着——此前要比较两个细胞类型在同一区段的构象,得自己找两篇论文、统一坐标与阈值,工作量以周计。

8.3 与六个近邻的分工

官方在讨论节明确点了六个近邻,并给出了自己的定位。下表把这段对比整理成可查的形式。

资源 主存内容 单细胞 三维 与本库的关系
HiChIPdb HiChIP 接触 否 否 上游类型的实验数据
3D Genome Browser 多种接触矩阵 部分 否 最常被混淆的近邻
3DIV 接触矩阵与变异 否 否 侧重疾病变异
LoopCatalog 染色质环 否 否 环层面的统一目录
GSDB 三维结构模型 否 是 早期结构库,样本少
Nucleome Browser 多组学聚合 部分 部分 门户型,非结构生产
3Disease Browser 疾病相关结构 否 是 疾病视角的浏览

官方对这几个资源的评价是「以二维为主、三维覆盖有限」,这句判断基本成立,但要注意语境:它是在为自己的定位做论证,不是在做一个中立的资源评估。真实情况是,这些资源各有不可替代的用途——比如要查某个 loop 的实验证据,LoopCatalog 比本库直接得多。

8.4 维护风险

三个可观察的风险点。

第一,单点依赖。库跑在 UIC 的一台服务器上,域名绑定院系(bme),院系调整、服务器迁移、证书过期,任何一种都会让入口失效。截至核验时站点可正常访问,返回的是单页应用外壳。

第二,无镜像。官方没有在国家生物信息中心或其他平台放置镜像,Database Commons 只是编目,不存副本。一旦源站下线,数据没有第二份公开拷贝。

第三,版本策略不明。官方未公布更新频率与版本号规则,v1.0 之后是否会有 v1.1、旧版本是否保留都没说明,对需要长期复现的项目是实质风险。

§9 使用指引

9.1 三种角色的路径

你的角色 最短路径 需要的准备 常见卡点
生物学研究者 网页端按基因查,看三维与轨道 知道目标基因与细胞系 查不到区段,误以为基因不存在
生物信息工程师 接口逐区段导出 CSV 会读前端代码找参数 染色体命名不一致、无节流说明
方法学研究者 读论文方法节加 sBIF 原文 熟悉贝叶斯推断与聚合物模型 库内无推断代码,须自行实现
教学使用者 用官方教程的图文步骤演示 一台能开浏览器的机器 三维视图需要 WebGL 支持
数据管理者 先确认许可,再规划存储 与通讯作者沟通 许可未单列,商用需书面确认

9.2 一条最短的可用流程

目标:拿到 Calu3 在 MYC 区段的五千条构象,算出「至少一个增强子接触启动子」的比例,并与论文的 45.5% 对照。

#-- 第一步:确认区段可查,返回体里应含区段边界
curl -s -X POST "https://chrompolymerdb.bme.uic.edu/api/getChromosomeSize" \
  -H "Content-Type: application/json" \
  -d '{"cell_line":"Calu3","chromosome_name":"chr8"}' | head -c 500
import requests
import pandas as pd

BASE = "https://chrompolymerdb.bme.uic.edu"
region = {"start": 127200000, "end": 127750000}

#-- 第二步:流式下载坐标
body = {"cell_line": "Calu3", "chromosome_name": "chr8",
        "sequences": region, "is_example": False}
with requests.post(f"{BASE}/api/downloadFullChromosome3DPositionData",
                   json=body, stream=True, timeout=600) as r:
    r.raise_for_status()
    with open("Calu3_chr8_127200000_127750000.csv", "wb") as fh:
        for chunk in r.iter_content(1 << 20):
            fh.write(chunk)

#-- 第三步:读表并核对珠数
df = pd.read_csv("Calu3_chr8_127200000_127750000.csv")
n_bead = df.groupby("sampleid").size().iloc[0]
print("每构象珠数", n_bead, "应为", (region["end"] - region["start"]) // 5000)

#-- 第四步:按官方口径统计多体接触(阈值 80 加 34.3)
beads = [3, 19, 40, 61, 77, 94, 107]
tss = beads[-1]
hits = []
for sid, grp in df[df["id"].isin(beads)].groupby("sampleid"):
    pos = grp.set_index("id")[["x", "y", "z"]]
    n = sum(int(((pos.loc[b] - pos.loc[tss]) ** 2).sum() ** 0.5 < 80 + 34.3)
            for b in beads[:-1])
    hits.append(n)

s = pd.Series(hits)
print("至少一个增强子接触的比例", round((s >= 1).mean(), 3))
print("三增强子同时接触的条数", int((s == 3).sum()))

跑完应当看到比例落在 0.45 附近、三增强子条数在六十余条。对不上时按顺序排查:珠序号是否偏移一位、阈值是否用了 80、区段是否被后端截断。

9.3 引用方式

正式引用用期刊版:作者列表、标题、核酸研究 2026 年 54 卷 D1 期、页码 D994 至 D1004、DOI 10.1093/nar/gkaf1233。预印本只在讨论其发表前的状态时引用。

数据本身的引用,官方未给出建议格式,也没有独立的数据 DOI。稳妥做法是在方法节写「数据取自 ChromPolymerDB(https://chrompolymerdb.bme.uic.edu/,访问日期)」,并同时引论文。如果期刊要求数据 DOI,需要联系通讯作者索取。

9.4 复现清单

项 必须记录 原因
访问日期 年月日 无版本号,日期是唯一的版本锚点
细胞系名 原始拼写 大小写与别名会影响查询
区段坐标 起止碱基 决定珠数与对齐方式
参考基因组 hg38 与其他数据对齐的前提
构象编号范围 全量或子集 子集会让比例失真
接触阈值 80 或 80 加 34.3 直接改变多体比例
后端口径 接口名与请求体 无文档,行为可能变
脚本版本 仓库提交号 脚本会改

§10 AI 使用声明

项 说明
数据性质 全部坐标为模型推断值,非实验测量值
可否作为监督信号 可作为结构先验或弱监督,不宜作为金标准标签
可否作为评测基准 可以,但须固定区段、构象数与阈值
训练集划分 按细胞系划分,同一细胞系的不同区段不可跨侧
泄漏风险 同一份 Hi-C 派生的区段高度相关,随机按区段切分会泄漏
生成式使用 不得据此外推未建模区段的坐标
结论表述 用「系综中占比」,不用「细胞阳性率」
商用 许可未单列,须先取得书面确认

常见误读(避坑清单)

说法 实际 证据
「这是单细胞测序数据」 没有一条单细胞读段,全部由群体 Hi-C 反推 论文方法节的数据收集段
「坐标是测出来的」 模型推断值,无成像对照 论文讨论节与 json_ld 的限制声明
「五千条构象等于五千个细胞」 同一约束下的五千次采样 方法节「每个数据集生成五千条构象」
「45.5% 的细胞存在该接触」 45.5% 的构象满足几何条件 案例段的原始表述
「覆盖全基因组」 仅覆盖被建模的六万余个区段 预处理第三步与第四步的剔除规则
「分辨率和 Micro-C 差不多」 5 kb,比 Micro-C 粗一个量级以上 论文与界面均标 5 kb
「可以一次下载整库」 无打包下载,只能逐区段导出 官方教程的查询流程
「数据可以随便商用」 论文 CC BY 4.0,数据许可未单列 论文版权页与站点均无数据许可声明
「它和 3D Genome Browser 是一回事」 一个存坐标,一个存矩阵 论文讨论节的近邻对比
「域名是 chrompolymerdb.org」 该域名无解析记录,官方入口在 uic.edu 子域 本次核验的 DNS 查询与站点访问

FAQ

Q1:ChromPolymerDB 到底解决什么问题?

它解决的是「群体 Hi-C 把细胞间差异平均掉」这个问题。做法是用聚合物物理模型把接触频率反推成一批单细胞构象,让使用者能看到同一区段在五千条链上的距离分布,而不是只看一个灰度格子。

Q2:它和 3D Genome Browser 应该怎么选?

要实验证据、要看热图与注释,选 3D Genome Browser;要结构假设、要算距离分布、要做跨样本构象比较,选本库。两者可以一起用:先用浏览器确认接触是否存在,再用本库看这个接触在系综里的稳定性。

Q3:为什么我按基因名查不到数据?

大概率是该区间没有被建模。区段由最外层拓扑关联域决定,短域会被合并,接触稀疏的区段会被整体剔除。查不到时先换成坐标查,看该位置是否落在某个区段内,而不是反复改基因名的拼写。

Q4:五千条构象之间是什么关系?

它们是同一组约束下的不同解,用来表示构象的分布宽度。彼此之间不独立于数据,也不对应真实的细胞个体。做统计时把它们当采样,不要当样本。

Q5:坐标的单位是什么?

官方未公布。同一构象内部的相对距离可以用,跨样本、跨区段的绝对比较要谨慎,除非先做过标定。这一点在方法节与教程里都没有说明,属于需要向作者确认的空白。

Q6:能不能用它训练三维结构预测模型?

技术上可以,工程上要算清楚。全量在拍字节量级,单区段几十到几百兆,且没有打包下载。合理做法是选十几个细胞系、几百个区段做子集,并固定阈值与构象数。

Q7:多体接触的比例为什么和我算的不一样?

最常见的原因是阈值。官方正文写 80 nm,脚本写 80 加 34.3;其次是对珠序号的偏移理解(0 基与 1 基);再次是区段是否被后端截断。

Q8:它的疾病样本能代表疾病人群吗?

不能。十四种疾病相关样本以肿瘤细胞系为主,是体外模型,不含患者个体、不含临床分期、不含治疗信息。它代表的是「某种细胞系在培养皿里的构象」,不是「某类患者体内的构象」。

Q9:站点会不会关掉?

无法保证。库跑在院系服务器上,无镜像、无独立数据 DOI、版本策略未公布。用它做长期项目时,关键结果要落本地副本,并在方法节写明访问日期。

Q10:引用时引预印本还是期刊版?

引期刊版。预印本与正式版的标题相同,但卷期页码与同行评审状态不同,正式发表后继续引预印本会被视为引用不规范。

Q11:为什么同一条染色体在不同接口里名字不一样?

前端在取基因列表时会把 chr 前缀去掉,取接触矩阵时原样传。后端对两种写法没有统一处理,所以脚本里要按接口分别试,先用已知可用的区段探通。

术语表

术语 英文 含义
染色质构象捕获 chromosome conformation capture 用交联与连接把空间邻近的 DNA 片段变成可测序的嵌合分子
Hi-C Hi-C 全基因组尺度的构象捕获,产出接触频率矩阵
接触矩阵 contact matrix 行列均为基因组区段、格子为接触频次的方阵
拓扑关联域 topologically associating domain 域内接触多、域间接触少的自相似结构单元
隔间 compartment 染色体上按活性区分的两类大规模区域
珠子 bead 模型中的基本单元,本库为 5 kb 染色质
串珠与结合者模型 strings and binders 自避链加可扩散结合者的平衡态聚合物模型
序贯贝叶斯推断 sequential Bayesian inference 逐步收紧约束、生成与数据一致的构象系综
系综 ensemble 同一约束下的一批构象,本库为五千条
折叠重构接触 folding reconstitutive contact 经零模型检验后判定为显著的接触
零模型 null model 只含聚合物物理与体积排斥的随机纤维集合
回转半径 radius of gyration 构象紧凑程度的常用度量
多体接触 multi-body contact 三个及以上元件同时靠近同一位置
增强子 enhancer 远距离调控转录的 DNA 元件
转录起始位点 transcription start site 基因转录开始的位置
分辨率 resolution 一个数据单元对应的碱基数,本库为 5 kb
区段 region 一个可独立建模的基因组区间
参考基因组 reference genome 坐标体系,本库为 hg38
稀疏区 sparse region 有接触的格子占比极低的区段
表观轨道 epigenetic track 组蛋白修饰、转录因子结合等测序信号

附录 A:核心数字核对表

项 值 来源 来源层级
样本数 50 论文摘要与方法节 论文
来源分布 19 / 18 / 13 论文方法节 论文
细胞类型 50(36 正常 + 14 疾病) 论文结果节 论文
生理系统覆盖 十一分之十 论文方法节 论文
构象总量 约 10⁸ 论文摘要 论文
基因组区段 六万余 论文摘要 论文
分辨率 5 kb 论文与界面 论文
参考基因组 hg38 论文方法节 论文
每区段构象 5000 论文方法节与教程 论文
零模型构象 每样本五十万 论文方法节 论文
接触阈值 80 nm 论文方法节 论文
显著接触校正 p 小于 0.05 论文方法节 论文
建库年份 2025 Database Commons 第三方目录
版本 v1.0 Database Commons 第三方目录
最后更新 2025-08-01 Database Commons 第三方目录
卷期页码 54 卷 D1 期 D994–D1004 期刊页 论文
数据许可 未单列 站点与论文 核验结论

附录 B:数字的来源分层

第一层,官方页面与官方教程仓库。样本来源分布、接口路径、导出文件命名、脚本中的阈值 80 加 34.3,都属于这一层。可直接引用,但要注意教程是示例,不是规范。

第二层,论文正文与补充材料。构象总量、区段数、细胞类型构成、零模型规模、显著接触判据,都属于这一层。数值以正式版为准,预印本有排版误差。

第三层,第三方目录。建库年份、版本号、最后更新日期来自国家生物信息中心的 Database Commons,该目录为编目机构,不存数据副本。两条记录字段略有出入,引用时标注来源。

第四层,未核实。坐标单位、每样本区段数、导出列定义、构象独立性保证、更新频率,均未见官方说明,一律标为未公布,不做推测。

附录 C:完整参考文献

  1. Chen M, Du L, Zhao S, Ye B, Delafrouz P, Farooq H, Chattopadhyay D, Marai GE, Shao Z, Liang J, Czajkowsky DM, Chronis C. ChromPolymerDB: a high-resolution database of single-cell 3D chromatin structures for functional genomics. Nucleic Acids Research. 2026;54(D1):D994–D1004. doi:10.1093/nar/gkaf1233
  2. 同文预印本. bioRxiv. 2025. doi:10.1101/2025.09.27.678816
  3. Du L, Farooq H, Delafrouz P, Liang J. Structural basis of differential gene expression at eQTLs loci from high-resolution ensemble models of 3D single-cell chromatin conformations. Bioinformatics. 2025;41:btaf050
  4. Chiariello AM, Annunziatella C, Bianco S, Esposito A, Nicodemi M. Polymer physics of chromosome large-scale 3D organisation. Scientific Reports. 2016;6:29775
  5. Nicodemi M, Prisco A. Thermodynamic pathways to genome spatial organization in the cell nucleus. Biophysical Journal. 2009;96:2168–2177
  6. Bianco S, Lupiáñez DG, Chiariello AM, et al. Polymer physics predicts the effects of structural variants on chromatin architecture. Nature Genetics. 2018;50:662–667
  7. Wang Y, Song F, Zhang B, et al. The 3D Genome Browser: a web-based browser for visualizing 3D genome organization and long-range chromatin interactions. Genome Biology. 2018;19:151
  8. Database Commons, ChromPolymerDB 记录 10677 与 10686. 国家生物信息中心
  9. ChromPolymerDB 官方教程仓库. https://github.com/ldu3/ChromPolymerDB_tutorial
  10. 官方站点. https://chrompolymerdb.bme.uic.edu/

附录 D:任务代码

用途:把一个区段的全部构象压成一张「每颗珠的平均接触次数」曲线,用来快速判断该区段的结构是否均匀。

import numpy as np
import pandas as pd

df = pd.read_csv("Calu3_chr8_127200000_127750000.csv")
beads = sorted(df["id"].unique())
n = len(beads)

#-- 每个构象的坐标矩阵,形状为 (珠数, 3)
coords = {sid: g.sort_values("id")[["x", "y", "z"]].to_numpy()
          for sid, g in df.groupby("sampleid")}

acc = np.zeros(n)
for xyz in coords.values():
    d = np.linalg.norm(xyz[:, None, :] - xyz[None, :, :], axis=-1)
    acc += (d < 80).sum(axis=1) - 1        #-- 减去自身

profile = pd.DataFrame({"bead": beads, "mean_contacts": acc / len(coords)})
print(profile.head(10))
print("峰值珠序号", int(profile.loc[profile["mean_contacts"].idxmax(), "bead"]))

#-- 换成基因组坐标,便于与注释对齐
start = 127200000
profile["genomic_start"] = start + profile["bead"] * 5000
print(profile.nlargest(5, "mean_contacts")[["genomic_start", "mean_contacts"]])

输出里峰值所在的基因组位置,通常落在域内部而不是边界,这与「域内接触多」的常识一致。用它可以快速判断某段是否被正确建模;如果曲线平得像一条直线,多半是区段选得过大或数据过稀。

附录 E:如果只记五件事

第一,它是模型,不是测量。所有坐标都是推断值,用它做假设可以,用它当金标准不行。

第二,它的单位是「系综占比」,不是「细胞比例」。五千条构象是采样,不是人口普查。

第三,它覆盖的是区段,不是全基因组。六万余个区段由域边界决定,稀疏区被剔除,查不到是常态。

第四,它和 3D Genome Browser 是两层东西。一个存矩阵,一个存坐标;一个回答多频繁,一个回答多远。

第五,它没有整库下载,也没有接口文档。要批量用,得读前端代码、逐区段抓、自己算存储。

编辑说明

核验时间:2026 年 10 月 28 日。核验方式:直接访问官方站点确认可解析、可返回页面外壳;读取核酸研究正式版全文与预印本全文;读取官方教程仓库的文件列表与两个脚本源码;读取站点前端打包文件以提取接口路径与请求体结构;查询国家生物信息中心 Database Commons 的两条编目记录。

需要说明的一处事实:任务下发时提到的域名 chrompolymerdb.org 在当前 DNS 中无任何解析记录,无法访问。经检索确认真实实体为伊利诺伊大学芝加哥分校的 ChromPolymerDB,官方入口在 chrompolymerdb.bme.uic.edu。本文全部内容以该入口与对应论文为准。

未覆盖的内容:没有下载任何一个区段的完整坐标文件,因此文中的比例数字全部来自论文原文,不是本次复算结果;没有注册账号,站点也不需要注册;没有联系作者确认坐标单位与导出列定义,这两项在文中标为未公布。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • liver-cld-scatlas — 共享标签:基因组学与多组学 / 表观基因组 / 单细胞基因组学 / 测序数据
  • encode — 共享标签:基因组学与多组学 / 表观基因组 / 测序数据
  • roadmap-epigenomics — 共享标签:基因组学与多组学 / 表观基因组 / 测序数据
  • blueprint — 共享标签:基因组学与多组学 / 表观基因组 / 测序数据
  • encode — 共享标签:基因组学与多组学 / 表观基因组 / 测序数据
  • 3d-genome-browser — 共享标签:基因组学与多组学 / 表观基因组 / 单细胞基因组学
  • tabula-muris — 共享标签:基因组学与多组学 / 单细胞基因组学 / 测序数据
  • cellxgene-census — 共享标签:基因组学与多组学 / 单细胞基因组学 / 测序数据
  • adrenal-gland-atlas — 共享标签:基因组学与多组学 / 单细胞基因组学 / 测序数据
  • mouse-cell-atlas — 共享标签:基因组学与多组学 / 单细胞基因组学 / 测序数据

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集