想象一座庞大的自动化工厂。档案馆里存放着整套产品的设计蓝图,这就是 DNA,它记录了一个生物体的全部“零件图纸”。但图纸本身只是一堆纸,真正重要的,是每个车间每天实际生产多少产品。基因表达,就是细胞按蓝图“生产”的产量:有些基因一天产出成千上万份 mRNA,有些则几乎从不开工。 车间门口的“开工令”标志是启动子,标出生产从哪一格图纸开始;工厂另一头还有“增产按钮”——增强子,隔着很远也能通过内部专线让车间多产;穿梭往来的调度员——转录因子,举着专属工牌,只有找到图纸上对应的符号才能上岗;图纸上的彩色批注——表观遗传标记,决定哪些页面摊开可用、哪些合上封存。 深度学习模型,就是一位学会了读图纸、看批注、听调度的智能车间主任。给它一段基因序列和调控信息,它就能预测这个基因的表达水平——甚至能提前预览:图纸上某处字母印错(变异),产量会因此掉多少。 这篇文章,就用这条“生产车间”的故事,带你零基础看懂“基因表达预测”的全过程。
对 AI 从业者而言,学会用深度学习预测基因表达,是踏入 AI 制药、精准医学与基因组学分析等高价值赛道的核心技能,也是让算法真正读懂生命语言的敲门砖。
可视化演示
演示序列与表观遗传整合、深度学习表达预测、转录因子结合预测,直观展示如何从DNA序列推断基因转录水平。
本节配有交互动效(进入视口后自动加载,约 3KB)。
序列与表观遗传整合 序列+表观 多源整合 结合启动子增强子与染色质状态预测表达
表达预测问题
工厂调度室最关心的问题永远是:每条生产线这个月实际产出多少?在没有预测系统之前,只能等月底盘点。基因表达预测要做的,正是这件事——不看产品最终堆了多少,而是提前算出基因这条“生产线”的产出。
生物学里,这条生产线的核心流程叫“中心法则”:DNA 上的基因先被转录成 mRNA,再被翻译成蛋白质。基因表达水平(expression)通常就用 mRNA 的丰度来衡量——mRNA 越多,说明这条产线越繁忙。
预测任务因此被形式化成:给定一个基因的序列以及它周边的调控信息,预测它的转录水平。难点在于,表达水平受启动子、增强子、转录因子、表观遗传等多重因素影响,且随细胞类型动态变化,靠简单的线性思维根本算不准。
好在,把这一切交给深度学习模型,它就像一个看过一千个车间历史报表的智能主任,能找到别人看不见的隐藏模式。接下来,我们就沿着生产线的四个关键环节逐个拆解。
蓝图已经铺开,开工令写明了一切,但真正决定车间产出的第一个开关,就是那块“开工令”标志——启动子。
- 转录(DNA 到 mRNA)细胞以 DNA 为模板合成信使 RNA,这是基因表达的“开工”环节,相当于把蓝图内容抄写成可执行的施工单。
- 翻译(mRNA 到蛋白质)核糖体读取 mRNA 上的三联体密码子,组装出氨基酸链,这是把施工单变成真实产品的环节。
- 表达水平的定义基因 g 的表达水平用 mRNA 的丰度来衡量,mRNA 越多,说明这条产线越繁忙。
启动子序列
车间门口那块“开工令”标志,决定了生产机器从图纸的哪一格开始读。没有它,机器不知道从哪儿下嘴。在基因上,这块“开工令”叫启动子(promoter),它位于基因上游的一段 DNA 序列,RNA 聚合酶在这里识别并结合,就像机器对准开工令开始转录。
启动子上有一些保守的“标准格式”,比如 TATA box。这些格式越标准,开工令就越清晰,转录机器越容易就位。为了量化“开工令”的清晰程度,计算生物学引入位置权重矩阵(PWM):统计大量已知启动子后,记录每个位置上不同碱基的出现偏好。
给定一条候选序列,把它每个位置的碱基与 PWM 对照打分,累加起来就得到启动子强度分数。深度学习模型的第一步特征,往往正是从这个分数或原始序列中学出来的。
启动子给模型提供了“第一道线索”,但它只是近处的开工令。真正让产量翻倍的,往往是远处那个“增产按钮”——增强子。
- 统计位置频率先统计大量已知启动子序列,算出每个位置上出现特定碱基的频率。
- 对数比分把该频率除以基因组背景频率,再取对数。比值为正说明该碱基在此位置被偏好,为负则被回避。
- 全序列求和从位置 1 到 L 累加每个位置的比分,得到整段启动子的强度,分数越高代表启动子越强。
增强子调控
工厂老板不可能站在每个车间门口喊“多产点”,他坐在总部按下一个按钮,信号就顺着专线传到车间。增强子(enhancer)就是这样的“增产按钮”,它可能离基因几十万甚至上百万个碱基远,却能大幅提高基因的表达。
增强子靠的是染色质三维折叠与启动子“拉近距离”——就像专线电缆把总部和车间直接接通。这种增强子-启动子环化互作,正是理解“远水也能解近渴”的关键。
计算上,常用距离衰减模型估算互作强度:线性距离越远,互作趋势越弱;但只要 Hi-C 等三维构象数据证明“专线接通”,远端增强子照样能强烈影响表达。因此,预测模型不能只看基因附近,还得把远处的增产按钮也算进来。
那么,是谁去按那个按钮?答案是拿着工牌的调度员——转录因子。
- 线性基因组距离增强子 e 与基因 g 在染色体直线上的碱基间隔,距离越大,传统上认为互作越弱。
- 幂律衰减模型互作强度与距离的 β 次方成反比,β 控制衰减速度,α 是缩放系数。
- 三维环化修正真实互作强度还要乘上环化因子,专线连通时可以抵消线性距离的影响。
转录因子结合
调度员要上岗,必须先找到自己对应的图纸符号。这个“符号”就是转录因子偏好的短 DNA 序列模式,叫作基序(motif)。转录因子结合到基序上,像钥匙插进锁孔,随后召集 RNA 聚合酶开工。
不同的转录因子认不同的锁孔,它们组合起来,就形成复杂的调控网络。预测模型要学的关键任务之一,就是“认出基序”——判断哪段序列会被哪位调度员看中。
计算上,基序用位置权重矩阵表示,扫描序列时用滑动窗口逐一打分,分数越高越可能是真实的结合位点。ChIP-seq 实验数据则为模型提供了“哪位调度员真的上岗了”的监督信号,相当于给预测器配了参考答案。
有了开工令、增产按钮、调度员工牌,还差最后一种关键要素:图纸能不能摊开?这就要看表观遗传批注了。
- 位置-碱基权重矩阵矩阵 W 的每个元素表示基序第 j 个位置偏好哪种碱基,是基序的“数字指纹”。
- One-hot 编码输入候选序列转换成 0/1 向量,x 取 1 表示该位置出现对应碱基。
- 双求和打分把每个位置的偏好权重与碱基指示相乘后累加,得到整段序列与基序的匹配分数。
表观遗传特征
图纸管理员手握彩色批注笔,他的决定非常重要:摊开的页面谁都能读,合上的页面谁也看不见。这就是表观遗传对基因表达的“开关”作用——序列没变,但可读性变了。
三个核心批注:染色质可及性(chromatin accessibility)标记开放区域,相当于“页面已摊开”;DNA 甲基化(methylation)通常关闭基因,像“保密封条”;组蛋白修饰(如 H3K27ac)标记活跃的启动子和增强子,像“重点推荐”标签。
这些特征被量化为数值轨道输入模型。同一个基因,序列完全一样,在肝细胞和脑细胞中表达天差地别,本质就是批注不同——这让表达预测天然成为“序列 + 表观”的融合任务。
至此四条线索齐了:启动子强度、增强子互作、转录因子结合、表观状态。谁来把它们拧成一股绳?答案是深度学习模型。
- 染色质可及性Acc 值越大,染色质越开放,转录机器越容易靠近 DNA,表达倾向越高。
- DNA 甲基化抑制甲基化通常是抑制信号,用 1 减去甲基化水平,把“封条解除程度”转为正向特征。
- 组蛋白修饰标记H3K27ac 是活跃增强子和启动子的经典标记,存在越多,表达越活跃。
- Sigmoid 输出加权求和后经过 σ 函数压缩,把任意实数映射到 0 到 1 之间,作为预测表达水平。
深度学习建模
智能车间主任从不背诵规则,他只观察历史数据:把每一段序列、每一条批注、每一个产量记录喂进去,让模型自己总结规律。深度学习模型就是这样一位主任。
典型流程是:DNA 序列先做 one-hot 编码,变成数值矩阵;卷积神经网络(CNN)的卷积核在序列上滑动,自动学习“基序检测器”;表观信号轨道作为额外输入通道叠加;最后经过全连接层输出预测表达值。
卷积层像一排放大镜,每个放大镜专门寻找一种局部模式;ReLU 只放行正值,让网络有能力表达“有或无”的判断;输出层的 sigmoid 把分数压到 0 到 1 之间,对应表达水平。
训练时,用真实 RNA-seq 表达量做标签,损失函数衡量预测误差,反向传播一层层修正参数。训练好的模型,就是一位见过十万个车间的资深主任——它可以回答:蓝图某处印错,产量会掉多少。
- One-hot 输入矩阵长度为 L 的序列编码成 L 行 4 列的 0/1 矩阵,四列分别对应 A、C、G、T。
- 卷积层提取基序第一层权重矩阵 W₁ 与输入卷积,相当于用一组“基序探针”扫描整条序列,输出局部模式响应。
- ReLU 非线性激活把负响应归零、保留正响应,让模型能做出“有没有这个模式”的判别。
- 全连接输出层第二层把卷积特征整合成最终分数,再经 sigmoid 输出表达水平预测值。
变异功能注释
蓝图上某个字母被印错了,产量会掉多少?这就是变异功能注释要回答的问题——尤其是那些不改变蛋白质序列的“沉默”错别字,它们藏在非编码区,传统方法几乎拿它们没办法。
表达数量性状位点(eQTL)研究发现,大量与疾病相关的变异位于非编码调控区。它们并不改动蛋白质本身,而是通过破坏启动子、增强子或转录因子结合位点,让基因表达量异常,进而引发疾病。
用训练好的预测模型,分别输入参考序列和变异序列,输出的差值 ΔE 就是该变异对表达的预测影响。ΔE 绝对值越大,说明这个错别字越“致命”。
这套流程相当于给每个变异贴上一张“表达影响标签”,让原本无从下手的非编码变异有了可解释的功能证据——这正是 AI 在基因组医学中最有价值的应用之一。
- 参考型预测把参考基因组序列输入模型,得到该基因的正常表达预测值。
- 变异型预测把携带变异的序列输入同一个模型,得到变异后的表达预测值。
- 表达改变量两者相减得到 ΔE,负数表示表达下降,正数表示表达上升,绝对值衡量影响程度。
应用与前景
当主任能准确预测每一条生产线的产量,工厂的原料调度、故障排查、新品规划都变得有据可依。基因表达预测的意义也在于此:它让抽象的基因组变成可计算的生产计划。
在药物研发中,模型帮助锁定“在疾病组织中异常高表达的基因”作为候选靶点,大幅缩短前期筛选周期;在精准医学中,患者的非编码变异通过 ΔE 快速分级,为罕见病诊断提供关键功能证据。
前沿方向同样激动人心:单细胞水平的表达预测正在解析细胞异质性;多组学融合把染色质构象、剪接、翻译一起纳入模型;大语言模型开始直接“读”基因组序列,把上下文信息融入预测。
从读懂一张蓝图到管理整座工厂,AI 与基因表达的结合,正在让“预测生命”从科幻变成日常工具。而这,只是 AI for Science 宏大叙事的一个章节。
- 表达改变幅度取 ΔE 的绝对值,衡量变异或异常状态下表达偏离正常的程度。
- 疾病相关性权重来自 GWAS 或临床数据的关联强度,表示该基因与目标疾病的紧密程度。
- 乘积排序两者相乘得到靶点评分,按分数排序即可生成候选药物靶点清单。
AI 应用场景
非编码变异解读:让沉默的变异开口说话
阶段:基因组变异注释与致病性评估
解决的问题:全外显子组测序只覆盖编码区,大量罕见病的致病变异其实位于非编码调控区。传统方法只能靠序列保守性打分,没法回答“这个变异让基因表达变了多少”。表达预测模型为每个变异输出 ΔE,相当于给原本“沉默”的变异配上了功能扩音器。
具体案例:一名发育迟缓患儿接受全基因组测序,在某个心脏发育关键基因的远端增强子区域发现一个 SNP。模型预测该变异使增强子活性下降约 40%,后续实验验证染色质开放度显著降低,最终帮助确立了分子诊断。
药物靶点发现的细胞类型特异表达
阶段:靶点发现与验证
解决的问题:传统 RNA-seq 需要大量样本测序才能发现异常表达,且成本高、周期长。表达预测模型可以在任意序列上快速预测,并叠加单细胞表观数据,定位“在疾病细胞里异常高表达的基因”作为候选靶点。
具体案例:研究团队对肿瘤组织的表观数据建模,预测某个癌基因启动子在肿瘤细胞中活性升高近 3 倍,模型结果与公共数据库中的表达谱高度一致,该基因随后进入 RNA 干扰药物管线。
Python 演示
import numpy as np BASE_MAP = {'A': [1, 0, 0, 0], 'C': [0, 1, 0, 0], 'G': [0, 0, 1, 0], 'T': [0, 0, 0, 1]} def encode_sequence(seq): """把 ACGT 字符串转成 one-hot 矩阵""" return np.array([BASE_MAP.get(b, [0, 0, 0, 0]) for b in seq.upper()]) def gc_content(seq): """计算序列的 GC 含量, 作为启动子强度特征""" return sum(1 for b in seq.upper() if b in 'GC') / len(seq) def scan_motif(seq_enc, motif_enc): """滑动窗口扫描转录因子基序, 返回最高匹配得分 0~1""" L, M = len(seq_enc), len(motif_enc) best = 0.0 for i in range(L - M + 1): score = float(np.sum(seq_enc[i:i + M] * motif_enc)) / M best = max(best, score) return best class ExpressionPredictor: def __init__(self): self.w_promoter = 0.8 self.w_enhancer = 1.2 self.w_tf = 0.4 self.bias = 0.1 def predict(self, promoter_score, enhancer_score, tf_score): """线性加权后经 sigmoid 非线性, 输出 0~1 表达水平""" z = (self.w_promoter * promoter_score + self.w_enhancer * enhancer_score + self.w_tf * tf_score + self.bias) return 1.0 / (1.0 + np.exp(-z)) def main(): model = ExpressionPredictor() promoter_seq = "ACGTACGTACGT" enhancer_ref = "ACGTGC" enhancer_mut = "AATTCC" motif = "ACGT" motif_enc = encode_sequence(motif) prom_score = gc_content(promoter_seq) tf_ref = scan_motif(encode_sequence(enhancer_ref), motif_enc) tf_mut = scan_motif(encode_sequence(enhancer_mut), motif_enc) expr_ref = model.predict(prom_score, tf_ref, tf_ref) expr_mut = model.predict(prom_score, tf_mut, tf_mut) change = (expr_mut - expr_ref) / expr_ref * 100 print("启动子 GC 含量: %.2f" % prom_score) print("参考增强子基序得分: %.2f" % tf_ref) print("变异增强子基序得分: %.2f" % tf_mut) print("参考型表达水平: %.3f" % expr_ref) print("变异型表达水平: %.3f" % expr_mut) print("表达变化: %+.1f%%" % change) if change < 0: print("结论: 该增强子变异降低了基因表达") if __name__ == "__main__": main()
BASE_MAP = {'A': [1, 0, 0, 0], 'C': [0, 1, 0, 0],定义碱基到 one-hot 向量的映射表,这是序列编码的第一步。def encode_sequence(seq):把 ACGT 字符串逐碱基转成矩阵,让模型能“吃”数值而不是字母。def scan_motif(seq_enc, motif_enc):用滑动窗口扫描增强子序列,找出转录因子基序的最佳匹配得分。class ExpressionPredictor:定义表达预测器,用可学习的权重把多源调控信号综合起来。z = (self.w_promoter * promoter_score线性加权求和,把启动子、增强子、转录因子三类信号叠加。return 1.0 / (1.0 + np.exp(-z))sigmoid 非线性压缩,把任意实数映射到 0-1 的表达水平。tf_ref = scan_motif(encode_sequence(enhancer_ref), motif_enc)对参考增强子打分,模拟健康状态的调控强度。expr_mut = model.predict(prom_score, tf_mut, tf_mut)对变异增强子重新预测,得到变异后的表达量。change = (expr_mut - expr_ref) / expr_ref * 100计算表达变化的百分比,定量描述变异的“杀伤力”。
常见误区
误区我只要看基因开头那一段启动子序列,就能判断表达强弱,其他信息都不重要。毕竟转录不是从启动子开始的吗?
正解启动子只是“开工令”,增强子像远端“增产按钮”、转录因子像调度员、表观标记像蓝图批注,都会显著影响最终产量。深度学习实验反复证明:整合多类特征比只看启动子预测准确得多。任何一个环节出问题,车间产量都会变。
为何常见:启动子紧挨基因、概念上最先接触,教材也常以启动子为例讲解转录起始,容易让人误以为它是唯一决定因素。
误区同一个基因在不同细胞里表达不同,难道不是因为序列不一样?如果序列完全相同,表达应该完全一样才对。
正解序列是“静态蓝图”,表观遗传是“动态批注”。同一个基因在肝细胞和脑细胞中表达不同,正是因为染色质开放状态、甲基化、组蛋白修饰这些批注不一样。这也是为什么预测表达必须同时融入序列和表观特征,二者缺一不可。
为何常见:中心法则给人“序列决定一切”的直觉,忽略了基因之上还有一层动态调控的“操作系统”。
误区深度学习不是端到端吗?那把 ACGT 字符串直接丢进模型就行,一切自动学,不需要编码。
正解模型不能直接处理字符串,必须先做 one-hot 编码转成数值矩阵。窗口大小、卷积核设计、是否叠加表观信号轨道,都强烈影响效果。“端到端”指的是从特征到输出的端到端学习,而不是“字符串到输出”——预处理和特征整合依然是建模的核心环节。
为何常见:“端到端”一词被过度营销,让人误以为深度学习可以跳过一切数据处理步骤。
误区模型预测某个基因表达量异常高,那它一定是致病基因,可以直接作为药物靶点。
正解表达变化是疾病的一种“线索”而非“判决”。同样的表达变化在不同细胞类型中意义不同,而且很多表达改变是疾病的结果而非原因。变异注释需要结合 eQTL、人群频率、共调控网络等证据综合判断,不能单凭一个 ΔE 下结论。
为何常见:把相关性误当成因果性,是初学者面对“预测值”时最自然的直觉误区。
面试题
Q1. 中心法则中,基因表达的第一步是?
- A.DNA 双链复制
- B.转录生成 mRNA← 正确答案
- C.翻译生成蛋白质
- D.染色体重新包装
答案:B。基因表达的第一道工序是转录,把 DNA 上的遗传信息抄写成 mRNA,相当于工厂先把蓝图内容转成可执行的施工单。DNA 复制是细胞分裂时的配套工程,翻译则在转录之后进行,染色体包装与表达流程无关。
Q2. 启动子在基因表达中的作用是?
- A.编码蛋白质序列
- B.包装 DNA 双链
- C.提供转录起始信号← 正确答案
- D.增强远端基因表达
答案:C。启动子是基因上游的“开工令”,RNA 聚合酶在此识别并结合,决定转录从哪里开始。编码蛋白质的是外显子,包装 DNA 的是组蛋白,增强远端表达的是增强子。
Q3. 下列哪些信息能帮助判断一个基因的表达水平?
- A.蛋白质三级结构
- B.启动子序列特征← 正确答案
- C.增强子调控信号← 正确答案
- D.转录因子结合位点← 正确答案
答案:BCD。表达水平由启动子、增强子、转录因子、表观遗传等多重因素共同决定。蛋白质三级结构是翻译后的产物,与“转录出多少 mRNA”没有直接关系,属于结果而不是预测线索。
Q4. 增强子影响远距离基因表达的主要途径是?
- A.直接结合核糖体转录
- B.直接修改蛋白质翻译效率
- C.通过染色质环化靠近启动子← 正确答案
- D.诱导基因片段缺失突变
答案:C。增强子通过染色质三维折叠与启动子空间靠近,就像专线把总部和车间接通。结合核糖体、修改翻译效率属于翻译层面的调控,缺失突变是变异后果而非增强子的正常功能。
Q5. 深度学习模型中,DNA 序列常用的编码方式是?
- A.One-hot 碱基编码← 正确答案
- B.灰度图像编码
- C.ASCII 字符编码
- D.十进制整数编码
答案:A。四类碱基 A/C/G/T 用长度为 4 的 one-hot 向量表示,如 A 对应 [1,0,0,0]。直接输入字符串会让模型把碱基当作无意义符号,灰度或十进制编码则会给碱基引入虚假的大小顺序。
Q6. 关于 eQTL 与调控变异的关系,下列说法正确的是?
- A.eQTL 位点必须位于基因编码区内
- B.调控变异可改变模型预测的表达量← 正确答案
- C.多数疾病风险变异位于非编码调控区← 正确答案
- D.所有遗传变异都会改变蛋白质序列
答案:BC。eQTL 常位于非编码区,通过改变启动子、增强子或转录因子结合来影响表达,因此 A 错误、B 正确。GWAS 研究表明大多数疾病风险位点落在非编码调控区,C 正确。绝大多数遗传变异并不改变蛋白质序列,D 错误。
Q7. 变异功能注释中,eQTL 指的是?
- A.与基因表达相关的遗传变异位点← 正确答案
- B.改变蛋白质结构的错义突变
- C.影响剪接位点的内含子突变
- D.线粒体基因组上的常见变异
答案:A。eQTL(表达数量性状位点)是基因组上与基因表达水平显著关联的变异位点,是连接基因型与表型的桥梁。错义突变影响蛋白结构,剪接突变影响 RNA 剪接,都与 eQTL 的定义不同。
Q8. 转录因子偏好的短 DNA 序列模式称为?
- A.DNA 结合基序← 正确答案
- B.遗传密码子
- C.端粒重复序列
- D.开放阅读框
答案:A。基序(motif)是转录因子识别和结合的短序列模式,相当于调度员的工牌图案。密码子是 mRNA 上编码氨基酸的三联体,端粒和开放阅读框是序列中的其他功能元件。
Q9. 深度学习模型预测基因表达时,可用的输入特征包括?
- A.启动子序列的编码← 正确答案
- B.增强子区域的序列← 正确答案
- C.表观遗传的信号← 正确答案
- D.蛋白质翻译的速率
答案:ABC。模型的输入端是序列特征和表观特征,包括启动子、增强子、开放染色质信号等。蛋白质翻译速率是输出端之后的产物信息,无法在预测转录水平时作为输入特征。
Q10. 远端增强子突变导致疾病的主要原因是?
- A.直接改变蛋白质结构
- B.调控异常改变靶基因表达← 正确答案
- C.导致染色体数目异常
- D.改变 DNA 复制起点
答案:B。增强子本身不编码蛋白,它的突变主要通过改变与转录因子的结合或染色质环化,使靶基因表达量异常,进而致病。这正解释了为何非编码区的大量“沉默变异”也能引发疾病。