mcpField
A
alterlab-glycoengineering

alterlab-glycoengineering

github.com/alterlab-ieu其他7867 次安装5 周前更新
代码仓库

关于 alterlab-glycoengineering

alterlab-glycoengineering 是关于蛋白质糖基化分析与工程设计的技能指南,面向治疗性蛋白、抗体和疫苗研究。内容包括 N-糖基化位点扫描、O-糖基化热点启发式预测,以及相关数据库和外部工具的使用。

主要功能

  1. 01扫描 N-糖基化序列基序
  2. 02启发式预测 O-糖基化热点
  3. 03介绍糖基化预测与分析工具
  4. 04说明治疗性蛋白糖工程策略
  5. 05汇总糖链命名与数据库资源

适用场景

  1. 01筛查蛋白序列中的 N-糖基化位点
  2. 02评估治疗性抗体的 Fc 糖基化
  3. 03规划疫苗抗原糖链屏蔽设计
  4. 04比较参考药与生物类似药的糖型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-glycoengineering

安装后在 Claude Code 中输入/alterlab-glycoengineering确认已加载。

附带文件evals/evals.jsonreferences/glycan_databases.md

详细介绍

糖基工程

概述

糖基化是最常见、最复杂的蛋白质翻译后修饰(PTM),影响超过 50% 的人类蛋白质。聚糖可调节蛋白质折叠、稳定性、免疫识别、受体相互作用以及治疗性蛋白的药代动力学。糖基工程是指有目的地改变糖基化模式,以提高治疗效果、稳定性或免疫逃逸能力。

两种主要的糖基化类型:

  • N-糖基化:连接到序列基序 N-X-[S/T] 中的天冬酰胺(N)上,其中 X ≠ 脯氨酸;发生于 ER/Golgi
  • O-糖基化:连接到丝氨酸(S)或苏氨酸(T)上;没有严格的共识基序;主要由 GalNAc 起始

适用场景

在以下情况下使用此技能:

  • 抗体工程:优化 Fc 糖基化,以增强 ADCC、CDC 或降低免疫原性
  • 治疗性蛋白设计:识别会影响半衰期、稳定性或免疫原性的糖基化位点
  • 疫苗抗原设计:设计聚糖屏蔽层,使免疫反应聚焦于保守表位
  • 生物类似药表征:比较参照药与生物类似药之间的聚糖模式
  • 药物靶点分析:糖基化是否会影响受体的靶点结合?
  • 蛋白质稳定性:N-聚糖通常可稳定蛋白质;识别可用于稳定性突变的位点
不适用场景
场景请改用
聚糖/碳水化合物化学信息学(结构、描述符、SMILES)alterlab-rdkit
从质谱原始数据中识别糖肽alterlab-pyopenms
预测糖蛋白本身的 3D 结构alterlab-alphafold、alterlab-boltz
对聚糖屏蔽层进行 MD 模拟(设置、力场、轨迹)alterlab-molecular-dynamics
在 UniProt 中查找蛋白质经过整理的序列特征alterlab-uniprot

N-糖基化序列基序分析

扫描 N-糖基化位点

N-糖基化发生于序列基序 N-X-[S/T],其中 X ≠ 脯氨酸。

import re
from typing import List, Tuple

def find_n_glycosylation_sequons(sequence: str) -> List[dict]:
    """
    Scan a protein sequence for canonical N-linked glycosylation sequons.
    Motif: N-X-[S/T], where X ≠ Proline.

    Args:
        sequence: Single-letter amino acid sequence

    Returns:
        List of dicts with position (1-based), motif, and context
    """
    seq = sequence.upper()
    results = []
    # Step by 1, not 3: adjacent sequons can overlap (e.g. NNST has a sequon at
    # both position 1 (N-N-S) and position 2 (N-S-T)); skipping ahead misses them.
    for i in range(len(seq) - 2):
        triplet = seq[i:i+3]
        if triplet[0] == 'N' and triplet[1] != 'P' and triplet[2] in {'S', 'T'}:
            context = seq[max(0, i-3):i+6]  # ±3 residue context
            results.append({
                'position': i + 1,   # 1-based
                'motif': triplet,
                'context': context,
                'sequon_type': 'NXS' if triplet[2] == 'S' else 'NXT'
            })
    return results

