Claude Skill

alterlab-glycoengineering

Analyze and engineer protein glycosylation — scan sequences for N-glycosylation sequons (N-X-S/T), predict O-glycosylation hotspots, and reach curated glycoengineering tools (NetOGlyc, GlycoShield, GlycoWorkbench). Use when identifying or designing glycosylation sites, optimizing

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download alterlab-ieu-alterlab-academic-skills-skills_bioinformatics_alterlab-glycoengineering-e4836c0.zip · 10 KB
Part of alterlab-ieu/alterlab-academic-skills — 94 skills

Install

skills CLI npx skills add https://github.com/AlterLab-IEU/AlterLab-Academic-Skills/tree/main/skills/bioinformatics/alterlab-glycoengineering
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install alterlab-ieu-alterlab-academic-skills@llmmart
Git git clone https://github.com/AlterLab-IEU/AlterLab-Academic-Skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole alterlab-ieu/alterlab-academic-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Glycoengineering

Overview

Glycosylation is the most common and complex post-translational modification (PTM) of proteins, affecting over 50% of all human proteins. Glycans regulate protein folding, stability, immune recognition, receptor interactions, and pharmacokinetics of therapeutic proteins. Glycoengineering involves rational modification of glycosylation patterns for improved therapeutic efficacy, stability, or immune evasion.

Two major glycosylation types:

  • N-glycosylation: Attached to asparagine (N) in the sequon N-X-[S/T] where X ≠ Proline; occurs in the ER/Golgi
  • O-glycosylation: Attached to serine (S) or threonine (T); no strict consensus motif; primarily GalNAc initiation

When to Use This Skill

Use this skill when:

  • Antibody engineering: Optimize Fc glycosylation for enhanced ADCC, CDC, or reduced immunogenicity
  • Therapeutic protein design: Identify glycosylation sites that affect half-life, stability, or immunogenicity
  • Vaccine antigen design: Engineer glycan shields to focus immune responses on conserved epitopes
  • Biosimilar characterization: Compare glycan patterns between reference and biosimilar
  • Drug target analysis: Does glycosylation affect target engagement for a receptor?
  • Protein stability: N-glycans often stabilize proteins; identify sites for stabilizing mutations

Does NOT Trigger

Scenario Use Instead
Glycan/carbohydrate cheminformatics (structures, descriptors, SMILES) alterlab-rdkit
Identifying glycopeptides from mass-spectrometry raw data alterlab-pyopenms
Predicting the 3D structure of the glycoprotein itself alterlab-alphafold, alterlab-boltz
MD simulation of a glycan shield (setup, force fields, trajectories) alterlab-molecular-dynamics
Looking up a protein's curated sequence features in UniProt alterlab-uniprot

N-Glycosylation Sequon Analysis

Scanning for N-Glycosylation Sites

N-glycosylation occurs at the sequon N-X-[S/T] where X ≠ Proline.

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"))

Mutating N-Glycosylation Sites

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-Glycosylation Analysis

Heuristic O-Glycosylation Hotspot Prediction

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

External Glycoengineering Tools

1. NetOGlyc 4.0 (O-glycosylation prediction)

Web service for high-accuracy O-GalNAc site prediction:

NetOGlyc 4.0 has no stable public REST API — the CGI submission endpoint and its form parameters change between web-service revisions. For reliable results, submit FASTA at the web interface and download the result table:

The standalone packages are also downloadable from those pages for offline/batch runs. Use the inline find_n_glycosylation_sequons above as a fast pre-screen.

2. GlycoShield-MD (Glycan Shielding Analysis)

GlycoShield-MD analyzes how glycans shield protein surfaces during MD simulations:

GlycoSHIELD is not on PyPI (verified 2026-09 — pip install glycoshield fails with 404). Install it from the project's GitLab repository following its own README, which also documents the expected inputs: a glycoprotein topology (PDB), a trajectory, and the glycan residue names to treat as the shield. Output is a per-residue shielding fraction you can map onto the surface — the number that tells you which epitopes a glycan actually occludes.

3. GlycoWorkbench (Glycan Structure Drawing/Analysis)

4. Experimentally verified glycosylation: GlyGen (and GlyConnect)

