375

反义寡核苷酸 ASO:序列设计与化学修饰

反义寡核苷酸通过碱基配对靶向 RNA。这篇讲清作用机制、化学修饰的作用、序列设计要点与脱靶控制。

反义寡核苷酸(ASO)是长度约 15~25 个核苷酸的单链核酸,通过碱基互补配对结合目标 mRNA。它的设计逻辑与小分子完全不同:特异性来自序列匹配,而非三维形状互补

三种作用机制

机制 原理 设计要求
RNase H 降解 DNA/RNA 杂合双链招募 RNase H1 切割 mRNA 需要 DNA 「gap」区(gapmer 设计)
剪接调控 结合前体 mRNA 的剪接位点,改变剪接方式 全修饰(不招募 RNase H)
翻译阻断 空间位阻阻止核糖体 全修饰

Gapmer 设计是 RNase H 机制的标准结构:[修饰核苷酸]₅ - [DNA]₁₀ - [修饰核苷酸]₅。两翼修饰提高结合亲和力与稳定性,中间的 DNA gap 是 RNase H 识别所必需的。

化学修饰

修饰 位置 作用
硫代磷酸(PS) 骨架 抗核酸酶、促进蛋白结合与摄取;几乎所有 ASO 必用
2′-O-甲基(2′-OMe) 核糖 2′ 提高亲和力与稳定性
2′-O-甲氧乙基(2′-MOE) 核糖 2′ 更高亲和力,降低毒性
锁核酸(LNA) 核糖桥连 亲和力大幅提升,但肝毒性风险需注意
约束乙基(cEt) 核糖桥连 类似 LNA,安全性改善
吗啉代(PMO) 整个骨架 中性电荷,主要用于剪接调控
GalNAc 偶联 末端 肝细胞靶向递送,效力提升数十倍

GalNAc 偶联是核酸药物领域最重要的递送突破之一:三价 GalNAc 与肝细胞表面的去唾液酸糖蛋白受体(ASGPR)高亲和结合,实现高效肝靶向。这让肝脏靶点的核酸药物变得非常可行——也解释了为什么已上市的核酸药物大量集中在肝脏适应症。

序列设计流程

# 1) 获取目标转录本序列(注意所有剪接变体)
from Bio import Entrez, SeqIO
Entrez.email = "you@example.com"

handle = Entrez.efetch(db="nucleotide", id="NM_000546",
                       rettype="fasta", retmode="text")
transcript = SeqIO.read(handle, "fasta")

# 2) 滑窗生成候选 ASO
def generate_aso_candidates(sequence, length=20, step=1):
    candidates = []
    seq = str(sequence).upper().replace("U", "T")
    for i in range(0, len(seq) - length + 1, step):
        target = seq[i:i+length]
        # ASO 是目标序列的反向互补
        aso = str(Seq(target).reverse_complement())
        candidates.append({"position": i, "target": target, "aso": aso})
    return candidates

# 3) 基本性质过滤
def filter_aso(aso):
    gc = (aso.count("G") + aso.count("C")) / len(aso)
    checks = {
        "gc_ok": 0.40 <= gc <= 0.60,
        "no_g_quadruplex": "GGGG" not in aso,     # G 四链体影响活性
        "no_long_repeat": not any(b*4 in aso for b in "ACGT"),
        "no_cpg": aso.count("CG") <= 1,           # CpG 基序有免疫刺激风险
    }
    return all(checks.values()), checks

脱靶控制:核酸药物的核心问题

# 脱靶来源一:序列相似性导致的杂交
# 用 BLAST 检查全转录组

# blastn -query aso_candidates.fasta \
#        -db human_transcriptome \
#        -task blastn-short \
#        -word_size 7 -evalue 1000 \
#        -outfmt 6 -out offtarget.txt

def assess_offtarget_risk(blast_results, aso_length=20):
    """评估脱靶风险"""
    risks = []
    for hit in blast_results:
        n_mismatch = aso_length - hit["identities"]
        # 经验规则:
        #   完全匹配(0 错配)→ 高风险
        #   1~2 个错配 → 中风险(尤其错配在两翼而非 gap 区)
        #   ≥3 个错配 → 风险较低
        if n_mismatch == 0:
            risks.append({"gene": hit["gene"], "level": "high"})
        elif n_mismatch <= 2:
            risks.append({"gene": hit["gene"], "level": "medium"})
    return risks

# 脱靶来源二:非杂交依赖的毒性
#   - PS 骨架的蛋白结合 → 肝毒性、血小板减少、补体激活
#   - LNA 等高亲和力修饰与肝毒性相关
#   - CpG 基序 → 先天免疫激活
#   这类毒性不能靠序列比对预测,需实验评估

RNA 二级结构的影响

# 目标 mRNA 的二级结构会遮蔽结合位点
import RNA         # ViennaRNA

def target_accessibility(mrna_seq, start, length):
    """评估目标位点的可及性"""
    fc = RNA.fold_compound(mrna_seq)
    structure, mfe = fc.mfe()
    fc.exp_params_rescale(mfe)
    fc.pf()

    # 计算该区域保持单链(未配对)的概率
    bpp = fc.bpp()
    unpaired_prob = []
    for i in range(start, start + length):
        paired = sum(bpp[i+1][j] for j in range(1, len(mrna_seq)+1)
                     if j != i+1)
        unpaired_prob.append(1.0 - min(paired, 1.0))
    return float(np.mean(unpaired_prob))

# 可及性高的位点更可能有效
# 但注意:细胞内 mRNA 结合了大量蛋白,
#        体外预测的二级结构与体内实际情况有差距

现实:筛选仍是主要手段

计算只能缩小范围,最终必须靠实验筛选。典型流程:

  • 计算生成并过滤出 50~200 个候选(覆盖转录本不同区域);
  • 细胞实验测敲低效率(qPCR / Western);
  • 命中率通常在 10%~30%——即使经过精心的计算筛选;
  • 对命中的序列做剂量-响应、脱靶评估、毒性评估;
  • 优化化学修饰模式。

为什么活性难以预测:细胞内 mRNA 的实际结构与蛋白结合状态、ASO 的细胞摄取与亚细胞定位、RNase H 的可及性——这些因素目前都无法可靠建模。

关键要点

  • Gapmer(两翼修饰 + 中间 DNA gap)是 RNase H 机制的标准设计;
  • GalNAc 偶联实现高效肝靶向,是核酸药物递送的关键突破;
  • 脱靶有两类:序列相似性杂交(可用 BLAST 筛)与化学修饰本身的毒性(需实验);
  • 计算只能缩小范围,实验筛选命中率通常 10%~30%

延伸资源