def summarize_glycosylation_sites(sequence: str, protein_name: str = "") -> str:
    """Generate a research log summary of N-glycosylation sites."""
    sequons = find_n_glycosylation_sequons(sequence)

    lines = [f"# N-Glycosylation Sequon Analysis: {protein_name or 'Protein'}"]
    lines.append(f"Sequence length: {len(sequence)}")
    lines.append(f"Total N-glycosylation sequons: {len(sequons)}")

    if sequons:
        lines.append(f"\nN-X-S sites: {sum(1 for s in sequons if s['sequon_type'] == 'NXS')}")
        lines.append(f"N-X-T sites: {sum(1 for s in sequons if s['sequon_type'] == 'NXT')}")
        lines.append(f"\nSite details:")
        for s in sequons:
            lines.append(f"  Position {s['position']}: {s['motif']} (context: ...{s['context']}...)")
    else:
        lines.append("No canonical N-glycosylation sequons detected.")

    return "\n".join(lines)

# Example: IgG1 Fc region
fc_sequence = "APELLGGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVKFNWYVDGVEVHNAKTKPREEQYNSTYRVVSVLTVLHQDWLNGKEYKCKVSNKALPAPIEKTISKAKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPVLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK"
print(summarize_glycosylation_sites(fc_sequence, "IgG1 Fc"))
突变 N-糖基化位点
def eliminate_glycosite(sequence: str, position: int, replacement: str = "Q") -> str:
    """
    Eliminate an N-glycosylation site by substituting Asn → Gln (conservative).

    Args:
        sequence: Protein sequence
        position: 1-based position of the Asn to mutate
        replacement: Amino acid to substitute (default Q = Gln; similar size, not glycosylated)

    Returns:
        Mutated sequence
    """
    seq = list(sequence.upper())
    idx = position - 1
    assert seq[idx] == 'N', f"Position {position} is '{seq[idx]}', not 'N'"
    seq[idx] = replacement.upper()
    return ''.join(seq)

def add_glycosite(sequence: str, position: int, flanking_context: str = "S") -> str:
    """
    Introduce an N-glycosylation site by mutating a residue to Asn,
    and ensuring X ≠ Pro and +2 = S/T.

    Args:
        position: 1-based position to introduce Asn
        flanking_context: 'S' or 'T' at position+2 (if modification needed)
    """
    seq = list(sequence.upper())
    idx = position - 1

    # Mutate to Asn
    seq[idx] = 'N'

    # Ensure X+1 != Pro (mutate to Ala if needed)
    if idx + 1 < len(seq) and seq[idx + 1] == 'P':
        seq[idx + 1] = 'A'

    # Ensure X+2 = S or T
    if idx + 2 < len(seq) and seq[idx + 2] not in ('S', 'T'):
        seq[idx + 2] = flanking_context

    return ''.join(seq)

O-糖基化分析

基于经验法则预测 O-糖基化热点
def predict_o_glycosylation_hotspots(
    sequence: str,
    window: int = 7,
    min_st_fraction: float = 0.4,
    disallow_proline_next: bool = True
) -> List[dict]:
    """
    Heuristic O-glycosylation hotspot scoring based on local S/T density.
    Not a substitute for NetOGlyc; use as fast baseline.

    Rules:
    - O-GalNAc glycosylation clusters on Ser/Thr-rich segments
    - Flag Ser/Thr residues in windows enriched for S/T
    - Avoid S/T immediately followed by Pro (TP/SP motifs inhibit GalNAc-T)

    Args:
        window: Odd window size for local S/T density
        min_st_fraction: Minimum fraction of S/T in window to flag site
    """
    if window % 2 == 0:
        window = 7
    seq = sequence.upper()
    half = window // 2
    candidates = []

    for i, aa in enumerate(seq):
        if aa not in ('S', 'T'):
            continue
        if disallow_proline_next and i + 1 < len(seq) and seq[i+1] == 'P':
            continue

        start = max(0, i - half)
        end = min(len(seq), i + half + 1)
        segment = seq[start:end]
        st_count = sum(1 for c in segment if c in ('S', 'T'))
        frac = st_count / len(segment)

        if frac >= min_st_fraction:
            candidates.append({
                'position': i + 1,
                'residue': aa,
                'st_fraction': round(frac, 3),
                'window': f"{start+1}-{end}",
                'segment': segment
            })

    return candidates

外部糖基工程工具

1. NetOGlyc 4.0(O-糖基化预测)

用于高精度预测 O-GalNAc 位点的 Web 服务:

NetOGlyc 4.0 没有稳定的公共 REST API——CGI 提交端点及其表单参数会随 Web 服务版本更新而变化。要获得可靠结果,请在 Web 界面提交 FASTA 并下载结果表:

