utr-design — 耦合 5'UTR + CDS + 3'UTR 以最大化表达量¶
mrnavax 工具组中的第 10 个工具。将 v0.27.0 的 UTR 上下文评分器 (Kozak + 3'UTR 质量)与 v0.25.0 的多目标 CDS 优化器 (RNop 知识注入式损失模式)耦合,针对给定的蛋白质氨基酸序列 挑选最佳组合。
为何称为「耦合」?¶
v0.26.0 的 construct 工具从固定的 UTR 模板组出 5'UTR + CDS + 3'UTR + poly-A
构建——对组装有帮助,但 UTR 的选择是写死的。v0.27.0 的 UTR 上下文评分器
可按表达量影响为 UTR 排序,但无法帮忙挑选。
utr-design 就是桥梁:在 12 个候选 UTR 组合(4 个 5'UTR 变体 × 3 个 3'UTR 变体)
上进行有界网格搜索,逐一用 v0.27.0 UTR 上下文评分器评分,
CDS 用 v0.25.0 多目标优化器优化一次,再以最高联合分数
(0.4 × UTR 上下文 + 0.6 × CDS)选出组合。
快速上手¶
from mrnavax.utr_designer import UTRDesignConfig, design_utr_aware_cds
cfg = UTRDesignConfig(cds="MVSKGEELFTGV") # 12-AA eGFP 片段
result = design_utr_aware_cds(cfg)
print(f"Chosen UTR5: {result.utr5}")
print(f"Chosen UTR3: {result.utr3}")
print(f"Optimized CDS: {result.cds_dna}")
print(f"Combined score: {result.combined_score:.3f}")
CLI¶
mrnavax utr-design --protein "MVSKGEELFTGV"
mrnavax utr-design --protein my_protein.fasta --prefer-kozak 0.85
mrnavax utr-design --protein my_protein.fasta --library minimal
候选 UTR 库¶
默认 library="all" 评估 12 种组合:
| 5'UTR 变体 | 来源 | Kozak 分数 | |
|---|---|---|---|
strong_kozak |
9-nt 片段 GCCACCAAT(R=A 嘌呤) |
~0.9 | |
moderate_kozak |
9-nt 片段 GCATGG(变体) |
~0.5 | |
weak_kozak |
9-nt 片段 AAAAAA..(无 GCC) |
~0.1 | |
mrna1273_like |
mRNA-1273 已发表的 5'UTR | ~0.5 |
| 3'UTR 变体 | 来源 | ARE 负担 | |
|---|---|---|---|
short_constitutive |
32 nt GC 平衡,无 ARE | ~1.0 | |
mrna1273_like |
mRNA-1273 已发表的 3'UTR | ~0.7 | |
long_conservative |
60 nt GC 平衡 | ~1.0 |
library="minimal" 设置仅使用 strong-Kozak + short-constitutive 对(1 种组合)。
自定义阈值¶
默认情况下,设计师要求 Kozak ≥ 0.7 且 3'UTR ≥ 0.5。若没有任何组合同时 满足两个阈值,则回退选取整体排名最高的组合。
# 对 Kozak 严格、对 3'UTR 宽松
cfg = UTRDesignConfig(
cds="MVSKGEELFTGV",
prefer_kozak=0.85,
prefer_utr3=0.3,
)
选择 CDS 后端¶
默认情况下,CDS 以多目标后端(v0.25.0 RNop 知识注入式损失)进行优化。
basic 后端亦可使用:
推荐多目标后端,是因为它在单一加权损失中同时考虑 CAI + GC + CpG + 稀有连读 + 结构代理,给出比 CAI+GC 更细致的 CDS 选择。
输出¶
结果是一个 UTRDesignResult 数据类,内含组装最终构件所需的全部信息:
@dataclass
class UTRDesignResult:
utr5: str
utr3: str
cds_dna: str
protein: str
utr_context: UTRContextResult
cds_score: float
combined_score: float
candidates_evaluated: int
ranking: list[tuple[float, str, str]] # (combined_score, utr5_name, utr3_name)
使用 result.utr5 + result.cds_dna + result.utr3 作为完整 mRNA 构建中
「CDS 两侧接 UTR」的部分。
未优化的部分¶
- 5'UTR / 3'UTR 的序列内容:我们从手工策展的库(4 + 3 = 7 个变体) 中采样。若要做序列层级的 UTR 优化(这是另一个问题——在可微分 表达量模型上做梯度式设计),请使用专用工具如 UTR-Function 或 5UTR-Tailor。库方法对不确定性更诚实,也能避免过拟合。
- 跨 UTR 配对的 CDS 逐位置选择:CDS 只优化一次,之后在 12 种 UTR 配对 中重复使用。这在 CDS 与 UTR 选择相互独立的意义下是正确的,但也意味着 我们并未对 (CDS, UTR) 做联合搜索。实际上主导信号来自 CDS 本身, 所以这样做没有问题。
- Poly-A 尾长度:完整的 poly-A 组装请见
construct工具。utr-design专注于 UTR × CDS 的耦合。