GlyGen (api.glygen.org) is the route that currently works programmatically — verified 2026-09 with plain GET requests returning 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/) remains an excellent curated resource to browse, but its public REST routes are unreliable: as of 2026-09 /api/proteins/uniprot/{acc} returns HTTP 500 and the Swagger spec 404s. Use the web interface for GlyConnect, and GlyGen for scripted access.

5. UniCarbKB (Glycan Structure Database)

  • URL: https://www.unicarbkb.org/ (the bare unicarbkb.org redirects here)
  • Use: Browse glycan structures, search by mass or composition
  • Format: GlycoCT or IUPAC notation

Key Glycoengineering Strategies

For Therapeutic Antibodies

Goal Strategy Notes
Enhance ADCC Defucosylation at Fc Asn297 Afucosylated IgG1 has ~50× better FcγRIIIa binding
Reduce immunogenicity Remove non-human glycans Eliminate α-Gal, NGNA epitopes
Improve PK half-life Sialylation Sialylated glycans extend half-life
Reduce inflammation Hypersialylation IVIG anti-inflammatory mechanism
Create glycan shield Add N-glycosites to surface Masks vulnerable epitopes (vaccine design)

Common Mutations Used

Mutation Effect
N297A/Q (IgG1) Removes Fc glycosylation (aglycosyl)
N297D (IgG1) Removes Fc glycosylation
S298A/E333A/K334A Increases FcγRIIIa binding
F243L (IgG1) Increases defucosylation
T299A Removes Fc glycosylation

Glycan Notation

IUPAC Condensed Notation (Monosaccharide abbreviations)

Symbol Full Name Type
Glc Glucose Hexose
GlcNAc N-Acetylglucosamine HexNAc
Man Mannose Hexose
Gal Galactose Hexose
Fuc Fucose Deoxyhexose
Neu5Ac N-Acetylneuraminic acid (Sialic acid) Sialic acid
GalNAc N-Acetylgalactosamine HexNAc

Complex N-Glycan Structure

Typical complex biantennary N-glycan:
Neu5Ac-Gal-GlcNAc-Man\
                       Man-GlcNAc-GlcNAc-[Asn]
Neu5Ac-Gal-GlcNAc-Man/
(±Core Fuc at innermost GlcNAc)

Best Practices

  • Start with NetNGlyc/NetOGlyc for computational prediction before experimental validation
  • Verify with mass spectrometry: Glycoproteomics (Byonic, Mascot) for site-specific glycan profiling
  • Consider site context: Not all predicted sequons are actually glycosylated (accessibility, cell type, protein conformation)
  • For antibodies: Fc N297 glycan is critical — always characterize this site first
  • Use GlyConnect to check if your protein of interest has experimentally verified glycosylation data

Additional Resources

Part of the AlterLab Academic Skills suite.