也可从这些页面下载独立软件包,以便离线/批量运行。可将上文内联的 find_n_glycosylation_sequons 用作快速预筛选。

2. GlycoShield-MD(聚糖屏蔽分析)

GlycoShield-MD 分析聚糖在 MD 模拟过程中如何屏蔽蛋白质表面:

GlycoSHIELD 未发布到 PyPI(已于 2026-09 验证——pip install glycoshield 会返回 404)。请按照项目自身的 README,从项目的 GitLab 仓库安装;README 还说明了所需输入:糖蛋白拓扑结构(PDB)、轨迹,以及要视为屏蔽层的聚糖残基名称。输出为各残基的屏蔽比例,可映射到蛋白质表面上——这个数值能告诉你聚糖实际遮挡了哪些表位。

3. GlycoWorkbench(聚糖结构绘制/分析)
4. 实验验证的糖基化:GlyGen(及 GlyConnect)

GlyGen(api.glygen.org)是目前可通过程序使用的途径—— 已于 2026-09 验证,普通 GET 请求可返回 JSON:

import requests

def glygen_protein(uniprot_canonical_ac: str) -> dict:
    """Protein record incl. reported glycosylation sites. Accession is canonical, e.g. 'P00533-1'."""
    r = requests.get(f"https://api.glygen.org/protein/detail/{uniprot_canonical_ac}/", timeout=30)
    return r.json() if r.ok else {}

def glygen_glycan(glytoucan_ac: str) -> dict:
    """Glycan record: mass, monosaccharide count, IUPAC/WURCS, cross-references."""
    r = requests.get(f"https://api.glygen.org/glycan/detail/{glytoucan_ac}/", timeout=30)
    return r.json() if r.ok else {}

egfr = glygen_protein("P00533-1")

GlyConnect(https://glyconnect.expasy.org/)仍然是一个非常出色的精选资源,适合浏览,但其公开 REST 路由不稳定:截至 2026-09,/api/proteins/uniprot/{acc} 返回 HTTP 500,Swagger 规范则返回 404。请使用 GlyConnect 网页界面,并通过 GlyGen 进行脚本化访问。

5. UniCarbKB(聚糖结构数据库)

糖工程关键策略

针对治疗性抗体
目标策略备注
增强 ADCC去除 Fc Asn297 位点的岩藻糖去岩藻糖基 IgG1 的 FcγRIIIa 结合能力约高 50×
降低免疫原性去除非人源聚糖消除 α-Gal、NGNA 表位
延长 PK 半衰期唾液酸化唾液酸化聚糖可延长半衰期
降低炎症超唾液酸化IVIG 的抗炎机制
创建聚糖屏蔽在表面添加 N-糖基化位点遮蔽易受攻击的表位(疫苗设计)
常见突变
突变效果
N297A/Q(IgG1)去除 Fc 糖基化(无糖基化)
N297D(IgG1)去除 Fc 糖基化
S298A/E333A/K334A增强 FcγRIIIa 结合
F243L(IgG1)增强去岩藻糖基化
T299A去除 Fc 糖基化

聚糖表示法

IUPAC 缩写表示法(单糖缩写)
符号全名类型
Glc葡萄糖己糖
GlcNAcN-乙酰氨基葡萄糖HexNAc
Man甘露糖己糖
Gal半乳糖己糖
Fuc岩藻糖脱氧己糖
Neu5AcN-乙酰神经氨酸(唾液酸)唾液酸
GalNAcN-乙酰半乳糖胺HexNAc
复杂型 N-聚糖结构
Typical complex biantennary N-glycan:
Neu5Ac-Gal-GlcNAc-Man\
                       Man-GlcNAc-GlcNAc-[Asn]
Neu5Ac-Gal-GlcNAc-Man/
(±Core Fuc at innermost GlcNAc)

最佳实践

  • 从 NetNGlyc/NetOGlyc 开始,先进行计算预测,再做实验验证
  • 通过质谱验证:使用糖蛋白质组学(Byonic、Mascot)进行位点特异性聚糖分析
  • 考虑位点背景:并非所有预测的序列子都实际发生糖基化(这取决于可及性、细胞类型和蛋白质构象)
  • 针对抗体:Fc N297 聚糖至关重要——始终先表征此位点
  • 使用 GlyConnect 检查目标蛋白是否有经过实验验证的糖基化数据

其他资源

属于 AlterLab Academic Skills 套件。

评论

支持 Markdown