4. 调控元件的计算表示与特征工程

要让模型“读懂”启动子与调控元件,第一步不是选网络结构,而是把DNA序列变成数值张量。同一段序列,用不同编码方式送入模型,可学习到的模式、所需数据量和可解释性差别很大。本节围绕四种主流表示——独热编码、位置权重矩阵(PWM)、k-mer计数/向量、深度学习嵌入——讲清它们的构造方式、适用场景与工程取舍。

一、独热编码:最基础也最常用的序列张量

独热编码把长度为L的序列映射为4×L的矩阵,A、C、G、T各占一行,某一位碱基对应行置1,其余为0。若遇到N(未知碱基),通常置为0.25的均匀分布,避免引入虚假偏好。工程实现上,先建立字符到索引的映射,再一次性构造数组:

import numpy as np
BASE = {'A':0,'C':1,'G':2,'T':3}
def one_hot(seq):
    L = len(seq)
    X = np.zeros((4, L), dtype=np.float32)
    for i, b in enumerate(seq.upper()):
        if b in BASE:
            X[BASE[b], i] = 1.0
        else:
            X[:, i] = 0.25   # N 或非法字符
    return X
# 示例:TATA框核心片段
print(one_hot("TATAAA").shape)   # (4, 6)

独热编码保留了每个位置的碱基身份,适合CNN按位置扫描motif,也便于后续做卷积核可视化。缺点是维度随序列线性增长,且无法直接表达“某位置偏好嘌呤”这类模糊模式。当序列长度超过几千bp时,通常需要截断到启动子核心区(如TSS上游-2000至+500)或先做降采样。

二、位置权重矩阵:把motif变成可打分的概率模型

PWM从一组已知结合位点出发,统计每个位置各碱基的出现频率,加伪计数后转成对数几率(log-odds)矩阵。给定新序列,逐位相加得分,高于阈值即判为潜在结合位点。构造时需注意背景碱基频率(通常取基因组GC含量)和伪计数α(常用0.5~1.0),否则零频率会导致对数发散。

# 假设已有比对好的motif矩阵 counts (4 x W)
pwm = np.log2((counts + 0.5) / (counts.sum(0) + 2.0) / bg[:, None])
# 扫描序列:对每个窗口求得分
scores = [ (pwm * one_hot(seq[i:i+W])).sum() for i in range(len(seq)-W+1) ]

PWM的优势是可解释、可跨样本复用,JASPAR、HOCOMOCO等数据库直接提供矩阵文件。它适合做特征工程中的“先验注入”:把PWM得分作为额外通道拼接到独热张量上,让模型同时看到原始序列和已知motif响应。局限在于它假设各位置独立,无法刻画位置间协同,对长距离调控元件表达力不足。

三、k-mer表示:把局部组合变成可统计的特征

k-mer把序列切成所有长度为k的子串,统计频次或存在性。k=4时共256维,k=6时4096维。常用做法是“计数+TF-IDF+截断”,或直接做二进制存在向量。k-mer能捕捉PWM忽略的碱基组合,但维度随k指数增长,且丢失位置信息。实践中常与位置信息结合,例如按启动子分区(-500~-1、+1~+200)分别统计k-mer,形成分区特征向量。

选择k值时,k=4~6适合捕捉TF结合核心;k=7以上维度爆炸,需配合特征选择或哈希降维。若样本量小于几千,优先用k=4并做L2归一化。

四、深度学习嵌入:让模型自己学表示

嵌入表示不依赖人工定义,而是通过卷积、池化或Transformer从独热序列中学习连续向量。典型做法是:先用一维卷积在独热张量上滑动,每个卷积核相当于一个可学习的PWM;再经全局池化得到固定长度嵌入,送入全连接层做预测。Transformer则用自注意力捕捉远距离依赖,适合增强子-启动子交互建模。

嵌入的工程要点包括:卷积核宽度对应motif长度(常用8~16),通道数64~256;池化方式可选最大池化(保留最强motif信号)或平均池化(保留整体密度);若数据量小,可先用预训练DNA语言模型(如DNABERT)提取嵌入,再微调下游任务。嵌入的代价是可解释性下降,但可通过注意力权重或卷积核可视化反推重要motif。

调控元件序列表示与特征工程路径 原始DNA序列 TATAAAAGCT… 独热编码 4×L 矩阵 A/C/G/T 各占一行 保留位置身份 位置权重矩阵 log-odds 打分 可解释、可复用 假设位置独立 k-mer 特征 4^k 维计数向量 捕捉碱基组合 丢失位置信息 深度学习嵌入 卷积/注意力学习 连续向量、端到端 模型输入 特征拼接 或单路选择 独热 + PWM 通道 k-mer 统计特征 预训练嵌入向量 → 下游预测任务 预测输出 启动子活性 组织特异性 强度回归值 选择依据:数据量、可解释性需求、序列长度、是否需跨样本复用

五、如何选择与组合

四种表示并非互斥。实际项目中常见的组合策略是:以独热编码为主输入,拼接PWM扫描得分作为先验通道,再在模型末端接入k-mer统计特征或预训练嵌入。若样本量少(<1000),优先用PWM+k-mer这类低参数特征,配合线性模型或浅层网络;若样本量充足(>10万),端到端卷积或Transformer嵌入通常表现更好。

表示方式维度位置信息可解释性适用场景
独热编码4×L完整保留高CNN/Transformer输入
PWMmotif数×窗口窗口内保留很高先验注入、快速扫描
k-mer4^k丢失中小样本、分区统计
深度学习嵌入64~1024隐式学习低~中大数据端到端建模
注意:PWM扫描时若背景频率与训练集不匹配,得分阈值会偏移;k-mer计数需做长度归一化,否则长序列天然占优;嵌入表示在跨物种迁移时需重新评估,因为motif语法可能不同。

特征工程的核心不是追求最复杂的表示,而是让输入张量中的每一个维度都能对应到可解释的生物学信号。建议在项目初期同时构造独热、PWM和k-mer三套特征,用交叉验证比较单路与拼接效果,再决定是否引入嵌入。这样既能保证基线可解释,也为后续深度模型留出提升空间。