Files (alterlab-academic-skills)
  • evals
    • evals.json 4.9 KB
      {
        "skill": "alterlab-glycoengineering",
        "evals": [
          {
            "id": "scan-n-glyc-sequons",
            "prompt": "Here is the IgG1 Fc sequence. Scan it for all canonical N-glycosylation sequons and tell me their positions and whether each is an N-X-S or N-X-T site.",
            "expected_output": "Invokes alterlab-glycoengineering. Scans for the N-X-[S/T] sequon where X != Proline (e.g. find_n_glycosylation_sequons), reports 1-based positions, the motif triplet, surrounding context, and classifies each as NXS vs NXT. Identifying the canonical N297 sequon in the Fc is expected.",
            "assertions": [
              { "type": "should_trigger", "value": true },
              { "type": "output_contains", "value": "N-X-" }
            ]
          },
          {
            "id": "knock-out-fc-glycosite",
            "prompt": "I want to remove the Fc N-glycosylation on my IgG1 by mutating the Asn at position 297 to a conservative non-glycosylated residue. What's the standard mutation and how do I apply it to the sequence?",
            "expected_output": "Invokes alterlab-glycoengineering. Recommends the standard aglycosyl mutations (N297A/N297Q/N297D, or T299A to break the sequon) and applies an Asn -> Gln/Ala substitution (e.g. eliminate_glycosite) at the 1-based position, citing the antibody-engineering rationale (removing Fc glycosylation). Knocking out a glycosite is an in-scope strategy.",
            "assertions": [
              { "type": "should_trigger", "value": true },
              { "type": "output_contains", "value": "N297" }
            ]
          },
          {
            "id": "o-glyc-hotspots",
            "prompt": "I have a serine/threonine-rich mucin-like region and I want to predict likely O-glycosylation hotspots before sending it for NetOGlyc analysis. Can you give me a fast heuristic and point me at the proper tool?",
            "expected_output": "Invokes alterlab-glycoengineering. Runs a heuristic O-GalNAc hotspot scorer based on local S/T density in a sliding window (avoiding S/T immediately followed by Pro), then points to NetOGlyc 4.0 at the DTU Health Tech server for high-accuracy prediction. O-glycosylation hotspot prediction and external tool routing are in scope.",
            "assertions": [
              { "type": "should_trigger", "value": true },
              { "type": "output_contains", "value": "NetOGlyc" }
            ]
          },
          {
            "id": "adcc-defucosylation-strategy",
            "prompt": "We want to boost the ADCC of our therapeutic antibody. What glycoengineering strategy should we use at the Fc, and what's the expected effect on FcgammaRIIIa binding?",
            "expected_output": "Invokes alterlab-glycoengineering. Recommends defucosylation (afucosylation) of the Asn297 N-glycan to enhance ADCC, noting afucosylated IgG1 has roughly 50x better FcgammaRIIIa binding, and may mention enabling mutations (e.g. F243L) and sialylation/half-life trade-offs. Therapeutic-antibody glyco-optimization is a primary use case.",
            "assertions": [
              { "type": "should_trigger", "value": true },
              { "type": "output_contains", "value": "ADCC" }
            ]
          },
          {
            "id": "near-miss-esm",
            "prompt": "Design a completely novel 180-residue protein scaffold from scratch with ESM3 that folds into a stable alpha/beta topology.",
            "expected_output": "Does NOT invoke this skill; defers to alterlab-esm. The ask is de novo generative protein design over sequence/structure, not glycosylation-site analysis or glycoform engineering. Glycoengineering edits glycan attachment sites on an existing protein; it does not design backbones from scratch.",
            "assertions": [
              { "type": "should_not_trigger", "value": true },
              { "type": "output_contains", "value": "alterlab-esm" }
            ]
          },
          {
            "id": "near-miss-bioservices",
            "prompt": "Map UniProt P00533 to its KEGG and Reactome pathway entries and pull the cross-referenced database IDs.",
            "expected_output": "Does NOT invoke this skill; defers to alterlab-bioservices. The ask is multi-database identifier mapping and pathway cross-referencing, not glycosylation analysis. Although glycoengineering can query GlyGen for a protein's glycosylation, generic cross-database ID mapping across KEGG/Reactome belongs to bioservices.",
            "assertions": [
              { "type": "should_not_trigger", "value": true },
              { "type": "output_contains", "value": "alterlab-bioservices" }
            ]
          },
          {
            "id": "near-miss-pyopenms",
            "prompt": "I have LC-MS/MS raw files from a glycoproteomics run. Identify the glycopeptides and quantify them across my samples.",
            "expected_output": "Does NOT invoke this skill; defers to alterlab-pyopenms. Processing mass-spectrometry raw data (feature detection, peptide/glycopeptide identification, quantification) is an MS-data-processing task; this skill scans sequences for glycosylation sites and plans glycoengineering, it does not process spectra.",
            "assertions": [
              { "type": "should_not_trigger", "value": true },
              { "type": "output_contains", "value": "alterlab-pyopenms" }
            ]
          }
        ]
      }
      
  • references
    • glycan_databases.md 6.3 KB
      # Glycan Databases and Resources Reference
      
      ## Primary Databases
      
      ### GlyTouCan
      - **URL**: https://glytoucan.org/ — a structure page is
        `https://glytoucan.org/Structures/Glycans/<GTC_ID>`
      - **Content**: Unique accession numbers (GTC IDs) for glycan structures
      - **Use**: Standardized glycan identification across databases
      - **Format**: GlycoCT, WURCS, IUPAC
      
      `api.glytoucan.org/glycan/<id>` is **not** a lookup route (verified 2026-09: it 301s to a
      registration endpoint). For scripted access to a GlyTouCan accession, go through GlyGen,
      which returns the structure plus cross-references as plain JSON:
      
      ```python
      import requests
      
      def lookup_glycan(glytoucan_id: str) -> dict:
          """Fetch glycan details (mass, IUPAC/WURCS, xrefs) by GlyTouCan accession."""
          r = requests.get(f"https://api.glygen.org/glycan/detail/{glytoucan_id}/", timeout=30)
          return r.json() if r.ok else {}
      
      # lookup_glycan("G17689DH") -> {'glytoucan': {...}, 'mass': 2368.84, 'iupac': '...', ...}
      ```
      
      The GlycoSMOS format converter (`api.glycosmos.org/glycanformatconverter/...`) is a working
      option for WURCS ↔ IUPAC conversion.
      
      ### GlyConnect / GlyGen
      - **GlyConnect URL**: https://glyconnect.expasy.org/ — curated protein glycosylation with
        site-specific glycan profiles, linked to UniProt. Excellent to browse, but its public REST
        routes are unreliable: verified 2026-09, `/api/proteins/uniprot/{acc}` returns HTTP 500 and
        the Swagger spec 404s. Treat GlyConnect as a **web resource**, not an API.
      - **GlyGen URL**: https://www.glygen.org/ with a working REST API at `api.glygen.org`.
      
      ```python
      import requests
      
      def get_glycoprotein_info(uniprot_canonical_ac: str) -> dict:
          """Glycosylation and annotation for a protein (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 get_glycan_detail(glytoucan_ac: str) -> dict:
          """Glycan record by GlyTouCan accession (mass, composition, IUPAC/WURCS, xrefs)."""
          r = requests.get(f"https://api.glygen.org/glycan/detail/{glytoucan_ac}/", timeout=30)
          return r.json() if r.ok else {}
      ```
      
      ### UniCarbKB
      - **URL**: https://unicarbkb.org/
      - **Content**: Curated glycan structures with biological context
      - **Features**: Tissue/cell-type specific glycan data, mass spectrometry data
      
      ### KEGG Glycan
      - **URL**: https://www.genome.jp/kegg/glycan/
      - **Content**: Glycan structures in KEGG format, biosynthesis pathways
      - **Integration**: Links to KEGG PATHWAY maps for glycan biosynthesis
      
      ### CAZy (Carbohydrate-Active Enzymes)
      - **URL**: http://www.cazy.org/
      - **Content**: Enzymes that build, break, and modify glycans
      - **Use**: Identify enzymes for glycoengineering applications
      
      ## Prediction Servers
      
      ### NetNGlyc 1.0
      - **URL**: https://services.healthtech.dtu.dk/services/NetNGlyc-1.0/
      - **Method**: Neural network for N-glycosylation site prediction
      - **Input**: Protein FASTA sequence
      - **Output**: Per-asparagine probability score; threshold ~0.5
      
      ### NetOGlyc 4.0
      - **URL**: https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/
      - **Method**: Neural network for O-GalNAc glycosylation prediction
      - **Input**: Protein FASTA sequence
      - **Output**: Per-serine/threonine probability; threshold ~0.5
      
      ### GlycoMine (Machine Learning)
      - Machine learning predictor for N-, O- and C-glycosylation
      - Multiple glycan types: N-GlcNAc, O-GalNAc, O-GlcNAc, O-Man, O-Fuc, O-Glc, C-Man
      
      ### SymLink (Glycosylation site & sequon predictor)
      - Species-specific N-glycosylation prediction
      - More specific than simple sequon scanning
      
      ## Mass Spectrometry Glycoproteomics Tools
      
      ### Byonic (Protein Metrics)
      - De novo glycopeptide identification from MS2 spectra
      - Comprehensive glycan database
      - Site-specific glycoform assignment
      
      ### Mascot Glycan Analysis
      - Glycan-specific search parameters
      - Common for bottom-up glycoproteomics
      
      ### GlycoWorkbench
      - **URL**: https://github.com/glycoinfo/eurocarbdb
      - Glycan structure drawing and mass calculation
      - Annotation of MS/MS spectra with glycan fragment ions
      
      ### Skyline
      - Targeted quantification of glycopeptides
      - Integrates with glycan database
      
      ## Glycan Nomenclature Systems
      
      ### Oxford Notation (For N-glycans)
      Codes complex N-glycans as text strings:
      ```
      G0F   = Core-fucosylated, biantennary, no galactose
      G1F   = Core-fucosylated, one galactose
      G2F   = Core-fucosylated, two galactoses
      G2FS1 = Core-fucosylated, two galactoses, one sialic acid
      G2FS2 = Core-fucosylated, two galactoses, two sialic acids
      M5    = High mannose 5 (Man5GlcNAc2)
      M9    = High mannose 9 (Man9GlcNAc2)
      ```
      
      ### Symbol Nomenclature for Glycans (SNFG)
      Standard colored symbols for publications:
      - Blue circle = Glucose
      - Green circle = Mannose
      - Yellow circle = Galactose
      - Blue square = N-Acetylglucosamine
      - Yellow square = N-Acetylgalactosamine
      - Purple diamond = N-Acetylneuraminic acid (sialic acid)
      - Red triangle = Fucose
      
      ## Therapeutic Glycoproteins and Key Glycosylation Sites
      
      | Therapeutic | Target | Key Glycosylation | Function |
      |-------------|--------|------------------|---------|
      | IgG1 antibody | Various | N297 (Fc) | ADCC/CDC effector function |
      | Erythropoietin | EPOR | N24, N38, N83, O-glycans | Pharmacokinetics |
      | Etanercept | TNF | N420 (IgG1 Fc) | Half-life |
      | tPA (alteplase) | Fibrin | N117, N184, N448 | Fibrin binding |
      | Factor VIII | VWF | 25 N-glycosites | Clearance |
      
      ## Batch Analysis Example
      
      ```python
      # find_n_glycosylation_sequons and predict_o_glycosylation_hotspots are the
      # functions defined inline in SKILL.md — paste them in alongside this snippet
      # (there is no installable glycoengineering_tools package).
      import pandas as pd
      
      def analyze_glycosylation_landscape(sequences_dict: dict) -> pd.DataFrame:
          """
          Batch analysis of glycosylation for multiple proteins.
      
          Args:
              sequences_dict: {protein_name: sequence}
      
          Returns:
              DataFrame with glycosylation summary per protein
          """
          results = []
          for name, seq in sequences_dict.items():
              n_sites = find_n_glycosylation_sequons(seq)
              o_sites = predict_o_glycosylation_hotspots(seq)
      
              results.append({
                  'protein': name,
                  'length': len(seq),
                  'n_glycosites': len(n_sites),
                  'o_glyco_hotspots': len(o_sites),
                  'n_glyco_density': len(n_sites) / len(seq) * 100,
                  'n_glyco_positions': [s['position'] for s in n_sites]
              })
      
          return pd.DataFrame(results)
      ```
      
  • SKILL.md 13.9 KB
    ---
    name: alterlab-glycoengineering
    description: Analyze and engineer protein glycosylation — scan sequences for N-glycosylation sequons (N-X-S/T), predict O-glycosylation hotspots, and reach curated glycoengineering tools (NetOGlyc, GlycoShield, GlycoWorkbench). Use when identifying or designing glycosylation sites, optimizing therapeutic-antibody or biologic glycoforms, or doing glycoprotein engineering and vaccine-design work. Part of the AlterLab Academic Skills suite.
    license: MIT
    allowed-tools: Read Write Edit Bash(python:*) Bash(uv:*)
    compatibility: "Sequon scanning and mutation helpers are pure-Python stdlib (re, typing) — run them under `uv run python` directly. The optional database helpers need `requests` (and the batch example needs `pandas`); external web services (NetNGlyc/NetOGlyc, GlyGen, GlyTouCan) need network access but no API key or account. Endpoint status verified 2026-09."
    metadata:
        skill-author: AlterLab
        version: "1.1.0"
        last_updated: "2026-09-23"
    ---
    
    # Glycoengineering
    
    ## Overview
    
    Glycosylation is the most common and complex post-translational modification (PTM) of proteins, affecting over 50% of all human proteins. Glycans regulate protein folding, stability, immune recognition, receptor interactions, and pharmacokinetics of therapeutic proteins. Glycoengineering involves rational modification of glycosylation patterns for improved therapeutic efficacy, stability, or immune evasion.
    
    **Two major glycosylation types:**
    - **N-glycosylation**: Attached to asparagine (N) in the sequon N-X-[S/T] where X ≠ Proline; occurs in the ER/Golgi
    - **O-glycosylation**: Attached to serine (S) or threonine (T); no strict consensus motif; primarily GalNAc initiation
    
    ## When to Use This Skill
    
    Use this skill when:
    
    - **Antibody engineering**: Optimize Fc glycosylation for enhanced ADCC, CDC, or reduced immunogenicity
    - **Therapeutic protein design**: Identify glycosylation sites that affect half-life, stability, or immunogenicity
    - **Vaccine antigen design**: Engineer glycan shields to focus immune responses on conserved epitopes
    - **Biosimilar characterization**: Compare glycan patterns between reference and biosimilar
    - **Drug target analysis**: Does glycosylation affect target engagement for a receptor?
    - **Protein stability**: N-glycans often stabilize proteins; identify sites for stabilizing mutations
    
    ### Does NOT Trigger
    
    | Scenario | Use Instead |
    |----------|-------------|
    | Glycan/carbohydrate cheminformatics (structures, descriptors, SMILES) | `alterlab-rdkit` |
    | Identifying glycopeptides from mass-spectrometry raw data | `alterlab-pyopenms` |
    | Predicting the 3D structure of the glycoprotein itself | `alterlab-alphafold`, `alterlab-boltz` |
    | MD simulation of a glycan shield (setup, force fields, trajectories) | `alterlab-molecular-dynamics` |
    | Looking up a protein's curated sequence features in UniProt | `alterlab-uniprot` |
    
    ## N-Glycosylation Sequon Analysis
    
    ### Scanning for N-Glycosylation Sites
    
    N-glycosylation occurs at the sequon **N-X-[S/T]** where X ≠ Proline.
    
    ```python
    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"))
    ```
    
    ### Mutating N-Glycosylation Sites
    
    ```python
    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-Glycosylation Analysis
    
    ### Heuristic O-Glycosylation Hotspot Prediction
    
    ```python
    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
    ```
    
    ## External Glycoengineering Tools
    
    ### 1. NetOGlyc 4.0 (O-glycosylation prediction)
    
    Web service for high-accuracy O-GalNAc site prediction:
    - **URL**: https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/
    - **Input**: FASTA protein sequence
    - **Output**: Per-residue O-glycosylation probability scores
    - **Method**: Neural network trained on experimentally verified O-GalNAc sites
    
    NetOGlyc 4.0 has no stable public REST API — the CGI submission endpoint and
    its form parameters change between web-service revisions. For reliable results,
    submit FASTA at the web interface and download the result table:
    
    - NetOGlyc 4.0 (O-GalNAc): https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/
    - NetNGlyc 1.0 (N-glyc): https://services.healthtech.dtu.dk/services/NetNGlyc-1.0/
    
    The standalone packages are also downloadable from those pages for offline/batch
    runs. Use the inline `find_n_glycosylation_sequons` above as a fast pre-screen.
    
    ### 2. GlycoShield-MD (Glycan Shielding Analysis)
    
    GlycoShield-MD analyzes how glycans shield protein surfaces during MD simulations:
    - **URL**: https://gitlab.mpcdf.mpg.de/dioscuri-biophysics/glycoshield-md/
    - **Use**: Map glycan shielding on protein surface over MD trajectory
    - **Output**: Per-residue shielding fraction, visualization
    
    GlycoSHIELD is **not on PyPI** (verified 2026-09 — `pip install glycoshield` fails with
    404). Install it from the project's GitLab repository following its own README, which also
    documents the expected inputs: a glycoprotein topology (PDB), a trajectory, and the glycan
    residue names to treat as the shield. Output is a per-residue shielding fraction you can map
    onto the surface — the number that tells you which epitopes a glycan actually occludes.
    
    ### 3. GlycoWorkbench (Glycan Structure Drawing/Analysis)
    
    - **URL**: https://github.com/glycoinfo/eurocarbdb
    - **Use**: Draw glycan structures, calculate masses, annotate MS spectra
    - **Format**: GlycoCT, IUPAC condensed glycan notation
    
    ### 4. Experimentally verified glycosylation: GlyGen (and GlyConnect)
    
    **GlyGen** (`api.glygen.org`) is the route that currently works programmatically —
    verified 2026-09 with plain GET requests returning JSON:
    
    ```python
    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/) remains an excellent curated resource to
    browse, but its public REST routes are unreliable: as of 2026-09
    `/api/proteins/uniprot/{acc}` returns HTTP 500 and the Swagger spec 404s. Use the web
    interface for GlyConnect, and GlyGen for scripted access.
    
    ### 5. UniCarbKB (Glycan Structure Database)
    
    - **URL**: https://www.unicarbkb.org/ (the bare `unicarbkb.org` redirects here)
    - **Use**: Browse glycan structures, search by mass or composition
    - **Format**: GlycoCT or IUPAC notation
    
    ## Key Glycoengineering Strategies
    
    ### For Therapeutic Antibodies
    
    | Goal | Strategy | Notes |
    |------|----------|-------|
    | Enhance ADCC | Defucosylation at Fc Asn297 | Afucosylated IgG1 has ~50× better FcγRIIIa binding |
    | Reduce immunogenicity | Remove non-human glycans | Eliminate α-Gal, NGNA epitopes |
    | Improve PK half-life | Sialylation | Sialylated glycans extend half-life |
    | Reduce inflammation | Hypersialylation | IVIG anti-inflammatory mechanism |
    | Create glycan shield | Add N-glycosites to surface | Masks vulnerable epitopes (vaccine design) |
    
    ### Common Mutations Used
    
    | Mutation | Effect |
    |----------|--------|
    | N297A/Q (IgG1) | Removes Fc glycosylation (aglycosyl) |
    | N297D (IgG1) | Removes Fc glycosylation |
    | S298A/E333A/K334A | Increases FcγRIIIa binding |
    | F243L (IgG1) | Increases defucosylation |
    | T299A | Removes Fc glycosylation |
    
    ## Glycan Notation
    
    ### IUPAC Condensed Notation (Monosaccharide abbreviations)
    
    | Symbol | Full Name | Type |
    |--------|-----------|------|
    | Glc | Glucose | Hexose |
    | GlcNAc | N-Acetylglucosamine | HexNAc |
    | Man | Mannose | Hexose |
    | Gal | Galactose | Hexose |
    | Fuc | Fucose | Deoxyhexose |
    | Neu5Ac | N-Acetylneuraminic acid (Sialic acid) | Sialic acid |
    | GalNAc | N-Acetylgalactosamine | HexNAc |
    
    ### Complex N-Glycan Structure
    
    ```
    Typical complex biantennary N-glycan:
    Neu5Ac-Gal-GlcNAc-Man\
                           Man-GlcNAc-GlcNAc-[Asn]
    Neu5Ac-Gal-GlcNAc-Man/
    (±Core Fuc at innermost GlcNAc)
    ```
    
    ## Best Practices
    
    - **Start with NetNGlyc/NetOGlyc** for computational prediction before experimental validation
    - **Verify with mass spectrometry**: Glycoproteomics (Byonic, Mascot) for site-specific glycan profiling
    - **Consider site context**: Not all predicted sequons are actually glycosylated (accessibility, cell type, protein conformation)
    - **For antibodies**: Fc N297 glycan is critical — always characterize this site first
    - **Use GlyConnect** to check if your protein of interest has experimentally verified glycosylation data
    
    ## Additional Resources
    
    - **GlyTouCan** (glycan structure repository): https://glytoucan.org/
    - **GlyConnect**: https://glyconnect.expasy.org/
    - **CFG Functional Glycomics**: http://www.functionalglycomics.org/
    - **DTU Health Tech servers** (NetNGlyc, NetOGlyc): https://services.healthtech.dtu.dk/
    - **GlycoWorkbench**: https://glycoworkbench.software.informer.com/
    - **Review**: Apweiler R et al. (1999) Biochim Biophys Acta. PMID: 10580125
    - **Therapeutic glycoengineering review**: Jefferis R (2009) Nature Reviews Drug Discovery. PMID: 19247305
    
    Part of the AlterLab Academic Skills suite.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related