信息速览
真核细胞里,一个 RNA 结合蛋白决定哪条转录本被剪、被运、被降解,靠的是它认得出的一段短序列。这段序列通常只有四到八个碱基,容错很高,同一个蛋白在不同实验里给出的偏好往往形状相似而不完全相同。要把这类偏好写成可计算的形式,业界通用的载体是位置频率矩阵:四行对应 A、C、G、U,列数等于偏好长度,每一格是一个概率。
问题是矩阵从哪来。一个一个蛋白做体外结合实验,成本高、通量低;而真核生物里被标注为 RNA 结合蛋白的基因有十几万个,做过实验的不过几百个。中间这道鸿沟必须用推断填,而推断的质量取决于两件事:同源关系判得准不准,迁移规则定得合不合理。
CISBP-RNA 就是围着这两件事建的。它把「测过的」和「推出来的」放在同一张表里,用证据类型字段隔开,再把物种、家族、结构域坐标、文献编号一并挂上,让使用者自己决定信到什么程度。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | CISBP-RNA: Catalog of Inferred Sequence Binding Preferences of RNA binding proteins |
| 维护方 | 多伦多大学唐纳利中心 Hughes 实验室 |
| 首次发布 | 2013 年 7 月,随 Ray 等人在 Nature 的方法文章上线 |
| 当前构建 | 2.00,页面标注更新于 2025 年 5 月 7 日 |
| 收录蛋白 | 149,219 个真核 RBP |
| 物种与家族 | 691 个物种、67 个结构域家族 |
| 基序总数 | 34,746 条 |
| 直接测定 | 504 条,以 RNAcompete 为主 |
| 推断部分 | 其余约三万四千条,按结构域同源与嵌入模型迁移 |
| 基序表示 | 位置频率矩阵(A/C/G/U 四行)、序列标识图、7-mer E 值与 Z 值 |
| 下载维度 | 只有两个:按物种、按家族;每项可选标识图、E 值、Z 值、蛋白信息、PFM |
| 在线工具 | RNA 序列扫描、蛋白序列扫描、基序比对(TomTom) |
| 许可 | 站内未声明;官方称免费开放,引用页给了三篇文献 |
| 当前状态 | 在线可访问;新域名 cisbp.org/rna 跳转回 cisbp-rna.ccbr.utoronto.ca |
§1 它要解决的具体麻烦
1.1 一个蛋白认哪段 RNA,过去只能一个一个测
RNA 结合蛋白的工作方式是识别。它伸出结构域,贴到一段短序列上,靠氢键与堆积作用读出几个碱基的身份,然后决定这条 RNA 的命运。要描述这种识别,最直接的办法是把偏好写成矩阵:给出每个位置上四种碱基的相对概率。矩阵有了,就能扫全转录组找候选位点,也就能把「这个蛋白调控哪些基因」从猜测变成排序。
难点在通量。一个蛋白做一轮体外结合实验,要建库、测序、算富集,产出的是一个矩阵。而真核生物的 RBP 名单很长,光是带经典 RNA 结合结构域的基因,在哺乳动物里就有上千个,把真菌、植物、原虫、线虫全算上则是十万量级。做过实验的那部分,在任何时点都只是零头。
这个领域长期存在两种做法:埋头做实验,一个蛋白一个矩阵,质量高但追不上名单增长;或者放手做预测,覆盖面大但没有实验锚点。CISBP-RNA 走第三条路——先把能测的测掉,再用同源关系把结果迁移到未测蛋白上,每一步都留痕。
这条路线的价值不在矩阵本身,而在可追溯的借用关系。同源迁移在很多数据库里是黑箱,用户只看到一个矩阵,不知道它是测的还是算的。CISBP-RNA 把这条链摊开:这条基序来自哪个物种的哪个蛋白、那个蛋白的基序又是谁测的、两者结构域序列的相似度是多少、相似度有没有过家族阈值。
1.2 三条常见的错误期待
第一条,期待它是「RNA 版的 JASPAR」,拿来就能当金标准。它确实和转录因子数据库长得像,但两个领域的实验基础不同。DNA 结合实验里,双链寡核苷酸池的复杂度、洗脱严谨度都有比较成熟的控制;RNA 则会折叠,体外池里的序列会形成二级结构,读出的偏好里混着结构效应,这一点在单链核酸上比双链严重得多。
第二条,期待「三万四千条基序」等于「三万四千个蛋白被表征」。这两个数不是一回事。基序条数与蛋白数在官方口径里是分开给的,一个蛋白可以有多条基序,一个基序也可能被多个蛋白共用;而带基序的蛋白数远小于收录的蛋白总数。把基序条数当覆盖度,会高估可用范围。
第三条,期待推断记录和直接记录可以等价混用。官方帮助页把「直接测定」和「推断」写成两种证据类型,并在推断部分给出相似度与阈值。这不是装饰性字段:推断记录的精度随同源距离衰减,远缘迁移出来的矩阵往往只剩家族层面的粗轮廓。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 某个具体 RBP 的序列偏好矩阵 | 直接测定记录,带来源研究与文献编号 | 够,前提是这个蛋白做过实验 |
| 未做过实验的同家族蛋白的粗略偏好 | 按结构域相似度迁移的推断矩阵 | 可用作先验,不足以做定量预测 |
| 跨物种比较同一家族的结合偏好 | 691 个物种的同家族记录并列 | 够做定性比较,定量比较要控实验批次 |
| 全转录组位点扫描的输入 | PFM 与 7-mer E 值两套打分 | 够,工具与矩阵配套 |
| 体外偏好与体内结合的一致性 | 只有定性说明,站内不提供配对体内数据 | 不够,需另找 CLIP 类资源 |
| 结合强度或亲和力常数 | 不提供,只有相对偏好 | 不够,矩阵不含热力学量 |
| RNA 二级结构对结合的影响 | 不建模 | 不够,这是体外方法的系统性缺口 |
| 商用再分发 | 站内无许可声明 | 需自行确认,不能默认可用 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你手上有一个新注释的 RBP,想看它可能认什么序列 | 按结构域检索同家族成员,读它们的直接记录与相似度 | 先看相似度是否过该家族阈值,再决定信推断还是自己补实验 |
| 你在做 RNA 层面的深度学习,需要一个基序先验 | 提供成千上万条 PFM,可直接转成位置权重矩阵 | 按证据类型分层加权,别把推断记录与直接记录同权 |
| 你的 CLIP 数据里有一批峰找不到解释 | 用基序扫描给峰打分,看富集在哪些基序上 | 用同批细胞的背景序列做对照,避免只报显著的那几个 |
| 你在比较两个物种的同一家族是否换了偏好 | 两个物种的同家族记录在同一套编号下并列 | 只比直接测定记录;推断记录会因迁移来源相同而人为相似 |
| 你要给一个宏基因组里新发现的 RBP 归类 | 蛋白扫描工具按结构域比对给出候选家族与基序 | 把 HMMER 期望值与相似度一起看,单看排名会过拟合 |
| 你在复现某篇用 CISBP-RNA 的论文 | 版本号与构建日期可查,能锁定作者当时用的那一版 | 记录构建号与下载日期,跨版本重跑前先比对基序编号 |
1.5 一句话判断
它的分量不在那三万四千条矩阵,而在每条矩阵旁边那句「这条是借来的,借自谁,凭什么借」——这句话决定了你该把它当测量值还是当先验。
1.6 不适合谁:四条边界
不适合拿它当体内结合证据。 全部偏好来自体外体系,细胞内 RNA 折叠、蛋白伴侣、转录本丰度都不在里面。任何「这个蛋白调控这个基因」的结论,都必须有独立的体内数据支撑。
不适合拿它做亲和力的定量回归。 矩阵描述的是相对偏好,不含解离常数、不含协同性、不含浓度依赖。把矩阵值当自由能用的做法在这类数据上没有依据。
不适合用它评估物种间的调控网络差异。 多数物种只有推断记录,而推断是按同源关系迁移的,天然会把近缘物种的偏好拉平。用这样的数据得出「两个物种偏好相同」几乎必然成立,属于循环论证。
不适合直接商用或二次分发。 站内七个页面都没有许可条款,官方只写免费开放。免费使用和允许再分发是两件事,前者明确,后者没有依据。
§2 数据构成与规格
2.1 两层证据:直接测定与同源推断
整个库的结构可以压成一句话:一张蛋白表,一张基序表,中间用证据类型连接。蛋白表记录每个 RBP 的身份——物种、家族、结构域坐标、基因编号、序列来源。基序表记录每条偏好的本体与来历——矩阵、来源研究、文献编号、相似度。两张表通过 RBP 标识符关联,而每条基序上的证据类型决定了它属于哪一层。
官方帮助页把两层写得很直白:直接测定指「用实验方法为该 RBP 直接测出的基序」,推断指「从一个有实验证据、且 RNA 结合结构域相似的 RBP 迁移过来的基序」。推断的合法性完全建立在结构域序列的保守性上,具体的例子见 §4.3。
| 维度 | 直接测定层 | 推断层 |
|---|---|---|
| 条数 | 504 条 | 其余约三万四千条 |
| 数据来源 | 体外结合实验,以 RNAcompete 为主 | 结构域序列相似度 + 联合嵌入模型 |
| 是否有实验读数 | 有,7-mer 富集可直接查 | 无,只有迁移结果 |
| 关键字段 | 实验方法、研究编号、PubMed 编号 | 相似度、嵌入距离、家族阈值 |
| 精度 | 取决于实验体系,可追溯到具体批次 | 随同源距离衰减,远缘只剩轮廓 |
| 适用场景 | 定量建模、位点扫描的阈值设定 | 探索性注释、家族层面的假设生成 |
| 更新方式 | 随新实验增加 | 每次构建重算,旧记录可能被替换 |
2.2 字段与记录的完整字典
下面这张表把官方帮助页与页面结构里出现的字段逐个列出,按记录层级分组。字段名的中文是描述性翻译,括号里是页面上出现的英文原词。
| 字段 | 所属层级 | 含义 | 取值形态 | 是否必有 |
|---|---|---|---|---|
| RBP ID | 蛋白 | 库内唯一标识 | 形如 RNCMPT00046 的编号 | 必有 |
| RBP Name | 蛋白 | 蛋白常用名 | 字符串,如 YB-1 | 必有 |
| Species | 蛋白 | 物种拉丁学名 | 下划线连接的双名法 | 必有 |
| Family | 蛋白 | 结构域家族 | 家族编号加组合名,如 RRM | 必有 |
| Pfam ID | 蛋白 | 结构域在 Pfam 的编号 | 外链编号 | 多数有 |
| InterPro ID | 蛋白 | 结构域在 InterPro 的编号 | 外链编号 | 多数有 |
| Gene ID | 蛋白 | 物种基因组库中的基因号 | 外链编号,指向该物种库 | 多数有 |
| Sequence Source | 蛋白 | 氨基酸序列来源库 | 库名 | 多数有 |
| Domain Coordinates | 蛋白 | 每个结构域在序列上的起止 | 起止位置对 | 必有 |
| HMMER E-value | 蛋白 | 结构域识别的期望值 | 浮点,越小越可靠 | 必有 |
| Motif ID | 基序 | 库内基序编号 | 编号字符串 | 必有 |
| Evidence Type | 基序 | 证据类型 | 直接测定 / 推断 | 必有 |
| Study | 基序 | 产生该基序的研究 | 研究名 | 直接记录必有 |
| Study ID | 基序 | 该研究内部的记录号 | 字符串 | 直接记录必有 |
| PubMed ID | 基序 | 文献编号 | 数字 | 直接记录多数有 |
| PFM | 基序 | 位置频率矩阵 | 四行乘列数的概率表 | 必有 |
| Consensus | 基序 | 一致序列 | IUPAC 简并字母串 | 多数有 |
| E-score | 基序 | 7-mer 富集得分 | 逐 7-mer 的数值表 | 仅 RNAcompete 来源 |
| Z-score | 基序 | 7-mer 标准化得分 | 逐 7-mer 的数值表 | 仅 RNAcompete 来源 |
| RBD Identity | 推断 | 与来源蛋白的结构域一致度 | 0 到 1,1 表示完全一致 | 仅推断记录 |
| e-dist | 推断 | 联合嵌入空间中的距离 | 浮点,越小越可信 | 仅嵌入模型记录 |
| JPLE Score | 推断 | 联合嵌入模型给出的迁移得分 | 浮点 | 仅嵌入模型记录 |
| RNA Contacting Residues | 蛋白 | 预测参与 RNA 接触的残基 | 残基位置与重要性分数 | 部分有 |
2.3 一条记录的完整解剖
一个 RBP 页面从上到下分成几段:身份信息、直接测定的基序、来自相关蛋白的基序、结构域示意与坐标表、站内跳转。真正被下游消费的是前两段里的矩阵。
站点在基序比对工具里预置了一个七位矩阵作为示例,格式就是全库通用的写法:第一行是四个碱基的列名,之后每行以位置序号开头,四个数值是该位置四种碱基的概率,每行相加为一。
A C G U
1 0.382354 0.105643 0.208524 0.303479
2 0.411752 0.035062 0.035062 0.518123
3 0.011419 0.011419 0.965744 0.011419
4 0.011419 0.965744 0.011419 0.011419
5 0.965744 0.011419 0.011419 0.011419
6 0.011419 0.965744 0.011419 0.011419
7 0.824112 0.058629 0.058629 0.058629
读这张表的三个要点。第一,列数就是偏好长度,这里七列对应七个碱基,正好是 RNAcompete 的 7-mer 分辨率。第二,接近 0.0114 的值是伪计数下限,不是零;库里的矩阵都做了拉普拉斯式平滑,所以永远不会出现绝对零概率,用的时候不要再自己加一遍。第三,第 3 到第 6 位几乎是确定值,第 1、2、7 位则有明显竞争,说明这个基序的核心在中间四位。
蛋白信息一侧是制表符分隔的文本,字段排列如下(字段名取自官方帮助页,取值仅示意格式):
RBP_ID RBP_Name Species Family Motif_ID Evidence Study
RNCMPT00046 YB-1 Homo_sapiens CSD M001 Direct RNAcompete
RNCMPT00231 yb1 Danio_rerio CSD M014 Inferred RBPDB
第三列之后还有结构域坐标、Pfam 编号、序列来源等字段,不同下载项包含的列不完全相同。这一点很关键:下载项是按数据类型分开的,不是一个总表。选「PFM」只得到矩阵,选「RBP info」只得到蛋白注释,两边要靠 RBP 编号自己拼。
2.4 规模:官方给的两套口径
官方统计页写得清楚:当前库内三万四千余条 RBP 结合基序,其中五百余条来自直接实验;收录的真核 RBP 总数为十四万九千余个,分属 67 个家族、691 个物种。同一页还标注了构建版本 2.00 与更新日期。
论文侧的口径略有不同。2026 年核酸研究数据库专刊的网站文章写「超过十四万八千个序列特异性 RBP,覆盖 690 个真核物种,其中三万四千余个带基序」。2026 年自然生物技术的资源文章写「三万四千七百余个 RBP,来自 690 个真核生物」。
| 项目 | 站点统计页 | 核酸研究网站文章 | 自然生物技术资源文章 |
|---|---|---|---|
| RBP 总数 | 十四万九千余 | 超过十四万八千 | 未单列总数 |
| 物种数 | 691 | 690 | 690 |
| 带基序的 RBP | 未单列 | 超过三万四千 | 三万四千七百余 |
| 基序条数 | 三万四千七百余 | 未单列 | 三万四千七百余 |
| 直接测定 | 504 条基序 | 未单列 | 504 个 RBP 的体外数据 |
| 新增实验 | 未提 | 未提 | 新测 174 个 RBP |
两个口径的差额只有百位数级别,方向上可以理解为「统计页包含了构建时的全部蛋白记录,论文只数了其中的序列特异性部分」。差额具体由什么构成,官方没有说明,这里只记两个数并存,不做推断。
还有一处更明显的不一致:帮助页仍写「库内六万二千余个 RBP 各有自己的页面」,与统计页的十余万差了一倍多。帮助页是纯静态文本,很可能停留在旧版构建的措辞上;这一处没有官方解释,使用时以统计页为准。
2.5 与同类资源的字段差异
| 资源 | 主键 | 证据类型字段 | 是否给相似度 | 是否给逐 7-mer 打分 | 覆盖重点 |
|---|---|---|---|---|---|
| CISBP-RNA | RBP 编号 | 有,直接 / 推断两值 | 有,含嵌入距离 | 有,E 值与 Z 值 | 真核全域,重覆盖 |
| CISBP(DNA 版) | 转录因子编号 | 有,直接 / 推断两值 | 有 | 无 | 真核转录因子 |
| Rfam | 家族编号 | 不适用,模型即证据 | 无 | 无 | RNA 家族与协方差模型 |
| RNAcentral | 序列编号 | 不适用 | 无 | 无 | 非编码 RNA 序列本体 |
| ENCODE 类体内数据 | 实验编号 | 有,实验即证据 | 无 | 无 | 少数细胞系的体内结合 |
差别最大的是最后一列。CISBP-RNA 和 DNA 版共享一套「直接 / 推断」的方法论骨架,字段命名几乎可以逐项对应;而和 Rfam、RNAcentral 这类序列本体资源相比,它根本不描述 RNA,只描述蛋白这一侧的偏好;和体内结合数据相比,它少了组织、细胞类型、表达背景这三层上下文。
§3 它是什么:名字里四个词的分量
3.1 Catalog、Inferred、Sequence Binding、RNA
名字里每个词都在划定范围,四个词合起来才是完整的定位。
Catalog 是目录,不是实验记录库。它汇总别人的实验、生成自己的推断,但不保存原始读数:站内没有测序文件,也没有富集曲线,只有成品矩阵和来源说明。要原始数据,得顺着 PubMed 编号回到论文补充材料。
Inferred 是推断,而且被放在名字正中间。这个位置选择很说明问题:维护方没有把推断当成不得已的补充,而是当成产品的核心。事实也如此,推断记录占了绝大多数。
Sequence Binding 指序列偏好,不是结构偏好,也不是网络偏好。它回答「这段短序列像不像这个蛋白的菜」,不回答「这个蛋白在这条转录本的哪个位置真的结合了」。
RNA 划定了核酸类型。这一点值得单独强调,因为同一批人做的 DNA 版在方法上几乎是孪生兄弟,字段结构高度相似,很容易被当成同一套数据的不同切片。两者共同的只有方法论,数据、主键、文献、域名全部独立。
| 名字成分 | 划定的边界 | 常被误读成 |
|---|---|---|
| Catalog | 汇总与索引,不含原始读数 | 原始实验数据库 |
| Inferred | 主体是迁移结果 | 全部为实验测定 |
| Sequence Binding | 只描述序列层面的偏好 | 体内结合位点图谱 |
| RNA | 单链核酸,含折叠效应 | 与 DNA 版同一套数据 |
3.2 与 CISBP(DNA 版)的分工
DNA 版由同一实验室维护,2014 年发表在 Cell,做的是转录因子与 DNA 基序。它的规模口径是:一千余个转录因子、54 个 DNA 结合结构域类别、131 个真核物种,并据此为已知或预测的约十七万个真核转录因子中的约三分之一推断了基序。
两个库的分工可以从三个角度看。
| 角度 | CISBP(DNA 版) | CISBP-RNA |
|---|---|---|
| 结合对象 | 双链 DNA | 单链 RNA |
| 生物学环节 | 转录起始 | 转录后加工、运输、稳定性、翻译 |
| 实验体系 | 蛋白结合芯片、高通量 SELEX 类 | RNAcompete 为主 |
| 结构域类别 | 54 类 DNA 结合结构域 | 67 个家族(按结构域组合划分) |
| 主键体系 | 转录因子编号 | RBP 编号 |
| 独立域名 | cisbp.ccbr.utoronto.ca | cisbp-rna.ccbr.utoronto.ca |
两个站点的页面骨架几乎同源:左侧同一组导航、同样的下载车、同样的按物种与按家族两个批量维度。差异集中在中段:DNA 版的工具叫转录因子扫描,RNA 版叫 RNA 扫描,且多了一个蛋白扫描。
需要提醒的是,两个库的家族编号虽然都带 F 前缀和版本后缀,但编号体系不通用。拿 DNA 版的家族号去 RNA 版查,多数会落空或指向不相干的家族。
3.3 与三篇关键文献的关系
| 文献 | 年份 | 作用 | 与当前库的关系 |
|---|---|---|---|
| Ray 等,Nature | 2013 | 建立方法:205 个基因、24 个真核生物,证明体外偏好与体内结合相关 | 方法的源头,矩阵拟合口径仍沿用 |
| Sasse 等,自然生物技术 | 2026 | 资源文章:三万四千余个 RBP、690 个物种,新增 174 个 RBP 的 RNAcompete | 当前构建的数据来源 |
| Rosado-Tristani 等,核酸研究 | 2026 | 网站文章:介绍检索、工具与下载,给出新域名 | 站点的引用首选 |
2013 年那篇的贡献不只是数据。它提出的核心命题是:RNA 结合偏好在小尺度上高度保守,因此可以从结构域序列推断。这个命题是整个推断层的合法性基础。文章摘要里写「一大类后生动物的偏好可以从其 RNA 结合结构域序列推断」,这句话后来被反复引用,也成了这个库能存在的理由。
2026 年两篇是配套的:资源文章讲数据怎么来,网站文章讲怎么用。前者提到新测了 174 个 RBP——十余年过去,直接测定的增量仍是百位数级别,推断层不可能被实验层取代。
3.4 谁在维护,靠什么维持
维护方是多伦多大学的 Hughes 实验室,隶属唐纳利中心。站点没有独立的资助声明页,也没有数据管理计划文档,能看到的组织信息只有页头的实验室署名与联系表单。
两个实际后果:一是责任边界模糊,站内没有版本化发布说明,改了什么只给一个日期;二是长期可用性无承诺,没有镜像也没有归档声明,域名迁移时旧地址保不保留全靠维护方。
| 治理项 | 现状 | 对使用者的影响 |
|---|---|---|
| 维护机构 | 单一实验室 | 人员变动会直接影响更新节奏 |
| 资助声明 | 站内未见 | 无法判断长期投入强度 |
| 版本说明 | 只有构建号与日期 | 跨版本比对要自己留快照 |
| 数据许可 | 未声明 | 再分发与商用缺依据 |
| 镜像与归档 | 未声明 | 站点停摆时只能靠第三方存档 |
| 联系渠道 | 站内表单 | 无公开邮件列表或问题追踪 |
§4 质量:两种成色完全不同的数据
4.1 直接测定层的成色
五百余条直接测定记录,是整个库的地基。它们决定了所有推断能走多远——推断只能在已有实验的家族内部迁移,家族里没有任何实验锚点,整族就只剩空白。
站点给每条直接记录挂了三个可核查的坐标:实验方法(帮助页举例提到 RNAcompete、SELEX、CLIP 类)、研究名、研究内部编号,多数还带 PubMed 编号。这三个字段合起来,意味着任何人可以回到原始论文,核对这条矩阵是怎么算出来的、用了多大的随机池、做了几次重复。
| 实验体系 | 原理 | 产出形态 | 在库中的角色 |
|---|---|---|---|
| RNAcompete | 随机 RNA 池与蛋白孵育,测序后算 7-mer 富集 | 7-mer 打分 + 由其拟合的矩阵 | 主力,同时提供 E 值与 Z 值 |
| SELEX 类 | 多轮筛选富集,逐步收紧 | 矩阵或一致序列 | 补充,早期数据居多 |
| CLIP 类 | 交联免疫沉淀,体内位点测序 | 峰或位点区间 | 补充,帮助页列为方法之一 |
关键在最后一行。CLIP 是体内方法,产出的是位点而不是偏好矩阵;把它塞进一个以矩阵为通用货币的库里,必须经过二次建模。这意味着同一批「直接测定」记录,内部其实包含两类非常不同的证据:一类直接测偏好,一类测位点再反推偏好。站内的证据类型字段只有「直接 / 推断」两值,不区分这两类。
这是一个需要使用者自己补上的分辨。做法很简单:看研究方法字段。写着 RNAcompete 的,是直接的偏好测量;写着 CLIP 类的,是从体内位点归纳出来的偏好,受表达背景影响更大。
4.2 推断层的两步走
推断层不是一种方法,是两种,按时间先后叠在一起。
第一步是结构域同源迁移,也是 2013 年那套方法的原样延续。做法是:把每个 RBP 的 RNA 结合结构域序列拿出来,两两比对,算出相似度(站内称 RBD Identity),相似度为 1 表示结构域氨基酸序列完全一致。然后按家族设一个相似度阈值,只有超过阈值的蛋白才允许被迁移。帮助页明确写了阈值按家族各设一套,并显示在每个蛋白页的相关基序段下方。
第二步是联合蛋白-配体嵌入,是较新加入的。模型在 355 个只含 RRM 和/或 KH 结构域的 RNAcompete 构建体上训练,学习蛋白肽段向量与 RNA 7-mer 得分之间的联合表示;推理时把目标蛋白嵌入同一空间,用最近的若干条已知曲线重建它的 7-mer 谱,再按 2013 年的同一套方法折算成矩阵。
| 维度 | 结构域同源迁移 | 联合嵌入 |
|---|---|---|
| 依据 | 结构域序列相似度 | 蛋白序列模式与 7-mer 谱的联合分布 |
| 阈值 | 按家族各设一套 | 嵌入距离,帮助页举例 0.2 |
| 能否跨远缘 | 不能,相似度低就断了 | 能,这正是加它的原因 |
| 站内给出的可信度 | RBD Identity | e-dist 与 JPLE 得分 |
| 帮助页给出的精度 | 未给统一数字 | 距离 0.2 时平均皮尔逊相关 0.748、召回 67.6% |
| 结果去向 | 相关基序段 | 相关基序段 + RNA 接触残基预测 |
这两个数字是全站少见的、把推断精度摆到明面上的地方,值得记住它们的限定条件:训练集只有 RRM 与 KH 两类结构域,测试口径是重建已知曲线的一致性,不是「预测结果与真实实验一致」的独立验证。换句话说,0.748 衡量的是模型能不能复现它见过的分布,而不是它猜得准不准。
4.3 案例:人类 YB-1 与斑马鱼 yb1
这条案例不是我挑的,是官方帮助页自己举的,也是理解整个推断层最短的路径。
人类 YB-1 做过 RNAcompete,站内它的基序标为直接测定。斑马鱼的 yb1 没做过任何结合实验,但它的 RNA 结合结构域与人类 YB-1 在氨基酸层面完全一致,于是站内给斑马鱼 yb1 也挂了一条基序,标为推断,来源指向人类那条。
这个例子能同时说明四件事。
第一,推断的粒度是结构域,不是整个蛋白。两个蛋白全长可能差很多,附加结构域、连接区、长度都不一样,但只要结合结构域一致,偏好就被认为可以迁移。这在生物学上是有依据的——决定识别特异性的正是结构域里的接触残基。
第二,推断的方向是单向的:从有实验的到没实验的,不反向。因此库里的推断记录天然聚成一簇一簇,每簇围绕一个或几个实验锚点。
第三,可信度的表达是连续的,不是二值的。相似度为 1 是一种极端情况,更多记录落在阈值之上但不等于 1 的区间里,这时迁移的合法性就弱一些。
第四,也是最重要的一点:推断记录回答的是「这个蛋白大概认什么」,不回答「这个蛋白在这个物种里认什么」。物种之间即使结构域完全一致,下游的调控网络也可能完全不同——这正是 §4.3 的案例最容易被越界使用的地方。
| 观察点 | 人类 YB-1 | 斑马鱼 yb1 |
|---|---|---|
| 是否做过结合实验 | 做过 RNAcompete | 没做过 |
| 站内证据类型 | 直接测定 | 推断 |
| 基序来源 | 自身实验 | 迁移自人类记录 |
| 可用字段 | 方法、研究编号、文献、E 值、Z 值 | 相似度、阈值判定 |
| 能支持什么结论 | 该蛋白的体外偏好 | 该蛋白「可能」有相似偏好 |
| 不能支持什么结论 | 体内真实靶点 | 斑马鱼特异的调控关系 |
后面 §5.4、§7.2、§8.4 还会回到 §4.3 的案例,分别用来说明解析流程、评估口径和常见引用错误。
4.4 一个基序的三种表示
同一条偏好,站内给了三种表达,各自服务不同用途。
| 表示 | 形态 | 适合做什么 | 不适合做什么 |
|---|---|---|---|
| 位置频率矩阵 | 四行乘列数的概率表 | 转成权重矩阵后扫描序列 | 直接比较不同长度的基序 |
| 序列标识图 | 字母高度对应信息量的位图 | 快速看核心位点、做图 | 无法直接计算 |
| 7-mer 打分表 | 逐 7-mer 的 E 值与 Z 值 | 定阈值、做富集分析 | 只能覆盖 7 位,长基序会失真 |
第三种表示是 RNAcompete 特有的。它把一条序列的所有 7-mer 都打上分,好处是不需要先假设基序长度,坏处是分辨率被锁死在 7 位——比 7 位长的基序会被拆成若干相邻 7-mer 的组合,比 7 位短的信息则被摊薄。帮助页在站点扫描工具里把 E 值阈值的最低可选值定为 0.45,这是一个经验下限,不是统计显著性界限。
4.5 三件在线工具各自解决什么
| 工具 | 输入 | 输出 | 底层方法 | 输入上限 |
|---|---|---|---|---|
| RNA 扫描 | RNA 序列(纯文本、FASTA、多 FASTA) | 候选结合位点及得分 | 三选一:7-mer E 值、矩阵能量法、矩阵对数几率法 | 8000 碱基 |
| 蛋白扫描 | 氨基酸序列(不带 FASTA 头) | 识别出的结构域 + 候选基序排名 | HMMER 识别结构域,再按相似度排名 | 未标注 |
| 基序比对 | 矩阵、比对序列或 IUPAC 串 | 库里相似的基序及其蛋白 | TomTom | 未标注 |
三种打分的差别值得说清,因为它直接决定扫描结果的解释方式。7-mer E 值只对有 RNAcompete 数据的蛋白可用,本质是查表;矩阵能量法把矩阵当成结合能量的近似,适合看相对强弱;矩阵对数几率法是最常规的做法,适合与文献里的扫描结果对齐。同一个蛋白用两种矩阵法扫,位点排序可能不同,这是方法差异,不是数据错误。
4.6 家族阈值:一个不统一的尺子
67 个家族,每个家族一套相似度阈值。这件事在站点上不加掩饰——每个蛋白页的相关基序段下方直接写出该家族的阈值。
问题在于跨家族比较。假设 A 家族的阈值是 0.8,B 家族是 0.6,那么「A 家族里相似度 0.85 的记录」与「B 家族里相似度 0.7 的记录」虽然都过了各自的门槛,可信度却不能直接比。阈值是按家族内部的结构域保守程度定的:保守的家族门槛高,因为高相似度本来就常见;松散的家族门槛低,因为再高就没有记录能过。
| 情形 | 阈值行为 | 后果 |
|---|---|---|
| 家族内结构域极保守 | 阈值设得高 | 迁移记录少而精 |
| 家族内结构域多变 | 阈值设得低 | 迁移记录多而杂 |
| 家族内无实验锚点 | 无迁移来源 | 整族空白 |
| 跨家族横向比较 | 阈值不可比 | 只能用相似度本身,不能用「是否过阈值」 |
这条边界很少有使用者注意到,但它在做全库统计时影响很大:如果按「是否通过阈值」筛记录,筛出来的集合在不同家族之间的实际严格程度并不一致。
§5 取数:三条路,若干坑
5.1 三条路径与适用场景
| 路径 | 入口 | 粒度 | 适合的量级 | 是否要写代码 |
|---|---|---|---|---|
| 单条浏览 | 首页检索框 | 一个 RBP | 几条到几十条 | 否 |
| 下载车 | 各页的加入按钮 | 自选集合 | 几十到几百条 | 否 |
| 批量下载 | 批量下载页 | 整个物种或整个家族 | 全库 | 否,但产物是压缩包 |
三条路通向同一种产物:按数据类型分开的文件包,区别只在选择方式。批量页只有按物种、按家族两个维度,没有「按证据类型」「按文献」这类筛选。这意味着没法一键只下直接测定记录,要么整包下完再筛,要么用下载车逐个挑。
5.2 批量下载:只有两个维度的现实
批量下载页是一个表单,每行一个维度,每列一种数据类型,勾选后提交,返回一个压缩包。物种下拉里有 691 项,家族下拉里有 67 项,编号形如 F01_2.00 到 F67_2.00,后缀跟随构建号。
#-- 批量下载页是一个 POST 表单,先看它接受哪些字段
curl -s "http://cisbp-rna.ccbr.utoronto.ca/bulk.php" -o bulk.html
grep -o '<select name="[^"]*"' bulk.html
grep -c '<option' bulk.html
#-- 五个数据类别对应表头的五列勾选框
curl -s "http://cisbp-rna.ccbr.utoronto.ca/bulk.php" | grep -o '<th[^>]*>[^<]*</th>'
第二个命令的输出会告诉你表单只认两个选择字段:一个物种、一个家族。第一列是类别名,后面五列是勾选框,分别对应序列标识图、E 值、Z 值、蛋白信息、PFM。想同时按物种和家族取交集,得自己在本地做,页面不提供组合筛选。
| 下载项 | 内容 | 文件形态 | 体量提示 |
|---|---|---|---|
| Logos | 序列标识图 | 逐条 PNG | 记录多时文件数巨大 |
| EScores | 7-mer E 值表 | 文本,逐 RBP 一份 | 帮助页提醒体量大 |
| ZScore | 7-mer Z 值表 | 文本,逐 RBP 一份 | 同上 |
| RBP info | 蛋白注释 | 制表符分隔文本 | 小 |
| PFMs | 位置频率矩阵 | 纯文本 | 小到中等 |
帮助页专门提醒 E 值与 Z 值文件大、下载慢。这不是客套:每条 RNAcompete 基序对应一张 7-mer 全表,共 16384 种组合,记录一多文本量就上去了。做全库分析时先只下 PFM 与蛋白信息,跑通再补打分表。
5.3 下载车:为少量记录准备的
下载车的行为和购物网站一致:在任意页面把 RBP 加进去,最后统一结算。结算页给的是同一组五类数据,但可以选择打包成压缩包。
#-- 下载车是一个会话状态,用同一份 cookie 走完整个流程
curl -s -c jar.txt "http://cisbp-rna.ccbr.utoronto.ca/cart.php" -o cart.html
grep -o 'href="[^"]*"' cart.html | head -20
#-- 清空与查看都在同一个页面完成,没有独立接口
curl -s -b jar.txt "http://cisbp-rna.ccbr.utoronto.ca/cart.php" -o cart2.html
wc -c cart2.html
需要提醒一点:下载车依赖 cookie 维持状态,脚本化使用时必须带 cookie 文件,否则每次请求都是一辆空车。站内没有 REST 接口,也没有批量 API,所有「程序化取数」本质上都是模拟表单提交。
5.4 把 PFM 读进内存
矩阵文件是纯文本,四行碱基,每行一个位置。下面的解析函数不依赖任何第三方库,直接按制表符切。
#-- 解析 CISBP-RNA 的 PFM 文本:首行是 A/C/G/U,之后每行是 位置 + 四个概率
def read_pfm(path):
rows = []
bases = None
with open(path, encoding="utf-8") as fh:
for line in fh:
line = line.strip()
if not line:
continue
parts = line.split()
if parts[0] in ("A", "C", "G", "U"):
bases = parts
continue
rows.append([float(x) for x in parts[1:5]])
return bases, rows
bases, mat = read_pfm("M001.pfm")
print(bases, len(mat), "位")
for i, row in enumerate(mat, 1):
top = bases[max(range(4), key=lambda k: row[k])]
print(i, top, round(sum(row), 6))
最后一行打印每行的概率和,正常应当接近 1。如果不是,多半是文件被 Excel 打开后改过格式,或者按空白切分时把科学计数法切错了。§4.3 的案例里那张七位矩阵,用这段代码读出来,每行和都应当是 1,核心位点落在第 3 到第 6 位。
| 解析步骤 | 易错点 | 检查办法 |
|---|---|---|
| 识别首行 | 有的文件首行是空制表符开头 | 用 strip 后判首字段 |
| 切分列 | 制表符与空格混用 | 用无参 split |
| 取哪四列 | 行首是位置序号,不是概率 | 固定取第 2 到第 5 字段 |
| 校验 | 概率和应为 1 | 逐行求和 |
| 方向 | 库内矩阵为 5 到 3 方向 | 与转录本方向一致时无需反转 |
5.5 用 E 值阈值扫一条序列
对有 RNAcompete 数据的蛋白,最省事的扫描方式是把序列切成 7-mer,查 E 值表,按阈值取位点。下面的写法把阈值设为站点允许的最低值 0.45。
#-- 按 7-mer 查表扫序列,阈值取站内工具允许的最低值
def scan(seq, escore, thr=0.45):
seq = seq.upper().replace("T", "U")
hits = []
for i in range(len(seq) - 6):
kmer = seq[i:i + 7]
score = escore.get(kmer)
if score is not None and score >= thr:
hits.append((i + 1, kmer, round(score, 3)))
return sorted(hits, key=lambda x: -x[2])
table = {}
with open("M001.escore", encoding="utf-8") as fh:
for line in fh:
k, v = line.split()[:2]
table[k] = float(v)
for pos, kmer, s in scan("AUGCAUGCAGUCAGUACGUAGCUAGC", table)[:10]:
print(pos, kmer, s)
这段代码的重心不在算法,而在两个约定:一是把 T 统一换成 U,库里的键是 RNA 字母表;二是位置从 1 开始计,与站内工具输出一致。阈值调高会迅速减少命中,0.45 已经偏低,做富集分析时建议同时跑一个背景集对照。
| 参数 | 建议取值 | 理由 |
|---|---|---|
| 阈值 | 0.45 起,逐步上调 | 站点工具的下限即此值 |
| 背景 | 同长度同碱基组成的随机序列 | 控制组成偏差 |
| 最小命中数 | 按序列长度定 | 短序列套用固定阈值会虚高 |
| 是否反向互补 | RNA 一般不做 | 单链,但仍应确认蛋白结合方向 |
5.6 站点可用性与地址考古
这是使用这个库必须先做的一步。CISBP 系列站点历史上换过地址,论文里给的新域名与站点实际所在的老域名不是同一个。
#-- 三件事一起查:老域名是否活着、新域名是否跳转、走不走加密
curl -s -o /dev/null -w "old %{http_code} %{time_total}s\n" --max-time 20 \
"http://cisbp-rna.ccbr.utoronto.ca/"
curl -s -o /dev/null -w "new %{http_code} -> %{redirect_url}\n" --max-time 20 \
"http://www.cisbp.org/rna/"
curl -sI --max-time 20 "http://cisbp-rna.ccbr.utoronto.ca/" | head -8
2026 年 10 月 28 日跑这三条的结果是:老域名直接返回 200;新域名先返回 301 跳到 https 版本,落到一张只有一行跳转指令的静态页,再用页面级跳转把浏览器送回老域名;头部字段里没有强制加密的重定向。也就是说,论文给的是入口,真正提供服务的还是老地址,而且老地址在明文 http 下也能访问。
| 检查项 | 结果 | 含义 |
|---|---|---|
| 老域名直连 | 200,响应快 | 服务在线 |
| 新域名 | 301 到 https,再由页面跳转 | 只是别名,不是独立部署 |
| 强制 https | 无 | 明文可取,但传输不加密 |
| 页面构建号 | 2.00 | 与统计页一致 |
| 页面更新日期 | 2025 年 5 月 7 日 | 与统计页一致 |
5.7 锁定版本再开工
站点支持按版本号切换,参数名与 cookie 名都出现在页面脚本里。这意味着不同构建可以并存,也意味着「我用的 CISBP-RNA」这句话不完整,必须带构建号。
#-- 用查询参数锁定构建版本,避免中途被切到新版
curl -s "http://cisbp-rna.ccbr.utoronto.ca/index.php?versionID=2.00&versionNumber=2.00" \
-o idx_200.html
grep -o 'Database Build [0-9.]*' idx_200.html | head -3
#-- 把构建号与抓取日期写进文件名,后续比对才有依据
date +%Y%m%d
| 记录项 | 为什么要记 | 记在哪 |
|---|---|---|
| 构建号 | 同一条基序在不同构建里可能被重算 | 数据说明文件首行 |
| 抓取日期 | 站点没有发布说明,只能靠日期定位 | 同上 |
| 下载维度 | 按物种与按家族得到的包内容不同 | 同上 |
| 是否含打分表 | 影响后续能否做阈值扫描 | 同上 |
§6 与库内其他数据的关系
6.1 关系图谱
这个库在库内的位置比较特殊:它描述的是「蛋白认什么序列」,而库内多数组学资源描述的是「序列上发生了什么」。两者是互补关系,不是替代关系。
| 库内资源 | 编号 | 关系 | 怎么配合 |
|---|---|---|---|
| Pfam | 1043 | 上游:结构域定义 | 用 Pfam 编号对齐家族,确认结构域边界 |
| InterPro | 1044 | 上游:结构域整合分类 | 跨库查同一结构域的多种注释 |
| UniProt | 37 | 上游:蛋白序列 | 取全长序列做结构域重注释 |
| Ensembl | 497 | 上游:基因组与转录本 | 把基序扫描结果落回转录本坐标 |
| GENCODE | 491 | 上游:转录本注释 | 提供 3′UTR 与内含子边界,界定扫描范围 |
| RNAcentral | 1349 | 平行:非编码 RNA 序列 | 把基序列扫描扩展到非编码转录本 |
| Rfam | 1350 | 平行:RNA 家族模型 | 检查基序是否落在已知 RNA 家族的结构区 |
| ENCODE | 574 | 下游:体内结合与功能元件 | 用体内数据校准体外基序的阈值 |
| BioGRID | 1061 | 下游:蛋白互作 | 判断结合是否依赖伴侣蛋白 |
| STRING | 414 | 下游:互作网络 | 同上,覆盖更广 |
| MotifBench | 1112 | 平行:蛋白基序设计基准 | 概念相邻,对象是蛋白基序而非核酸 |
最值得展开的是 ENCODE 那一行:它给体内结合证据,本库给体外偏好。两者叠起来才有意义——先用基序扫描定位候选,再用体内数据看多少候选真被结合。单用任何一方都会失真。
6.2 三条检索路径
| 你的起点 | 检索方式 | 落到哪个字段 | 常见坑 |
|---|---|---|---|
| 手上是一个基因名 | 首页按标识符检索,支持通配符 | RBP 名称 | 同名基因跨物种会一起返回 |
| 手上是一个结构域 | 按家族浏览 | 家族字段 | 家族按结构域组合划分,单结构域会落在多个家族 |
| 手上是一段 RNA 序列 | 基序比对工具 | 矩阵相似度 | TomTom 只给相似度,不给显著性阈值 |
| 手上是一个物种 | 按物种浏览 | 物种字段 | 物种名用下划线,空格会查不到 |
| 手上是一个基序编号 | 直接检索编号 | 基序编号 | 编号跨构建不保证稳定 |
6.3 与邻近资源的边界对照
| 你想问的问题 | 该用哪个 | 为什么不用 CISBP-RNA |
|---|---|---|
| 这段序列是不是某个 RNA 家族 | Rfam | 它不建模 RNA 二级结构 |
| 这条非编码 RNA 叫什么、来自哪 | RNAcentral | 它不收录 RNA 序列本体 |
| 这个转录因子认什么 DNA 序列 | CISBP(DNA 版) | 核酸类型不同 |
| 这个蛋白在某细胞系里结合了哪些位点 | ENCODE 类体内数据 | 它只有体外偏好 |
| 这个结构域的边界在哪 | Pfam 或 InterPro | 它只转引,不定义 |
| 这个蛋白认什么 RNA 序列 | CISBP-RNA | 这正是它的本职 |
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
多数质量评估会先问「准不准」,然后给一个总分。对这个库,这个问法会直接导致误判。
原因是它把两种精度差了一个数量级的数据放在同一张表里:五百余条直接测定,三万四千余条推断。如果按条数加权算一个平均精度,结果会被推断层完全主导,那个数字既不反映实验层的质量,也不反映推断层的质量,只反映两者的比例。
正确的读法是先分层,再在层内比较。直接测定层问的是「实验体系与拟合方法是否可靠」,推断层问的是「同源关系是否成立、阈值是否合理」。两层的评价标准不同,不能合并成一个分数。下面的五维评分针对的是「作为序列偏好参考库」这个用途,并且已经在评分理由里标出分层。
7.1 五维评分
按 DAIMS 常用的五个维度打分,每项 1 到 5 分,针对「作为序列偏好参考库」这个用途:
| 维度 | 分数 | 理由 |
|---|---|---|
| 数据规模 | 5 | 十余万个 RBP、三万四千余条基序,同类资源里覆盖最广 |
| 标注质量 | 3 | 直接层可靠可追溯,推断层占绝大多数且精度随距离衰减 |
| 任务适配 | 4 | 序列偏好的标准输入格式齐全,但缺体内与结构维度 |
| 文档完整 | 3 | 帮助页把方法讲清,但许可、版本说明、统计明细缺失 |
| 可获取性 | 5 | 免注册、免密钥、批量与单车两条路都能走 |
五项合计 20 分(满分 25)。分数结构和多数生信资源不同:规模与可获取性拉满,文档与标注质量被推断层的体量拖住。这不是缺陷描述,这是它的设计取舍——用覆盖率换精度,把判断权交给使用者。
7.2 分层之后才看得见的三个事实
第一个事实:基序条数不等于蛋白数。§4.3 的案例已经说明,一条推断基序背后可能对应多个未做实验的蛋白。统计「有多少蛋白有基序」时,要按蛋白去重,不能按基序列计数。
第二个事实:推断层的相似是结构性的,不是功能性的。同一家族内所有从同一锚点迁移出来的记录,彼此之间必然高度相似,因为它们的来源是同一条曲线。用这批数据做聚类,会得到漂亮的家族结构,但那个结构是迁移规则画出来的,不是数据自己长出来的。
第三个事实:直接层的内部也不齐。前面说过,RNAcompete 与 CLIP 类数据在证据性质上不同,站内不区分。做严格的定量分析时,应当只看 RNAcompete 来源的记录。
| 事实 | 表面现象 | 实际机制 | 应对 |
|---|---|---|---|
| 基序数不等于蛋白数 | 条数看起来很大 | 一蛋白多基序、一基序多蛋白 | 按蛋白编号去重 |
| 家族内高度相似 | 聚类结果干净 | 同源迁移共用锚点 | 聚类前剔除推断记录 |
| 直接层内部不齐 | 都标「直接」 | 实验体系不同 | 按研究方法字段再筛 |
| 跨家族阈值不可比 | 都写「过阈值」 | 阈值按家族各设 | 只用相似度数值比较 |
7.3 已知的、可枚举的偏差
| 偏差 | 具体表现 | 影响范围 | 能否校正 |
|---|---|---|---|
| 体外偏差 | 无细胞内二级结构与伴侣 | 全部记录 | 不能,需体内数据补充 |
| 物种偏差 | 模式生物实验密集,其余多为推断 | 非模式物种 | 部分,可加权重 |
| 家族偏差 | 有实验锚点的家族才有推断 | 冷门家族整族空白 | 不能,需新实验 |
| 方法偏差 | 不同实验体系混在同一字段下 | 直接层 | 可,按研究方法筛 |
| 阈值偏差 | 家族阈值宽严不一 | 推断层 | 部分,改用相似度连续值 |
| 更新偏差 | 无发布说明,旧记录可能被重算 | 跨版本复现 | 可,锁定构建号 |
体外偏差这一条需要多说一句。RNA 是单链,在溶液里会折叠,随机池里的序列不是均匀可及的。一个蛋白如果偏好富含 G 的序列,而富含 G 的序列在池里恰好容易形成四链结构,那么测出的偏好里就混进了「可及性」这一层,而不只是「识别」这一层。这是所有体外 RNA 结合实验的共同问题,不是这个库独有的,但它决定了这个库的上限。
7.4 外部验证矩阵
| 验证角度 | 已有证据 | 强度 | 说明 |
|---|---|---|---|
| 与体内结合的一致性 | 2013 年论文称体外基序与体内数据相关性良好 | 中 | 定性结论,未给全库数字 |
| 推断的可复现性 | 嵌入模型在训练集内的重建相关 0.748 | 中 | 是重建,不是独立验证 |
| 跨物种保守性 | 论文称后生动物偏好高度保守 | 中 | 支持推断前提,也限制物种间比较 |
| 独立实验复核 | 站内无 | 无 | 未做系统性湿实验验证 |
| 与 DNA 版方法一致性 | 同一实验室、同一套直接/推断框架 | 弱到中 | 方法同源不等于数据可比 |
| 社区使用广度 | 被大量论文引用为基序来源 | 中 | 使用广不等于精度高 |
这张表最该注意的是第四行。一个靠推断撑起绝大多数记录的库,如果没有独立的湿实验复核,它的推断层精度就只能靠内部指标说话。这不构成否定,但构成使用时的前提:推断记录应当被视为假设,而不是测量。
7.5 它为何能持续:把「不知道」也变成了可交付的内容
这类资源常见的死法是:实验做一批,发一篇文章,数据挂几年,然后没人维护。CISBP-RNA 没有走这条路,原因不在于实验做得多,而在于它把「不知道」也做成了产品的一部分。
一个蛋白没做过实验,多数数据库的处理方式是留空。留空的结果是覆盖率上不去,用户查不到就走。CISBP-RNA 的处理方式是给一个带出处的推断值,并标明这是借来的。这样一来,覆盖率和诚实度同时保住了:用户查任何蛋白都有东西可看,同时知道该信几分。
这套设计还带来正反馈:每新增一批实验,受惠的不只是那批蛋白,还有同家族里所有等待迁移的成员,实验的边际价值被放大。再加上站点轻、无登录、无密钥,一套页面加一个数据库就能跑十几年。
代价同样清楚:推断层的规则一旦定下,就会自我强化。用得越多,引用越多,越显得权威,而它本质上仍是一套基于同源假设的迁移。可持续不等于可验证,这两件事在这个库上是分开的。
§8 生态位与历史:一个数据库的三次搬迁
8.1 历史沿革
这个库的时间线不长,但每一段都对应一次范围扩张或一次技术换代。
| 时间 | 事件 | 数据层面的变化 |
|---|---|---|
| 2013 年 7 月 | Ray 等人在 Nature 发表方法文章 | 205 个基因、24 个真核生物,建立体外偏好与同源推断的框架 |
| 2013 年之后 | 站点上线,作为论文的补充资源 | 从论文附表升级为可检索的库 |
| 2014 年 | 同实验室的 DNA 版发表在 Cell | 孪生站点出现,共享页面骨架与证据类型体系 |
| 2025 年 5 月 | 构建 2.00 | 物种扩到 691,蛋白记录扩到十余万,引入嵌入模型推断 |
| 2026 年 | 资源文章与网站文章同期发表 | 新增 174 个 RBP 的 RNAcompete,改用新域名对外宣传 |
时间线上最值得注意的是 2013 与 2025 之间的空档。这十余年里库一直在,但公开可见的版本说明很少,构建号从 1.x 走到 2.00 的过程没有对外文档。这解释了为什么站内不同页面的措辞会不一致——帮助页显然停在某个旧版,统计页与引用页才是新的。
| 页面 | 标注的日期或版本 | 措辞年代判断 |
|---|---|---|
| 统计页 | 构建 2.00,2025 年 5 月 7 日 | 当前 |
| 引用页 | 同上,且列出 2026 年两篇 | 当前 |
| 联系页页脚 | 2025 年 5 月 7 日,构建 2.00 | 当前 |
| 帮助页 | 未标日期,写「六万二千余个 RBP」 | 旧版 |
8.2 三次地址变迁
对一个纯 Web 资源,地址就是生命线。这个库的地址变迁可以直接观察。
| 阶段 | 地址形态 | 现状(2026 年 10 月 28 日) |
|---|---|---|
| 论文宣传地址 | cisbp.org/rna | 301 到 https,再由页面跳转回老域名 |
| 实际服务地址 | cisbp-rna.ccbr.utoronto.ca | 200,构建 2.00 |
| DNA 版地址 | cisbp.ccbr.utoronto.ca | 200,独立服务 |
| 旧式缩写 | 各类论文里写的 cisbp-rna 简写 | 需补全域名才能访问 |
这条链有一个容易踩的坑:脚本里如果只认论文给的地址,会拿到一张 409 字节的静态跳转页,而不是数据。解析器遇到这种页面通常不报错,只是解析出零条记录——排查时会误以为是选择器写错了。
#-- 判断拿到的是跳转壳还是真页面:真页面有导航与表单
curl -sL --max-time 20 "http://www.cisbp.org/rna/" -o page.html
wc -c page.html
grep -c "Bulk downloads" page.html
#-- 老域名直接取,跳过一次中转
curl -s --max-time 20 "http://cisbp-rna.ccbr.utoronto.ca/index.php" -o direct.html
grep -c "Bulk downloads" direct.html
第一条命令的字节数会明显小于第二条,并且导航关键词的计数是 0。这个检查比看状态码可靠,因为跳转链上每一跳都是 200 或 301,状态码本身不说明内容。
8.3 生态位:它占的是哪一格
同类资源可以按两个轴摆开:横轴是「证据来自体外还是体内」,纵轴是「描述的是偏好还是位点」。CISBP-RNA 落在左上角:体外、偏好。
| 资源类型 | 证据来源 | 描述对象 | 覆盖策略 | 代表 |
|---|---|---|---|---|
| 偏好目录 | 体外 | 矩阵 | 全物种铺开,靠推断补 | CISBP-RNA、DNA 版 |
| 体内位点图谱 | 体内 | 区间或峰 | 少数细胞系做深 | ENCODE 类 |
| RNA 家族模型 | 多序列比对 | 协方差模型 | 按家族覆盖 | Rfam |
| 序列本体 | 收录 | 序列与注释 | 按记录收录 | RNAcentral |
| 蛋白家族与结构域 | 序列与结构 | 隐马尔可夫模型 | 按家族覆盖 | Pfam、InterPro |
这张表说明一件事:这个库没有直接竞争者,因为「体外 + 偏好 + 全物种」这个格子只有它和它的 DNA 版兄弟。有替代品的不是它本身,而是它的用途——如果你想回答的是「这个蛋白在细胞里结合了哪里」,它能给的只是候选。
| 你的问题层级 | 需要的资源类型 | CISBP-RNA 的位置 |
|---|---|---|
| 这段序列像不像某蛋白的菜 | 偏好目录 | 正是它 |
| 这个蛋白在细胞里结合了哪里 | 体内位点图谱 | 只能提供先验 |
| 这段 RNA 属于哪个家族 | 家族模型 | 不涉及 |
| 这个结构域的定义是什么 | 结构域库 | 只转引编号 |
| 这个位点突变会不会破坏结合 | 偏好目录 + 变异注释 | 需自己算差值 |
8.4 谁在用它,用来做什么
从它能回答的问题倒推,使用者大致分三类。
| 使用者 | 典型任务 | 用到的部分 | 常犯的错 |
|---|---|---|---|
| 计算生物学者 | 建模转录后调控、训练序列模型 | 全库矩阵,转权重矩阵 | 不区分证据类型,整表入模 |
| 实验人员 | 设计突变、挑候选位点做验证 | 直接测定记录 + 扫描工具 | 拿推断记录当实验依据 |
| 资源整合者 | 给别的库补基序注释 | 蛋白信息 + 矩阵 | 忽略构建号,跨版本拼接 |
§4.3 的案例在三类人身上的表现不同:计算的人会把人类与斑马鱼两条都喂进模型,实验的人只会设计人类那条的验证,整合的人会把两条都收进自己的库但不标证据类型。第三种做法最危险,因为推断信息一旦失去「推断」这个标签,在下游就再也无法被识别。
8.5 引用惯例与实际做法
| 场景 | 通常引哪篇 | 是否够 |
|---|---|---|
| 论文方法部分提到用了本库 | 网站文章 | 够,但要写构建号 |
| 复现某个具体基序 | 原始实验论文(基序的来源研究) | 更准确 |
| 讨论推断方法 | 2013 年方法文章 | 够 |
| 讨论新增嵌入模型 | 2026 年资源文章 | 够 |
| 商业产品或对外服务 | 无明确指引 | 不够,需先确认许可 |
§9 使用指引
9.1 三种角色的最短路径
| 角色 | 第一步 | 第二步 | 第三步 | 预计产出 |
|---|---|---|---|---|
| 只想查一个蛋白 | 首页按名称检索 | 看证据类型与来源研究 | 复制矩阵 | 一条矩阵加一句出处 |
| 要做全库分析 | 批量下载 PFM 与蛋白信息 | 按证据类型分表 | 按家族阈值加权 | 一张带权重的基序表 |
| 要做位点注释 | 选定目标蛋白 | 用扫描工具或本地脚本扫转录本 | 用背景集校正 | 一份候选位点清单 |
三条路径的共同前提是先把版本锁住。没有构建号的分析结果,半年后无法复现,因为站点会更新而你不一定会重下。
9.2 一条最短的可用流程
下面这段从零开始,把一个物种的矩阵取下来、解析、扫一条序列,全程不依赖站点的交互界面。
#-- 1. 建工作目录,记录抓取日期与构建号
mkdir -p cisbp_work && cd cisbp_work
date +%Y%m%d > fetch_date.txt
curl -s "http://cisbp-rna.ccbr.utoronto.ca/stats.php" | grep -o "Database Build [0-9.]*" > build.txt
cat build.txt
#-- 2. 取批量下载页,确认表单字段名
curl -s "http://cisbp-rna.ccbr.utoronto.ca/bulk.php" -o bulk.html
grep -o '<select name="[^"]*"' bulk.html
#-- 3. 单条 RBP 的页面也可以直接抓,适合小规模核对
curl -s "http://cisbp-rna.ccbr.utoronto.ca/index.php" -o home.html
grep -o 'Homo_sapiens' home.html | head -3
#-- 4. 解析矩阵并按 7-mer 打分扫序列,阈值与站内工具保持一致
def read_pfm(path):
bases, rows = None, []
for line in open(path, encoding="utf-8"):
parts = line.split()
if not parts:
continue
if parts[0] in ("A", "C", "G", "U"):
bases = parts
else:
rows.append([float(x) for x in parts[1:5]])
return bases, rows
def to_pwm(bases, rows, bg=0.25):
#-- 概率转对数几率,背景取均匀分布
import math
return [[math.log(max(p, 1e-6) / bg, 2) for p in row] for row in rows]
def score(seq, pwm, bases, thr=2.0):
seq = seq.upper().replace("T", "U")
best = []
for i in range(len(seq) - len(pwm) + 1):
s = 0.0
for j, row in enumerate(pwm):
k = bases.index(seq[i + j])
s += row[k]
if s >= thr:
best.append((i + 1, round(s, 2)))
return sorted(best, key=lambda x: -x[1])
bases, rows = read_pfm("M001.pfm")
pwm = to_pwm(bases, rows)
print(score("AUGCAUGCAGUCAGUACGUAGCUAGC", pwm, bases)[:5])
这段流程的关键不在代码,而在前三步留下的两个文件:抓取日期与构建号。它们是这份分析唯一的外部锚点。
| 步骤 | 产物 | 校验方式 |
|---|---|---|
| 记录日期 | fetch_date.txt | 与下载包时间戳对照 |
| 记录构建号 | build.txt | 与统计页逐字一致 |
| 确认表单字段 | 字段名清单 | 与页面 HTML 对照 |
| 解析矩阵 | 概率表 | 每行和为 1 |
| 扫描 | 位点清单 | 与站内工具结果比对若干条 |
9.3 引用与标注写法
| 要写的位置 | 建议写法 | 必须带的限定 |
|---|---|---|
| 论文方法 | 库名 + 构建号 + 抓取日期 + 文献 | 三者缺一不可复现 |
| 图表脚注 | 库名 + 证据类型 | 推断记录必须标「推断」 |
| 数据可用性声明 | 官方地址 + 访问日期 | 地址用实际服务地址 |
| 代码仓库 | 构建号写进配置 | 不要硬编码基序编号 |
9.4 常见任务的映射
| 任务 | 该取哪部分 | 不该取哪部分 |
|---|---|---|
| 训练序列到结合的模型 | 直接测定记录,按蛋白划分训练测试 | 推断记录(会造成同源泄漏) |
| 给新蛋白做功能假设 | 推断记录 + 相似度 | 直接记录(该蛋白没有) |
| 全转录组位点注释 | PFM + 扫描工具 | 序列标识图 |
| 家族层面的比较 | 家族编号 + 直接记录 | 家族阈值(不可比) |
| 与体内数据对照 | 直接记录 + 体内峰 | 推断记录(噪声太大) |
| 做图展示 | 序列标识图 | 矩阵原值(不利于阅读) |
§10 AI 使用声明
| 项目 | 说明 |
|---|---|
| 数据性质 | 序列偏好参考库,不含人类受试者数据、不含临床信息 |
| 可用于训练的部分 | 矩阵与蛋白注释,公开可下载 |
| 训练时的分层要求 | 直接测定与推断记录必须分开加权,否则模型学到的是迁移先验 |
| 划分要求 | 按蛋白家族或按蛋白划分,不能按基序列随机划分 |
| 泄漏风险 | 同源迁移使同家族记录高度相似,随机划分会高估性能 |
| 生成式使用 | 不宜直接把矩阵当作「该蛋白的结合位点」生成结论性文本 |
| 责任边界 | 推断记录的误差不由使用者承担,但结论必须标注证据类型 |
| 合规提示 | 站内无许可声明,商用与再分发前需向维护方确认 |
常见误读
| 常见说法 | 实际 | 证据 |
|---|---|---|
| 这是 RNA 版的 JASPAR,可以直接当金标准 | 绝大多数是推断,直接测定的只有五百余条 | 统计页的基序总数与直接实验数并列给出 |
| 三万四千条基序等于三万四千个蛋白被表征 | 基序条数与蛋白数是两套口径,一蛋白可多基序 | 统计页与论文分别给出两个数 |
| 它和 CISBP 是同一套数据 | DNA 版与 RNA 版主键、文献、域名全部独立 | 两个站点的引用页各列各的文献 |
| 推断记录只是「填空」,可以忽略 | 推断记录是产品主体,也是绝大多数查询的返回结果 | 帮助页把推断写成正式的证据类型 |
| 阈值过了就代表可信 | 阈值按家族各设,跨家族不可比 | 帮助页说明阈值按家族分别设定 |
| 矩阵值可以当结合强度用 | 矩阵是相对偏好,不含热力学量 | 帮助页只描述偏好,未给亲和力字段 |
| 有 CLIP 数据就说明它在体内验证过 | CLIP 类数据被归入直接层,但与体外偏好测量性质不同 | 帮助页把 CLIP 列为方法之一 |
| 站点停过,数据可能已失效 | 2026 年 10 月 28 日访问正常,构建 2.00 | 首页与统计页均有版本与日期 |
| 免费下载等于可以随意再分发 | 站内七个页面均无许可条款 | 首页、帮助、引用、统计、批量、下载车、工具页均未出现许可字样 |
| 新域名是新的部署 | 新域名只做跳转,服务仍在老域名 | 301 后落到静态跳转页 |
FAQ
Q1:三万四千条基序里到底有多少是测出来的?
五百余条,官方统计页写成「三万四千余条基序,其中五百余条来自直接实验」。占比极小。其余记录标为推断,靠结构域相似度或嵌入模型从有实验的蛋白迁移而来。用之前先看证据类型字段。
Q2:它和 CISBP 是什么关系?
同实验室的两个独立资源。CISBP 指 DNA 版,管转录因子与 DNA 基序,2014 年发表在 Cell;CISBP-RNA 管 RNA 结合蛋白与 RNA 基序,2013 年发表在 Nature。方法论同源,数据、主键、文献、域名各自独立。
Q3:站点现在还能访问吗?
能。2026 年 10 月 28 日访问 cisbp-rna.ccbr.utoronto.ca 返回 200,页面标注构建 2.00、更新日期 2025 年 5 月 7 日。论文里给的新地址 cisbp.org/rna 会先 301 再页面跳转,最终仍回到这个老域名。
Q4:可以直接用它注释 CLIP 的峰吗?
可以当先验,不能当结论。基序来自体外,细胞内是否真的结合取决于结构可及性、伴侣蛋白与表达背景。合理做法是把矩阵打分作为特征之一,再用同一批细胞的体内数据校准阈值。
Q5:为什么有的蛋白查不到基序?
因为这个家族里没有任何实验锚点。推断只能从有实验的蛋白出发,整个家族都没有实验时,族内所有成员都只剩蛋白信息,没有基序。站内的家族阈值表会显示该家族的判定标准,但阈值存在不等于有来源。
Q6:矩阵里的 0.0114 是零吗?
不是,是平滑后的下限。库内矩阵都加了伪计数,保证任何位置任何碱基都有非零概率。自己再做一次平滑会重复计数,把低概率位点抬得过高。
Q7:为什么同一个蛋白在不同构建里矩阵不一样?
推断层每次构建都会重算,尤其是引入嵌入模型之后,远缘记录的来源可能被替换。直接测定记录相对稳定,但也可能因为原始研究更新而变。跨版本比对必须带构建号。
Q8:基序长度为什么大多是七位?
因为 RNAcompete 的分辨率是 7-mer,打分表按七位给出,矩阵也常被裁到七列。这不是生物学上的偏好长度,而是实验设计的分辨率上限。比七位长的真实偏好会被压缩表达。
Q9:能不能拿它比较人和小鼠的调控差异?
能比,但要限定在直接测定记录上。多数物种只有推断记录,而推断按同源关系迁移,天然拉平近缘物种的差异。用推断记录得出「两者偏好相同」几乎是循环论证。
Q10:许可到底是什么?
站内没有声明。官方措辞是免费开放,引用页给了三篇文献,但没有任何一页写允许再分发或商用。学术使用一般无碍,对外分发与商业集成需要先向维护方确认。
Q11:下载下来为什么不是一个总表?
因为下载项按数据类型拆开:标识图、E 值、Z 值、蛋白信息、矩阵各自独立。选一个维度只得到一类文件,合并要按 RBP 编号自己做。这是设计如此,不是下载出错。
术语表
| 术语 | 英文 | 含义 |
|---|---|---|
| RNA 结合蛋白 | RNA-binding protein, RBP | 能识别并结合 RNA 的蛋白,参与剪接、运输、稳定、翻译等环节 |
| 基序 | motif | 一段被反复识别的短序列模式,通常用矩阵或一致序列表示 |
| 位置频率矩阵 | position frequency matrix, PFM | 四行对应四种碱基、每列一个位置的概率表 |
| 位置权重矩阵 | position weight matrix, PWM | 由频率矩阵取对数几率得到的打分表 |
| 一致序列 | consensus sequence | 用简并字母概括的基序字符串表示 |
| 序列标识图 | sequence logo | 以字母高度表示信息量的可视化 |
| 直接测定 | direct | 用实验方法为该蛋白本身测出的基序 |
| 推断 | inferred | 从同源蛋白迁移得到的基序 |
| 结构域 | domain | 蛋白序列中承担特定功能的片段,这里是 RNA 结合结构域 |
| RBD 相似度 | RBD identity | 两个蛋白 RNA 结合结构域序列的一致程度 |
| 嵌入距离 | e-dist | 联合嵌入空间中目标蛋白与最近训练蛋白的余弦距离 |
| 联合嵌入 | joint protein-ligand embedding, JPLE | 同时学习蛋白序列与 RNA 7-mer 得分的表示方法 |
| E 值 | E-score | RNAcompete 得出的 7-mer 富集得分 |
| Z 值 | Z-score | 对 E 值做标准化后的得分 |
| 家族阈值 | family threshold | 每个家族各自设定的相似度门槛 |
| 结构域识别 | domain detection | 用隐马尔可夫模型在蛋白序列上定位结构域 |
| 期望值 | HMMER e-value | 结构域识别结果的显著性度量,越小越可靠 |
| 伪计数 | pseudocount | 为概率表加入的小常数,避免零概率 |
| 平滑 | smoothing | 用伪计数或其他方式调整概率分布 |
| 信息量 | information content | 每位点上碱基分布偏离均匀分布的程度 |
| 体内结合 | in vivo binding | 活细胞内实际发生的蛋白-RNA 结合 |
| 体外结合 | in vitro binding | 试管体系内测得的结合偏好 |
| 交联免疫沉淀 | CLIP | 紫外交联后沉淀蛋白-RNA 复合物并测序的方法 |
| 转录后调控 | post-transcriptional regulation | 转录之后对 RNA 命运的各种调控 |
| 真核生物 | eukaryote | 有细胞核的生物,本库的覆盖范围 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| RBP 总数 | 149,219 | 站点统计页 | 官方页面 |
| 物种数 | 691 | 站点统计页 | 官方页面 |
| 家族数 | 67 | 站点统计页 | 官方页面 |
| 基序总数 | 34,746 | 站点统计页 | 官方页面 |
| 直接测定基序 | 504 | 站点统计页 | 官方页面 |
| 当前构建 | 2.00 | 站点统计页与页脚 | 官方页面 |
| 更新日期 | 2025 年 5 月 7 日 | 站点统计页与联系页页脚 | 官方页面 |
| 2026 年论文口径的蛋白数 | 超过十四万八千 | 核酸研究网站文章摘要 | 论文摘要 |
| 2026 年论文口径的物种数 | 690 | 核酸研究网站文章摘要 | 论文摘要 |
| 新增实验的蛋白数 | 174 | 自然生物技术资源文章摘要 | 论文摘要 |
| 2013 年原始规模 | 205 个基因、24 个物种 | Nature 方法文章摘要 | 论文摘要 |
| 嵌入模型训练规模 | 355 个构建体 | 站点帮助页 | 官方页面 |
| 嵌入模型精度 | 相关 0.748、召回 67.6% | 站点帮助页 | 官方页面 |
| 扫描输入上限 | 8000 碱基 | 站点帮助页 | 官方页面 |
| E 值阈值下限 | 0.45 | 站点帮助页 | 官方页面 |
| 结构项 | 现状 | 来源层级 |
|---|---|---|
| 主键 | RBP 编号 + 基序编号 | 官方页面 |
| 记录粒度 | 一个蛋白的一条基序 | 官方页面 |
| 下载维度 | 物种、家族两个 | 官方页面 |
| 数据类型 | 标识图、E 值、Z 值、蛋白信息、矩阵五类 | 官方页面 |
| 在线工具 | 序列扫描、蛋白扫描、基序比对 | 官方页面 |
| 批量接口 | 无 REST,只有表单 | 官方页面 |
| 边界项 | 现状 | 来源层级 |
|---|---|---|
| 数据许可 | 未声明 | 官方页面(逐页检索无许可字样) |
| 版本说明 | 只有构建号与日期 | 官方页面 |
| 分项统计明细 | 表体为空,仅表头 | 官方页面 |
| 帮助页规模口径 | 六万二千余,与统计页不一致 | 官方页面 |
| 体内数据 | 不提供 | 官方页面 |
| 结构影响 | 不建模 | 官方页面 |
附录 B:数字的来源分层
| 层级 | 定义 | 本篇中的例子 |
|---|---|---|
| 一级:官方页面 | 站点自身页面上的文字或表格 | 近十五万、三万四千余、504、691、67、构建 2.00 |
| 二级:论文摘要 | 期刊摘要或正文中的表述 | 十四万八千、690、174、205 个基因、24 个物种 |
| 三级:可观察事实 | 直接访问页面的结果,可重复 | 新域名 301 后跳回、统计明细表体为空、无许可字样 |
| 四级:未核实 | 官方未公布、本次未查证 | 资助来源、数据再分发条款、旧构建的发布时间 |
| 判断 | 依据 | 置信度 |
|---|---|---|
| 站点在线 | 200 响应与页面内容 | 高 |
| 构建 2.00 为当前版本 | 统计页、联系页、引用页三处一致 | 高 |
| 推断记录占绝大多数 | 两个数直接相除的定性结论 | 高 |
| 帮助页停留在旧版 | 措辞与统计页差一倍以上 | 中,官方未解释 |
| 统计明细表体为空 | 页面源码只有表头 | 高 |
| 无许可条款 | 七个页面逐页检索 | 高 |
附录 C:完整参考文献
| 序号 | 文献 | 用途 |
|---|---|---|
| 1 | Ray D 等。A compendium of RNA-binding motifs for decoding gene regulation。Nature,2013,499(7457):172-177。doi:10.1038/nature12311 | 方法源头,205 个基因与 24 个物种 |
| 2 | Sasse A 等。A resource of RNA-binding protein motifs across eukaryotes reveals evolutionary dynamics and gene-regulatory function。Nature Biotechnology,2026。doi:10.1038/s41587-025-02733-6 | 当前构建的数据来源,三万四千余个 RBP |
| 3 | Rosado-Tristani DA 等。CisBP-RNA: a web resource for eukaryotic RNA-binding proteins and their motifs。Nucleic Acids Research,2026。doi:10.1093/nar/gkaf1081 | 网站文章,检索与工具说明 |
| 4 | Weirauch MT 等。Determination and inference of eukaryotic transcription factor sequence specificity。Cell,2014,158(6)。doi:10.1016/j.cell.2014.08.009 | DNA 版,用于对照方法论 |
| 5 | Zhao Y, Stormo GD。Nature Biotechnology,2011 | 站内矩阵能量法的依据 |
| 6 | Stormo GD。Methods in Enzymology,1990 | 站内矩阵对数几率法的依据 |
| 7 | 站点帮助页、统计页、引用页、批量下载页 | 全部一手结构信息 |
附录 D:把矩阵批量转成权重矩阵
#-- 批量把目录下的 PFM 转成对数几率矩阵,输出一份便于扫描的 JSON
import json
import math
import pathlib
BG = {"A": 0.25, "C": 0.25, "G": 0.25, "U": 0.25}
def parse(path):
bases, rows = None, []
for line in pathlib.Path(path).read_text(encoding="utf-8").splitlines():
parts = line.split()
if not parts:
continue
if parts[0] in BG:
bases = parts
else:
rows.append([float(x) for x in parts[1:5]])
return bases, rows
def convert(bases, rows):
out = {}
for b_idx, base in enumerate(bases):
out[base] = [round(math.log(max(r[b_idx], 1e-6) / BG[base], 2), 3) for r in rows]
return out
result = {}
for p in sorted(pathlib.Path(".").glob("*.pfm")):
bases, rows = parse(p)
if bases is None or not rows:
continue
result[p.stem] = {"len": len(rows), "pwm": convert(bases, rows)}
pathlib.Path("pwm.json").write_text(json.dumps(result, ensure_ascii=False), encoding="utf-8")
print(len(result), "条已转换")
这份产物的两个约定要记住:背景频率取均匀分布,所以分值是可比的;长度字段单独存,因为不同基序长度不同,扫描时必须按各自的长度切片。
| 输出字段 | 含义 | 用途 |
|---|---|---|
| len | 基序长度 | 扫描时决定切片宽度 |
| pwm | 四行对数几率 | 逐位累加得分 |
| 键名 | 基序编号 | 与蛋白信息表关联 |
附录 E:如果只记五件事
| 序号 | 要记住的事 | 一句话理由 |
|---|---|---|
| 1 | 绝大多数是推断,不是测量 | 直接测定的只有五百余条 |
| 2 | 每个推断记录都带出处与相似度 | 可信度可以逐条判断,不必整库怀疑 |
| 3 | 阈值按家族各设,跨家族不可比 | 用相似度数值比,别用「是否过门槛」比 |
| 4 | 它是体外偏好,不是体内位点 | 位点注释必须另有体内数据 |
| 5 | 站内无许可声明 | 学术可用,再分发要先问 |
编辑说明
本篇的核验时间为 2026 年 10 月 28 日。核验方式为直接访问站点页面并读取其 HTML 文本,配合 Europe PMC 的摘要接口核对论文口径。未覆盖的内容包括:站内统计页的分物种、分家族明细表体(页面源码中只有表头,无可解析行)、资助与许可条款(站内未声明)、以及各历史构建的具体发布日期(官方未公布)。文中出现的两个规模口径分别来自统计页与论文摘要,差额构成官方未说明,本篇不做推断。所有矩阵示例取自站点工具页的预置内容,未做任何修改。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- paxdb — 共享标签:基因组学与多组学 / 转录组 / 蛋白质组学
- tcga-legacy — 共享标签:基因组学与多组学 / 转录组 / 蛋白质组学
- immport — 共享标签:基因组学与多组学 / 转录组 / 蛋白质组学
- human-protein-atlas — 共享标签:基因组学与多组学 / 转录组 / 蛋白质组学
- uniprot — 共享标签:基因组学与多组学 / 蛋白质组学
- alphafold — 共享标签:基因组学与多组学 / 蛋白质组学
- geo — 共享标签:基因组学与多组学 / 转录组
- fantom5 — 共享标签:基因组学与多组学 / 转录组
- cptac — 共享标签:基因组学与多组学 / 蛋白质组学
- tabula-sapiens — 共享标签:基因组学与多组学 / 转录组
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

