Que fait Glycoengineering ?
Aperçu
La glycosylation est la modification post-traductionnelle (MPT) la plus courante et la plus complexe des protéines, affectant plus de 50 % de toutes les protéines humaines. Les glycanes régulent le repliement, la stabilité, la reconnaissance immunitaire, les interactions avec les récepteurs et la pharmacocinétique des protéines thérapeutiques. La glycoingénierie implique la modification rationnelle des motifs de glycosylation pour améliorer l'efficacité thérapeutique, la stabilité ou l'évasion immunitaire.
Les deux principaux types de glycosylation :
- N-glycosylation : Fixée sur une asparagine (N) dans le séquon N-X-[S/T] où X ≠ Proline ; se produit dans le RE/Golgi
- O-glycosylation : Fixée sur la sérine (S) ou la thréonine (T) ; pas de motif consensus strict ; principalement initiée par GalNAc
Quand utiliser cette compétence
Utilisez cette compétence lorsque :
- Ingénierie des anticorps : Optimiser la glycosylation du Fc pour améliorer l'ADCC, la CDC ou réduire l'immunogénicité
- Conception de protéines thérapeutiques : Identifier les sites de glycosylation qui affectent la demi-vie, la stabilité ou l'immunogénicité
- Conception d'antigènes vaccinaux : Concevoir des boucliers glycaniques pour focaliser les réponses immunitaires sur les épitopes conservés
- Caractérisation de biosimilaires : Comparer les motifs glycaniques entre le produit de référence et le biosimilaire
- Analyse de cible médicamenteuse : La glycosylation affecte-t-elle l'engagement de la cible pour un récepteur ?
- Stabilité des protéines : Les N-glycanes stabilisent souvent les protéines ; identifier les sites pour des mutations stabilisantes
Analyse des séquons de N-glycosylation
Recherche de sites de N-glycosylation
La N-glycosylation se produit au niveau du séquon N-X-[S/T] où X ≠ Proline.
import re
from typing import List, Tuple
def find_n_glycosylation_sequons(sequence: str) -> List[dict]:
"""
Recherche les séquons canoniques de N-glycosylation dans une séquence protéique.
Motif : N-X-[S/T], où X ≠ Proline.
Args:
sequence: Séquence d'acides aminés en code à une lettre
Returns:
Liste de dictionnaires avec position (base 1), motif et contexte
"""
seq = sequence.upper()
results = []
i = 0
while i <= len(seq) - 3:
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 résidus de contexte
results.append({
'position': i + 1, # base 1
'motif': triplet,
'context': context,
'sequon_type': 'NXS' if triplet[2] == 'S' else 'NXT'
})
i += 3
else:
i += 1
return results
def summarize_glycosylation_sites(sequence: str, protein_name: str = "") -> str:
"""Génère un résumé de recherche des sites de N-glycosylation."""
sequons = find_n_glycosylation_sequons(sequence)
lines = [f"# Analyse des séquons de N-glycosylation : {protein_name or 'Protéine'}"]
lines.append(f"Longueur de la séquence : {len(sequence)}")
lines.append(f"Nombre total de séquons de N-glycosylation : {len(sequons)}")
if sequons:
lines.append(f"\nSites N-X-S : {sum(1 for s in sequons if s['sequon_type'] == 'NXS')}")
lines.append(f"Sites N-X-T : {sum(1 for s in sequons if s['sequon_type'] == 'NXT')}")
lines.append(f"\nDétails des sites :")
for s in sequons:
lines.append(f" Position {s['position']} : {s['motif']} (contexte : ...{s['context']}...)")
else:
lines.append("Aucun séquon de N-glycosylation canonique détecté.")
return "\n".join(lines)
# Exemple : région Fc de l'IgG1
fc_sequence = "APELLGGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVKFNWYVDGVEVHNAKTKPREEQYNSTYRVVSVLTVLHQDWLNGKEYKCKVSNKALPAPIEKTISKAKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPVLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK"
print(summarize_glycosylation_sites(fc_sequence, "IgG1 Fc"))
Mutation des sites de N-glycosylation
def eliminate_glycosite(sequence: str, position: int, replacement: str = "Q") -> str:
"""
Élimine un site de N-glycosylation en substituant Asn → Gln (conservatrice).
Args:
sequence: Séquence protéique
position: Position (base 1) de l'Asn à muter
replacement: Acide aminé de substitution (par défaut Q = Gln ; taille similaire, non glycosylé)
Returns:
Séquence mutée
"""
seq = list(sequence.upper())
idx = position - 1
assert seq[idx] == 'N', f"La position {position} est '{seq[idx]}', pas 'N'"
seq[idx] = replacement.upper()
return ''.join(seq)
def add_glycosite(sequence: str, position: int, flanking_context: str = "S") -> str:
"""
Introduit un site de N-glycosylation en mutant un résidu en Asn,
et en s'assurant que X ≠ Pro et +2 = S/T.
Args:
position: Position (base 1) où introduire l'Asn
flanking_context: 'S' ou 'T' à la position+2 (si modification nécessaire)
"""
seq = list(sequence.upper())
idx = position - 1
# Mutation en Asn
seq[idx] = 'N'
# Vérifier que X+1 != Pro (muter en Ala si nécessaire)
if idx + 1 < len(seq) and seq[idx + 1] == 'P':
seq[idx + 1] = 'A'
# Vérifier que X+2 = S ou T
if idx + 2 < len(seq) and seq[idx + 2] not in ('S', 'T'):
seq[idx + 2] = flanking_context
return ''.join(seq)
Analyse O-glycosylation
Prédiction heuristique des hotspots d'O-glycosylation
def predict_o_glycosylation_hotspots(
sequence: str,
window: int = 7,
min_st_fraction: float = 0.4,
disallow_proline_next: bool = True
) -> List[dict]:
"""
Score heuristique des hotspots d'O-glycosylation basé sur la densité locale de S/T.
Ne remplace pas NetOGlyc ; à utiliser comme référence rapide.
Règles :
- La glycosylation O-GalNAc se regroupe sur les segments riches en Ser/Thr
- Signaler les résidus Ser/Thr dans des fenêtres enrichies en S/T
- Éviter les S/T immédiatement suivis de Pro (motifs TP/SP qui inhibent GalNAc-T)
Args:
window: Taille impaire de la fenêtre pour la densité locale de S/T
min_st_fraction: Fraction minimale de S/T dans la fenêtre pour signaler un 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
Outils externes de glycoingénierie
1. NetOGlyc 4.0 (prédiction d'O-glycosylation)
Service web pour la prédiction haute précision des sites O-GalNAc :
- URL : https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/
- Entrée : Séquence protéique au format FASTA
- Sortie : Scores de probabilité d'O-glycosylation par résidu
- Méthode : Réseau de neurones entraîné sur des sites O-GalNAc vérifiés expérimentalement
import requests
def submit_netoglycv4(fasta_sequence: str) -> str:
"""
Soumet la séquence au service web NetOGlyc 4.0.
Retourne l'URL du job pour récupérer les résultats.
Note : Utilise le service web DTU Health Tech. Les résultats prennent ~1-5 min.
"""
url = "https://services.healthtech.dtu.dk/cgi-bin/webface2.cgi"
# Soumission NetOGlyc (les paramètres peuvent varier selon la version du service web)
# Recommandation : utiliser l'interface web directement pour la plupart des cas
print("Soumettre la séquence à : https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/")
return url
# Aussi : NetNGlyc pour la prédiction de N-glycosylation
# URL : https://services.healthtech.dtu.dk/services/NetNGlyc-1.0/
2. GlycoSHIELD (Analyse du bouclier glycanique)
GlycoSHIELD greffe des bibliothèques de conformères glycaniques pré-simulés sur une structure protéique statique et évalue la surface protéique masquée par les glycanes, sans lancer de nouvelles simulations de dynamique moléculaire (Tsai et al., Cell 2024, doi:10.1016/j.cell.2024.01.034) :
- URL : https://gitlab.mpcdf.mpg.de/dioscuri-biophysics/glycoshield-md/ (application web : https://glycoshield.eu)
- Utilisation : Modéliser le bouclier glycanique sur une glycoprotéine et cartographier le masquage par résidu
- Sortie : Ensembles PDB/XTC glycosylés par site, graphique de masquage par résidu, PDB avec masquage dans la colonne B-factor
GlycoSHIELD n'est pas sur PyPI — uv pip install glycoshield échoue. Il se présente sous la forme de trois scripts reposant sur un petit paquet glycoshield (nécessite numpy, scipy, matplotlib, MDAnalysis ; GlycoSASA.py nécessite aussi gmx de GROMACS dans PATH). Installation à partir du dépôt :
# Installation (GPL-3.0). Les bibliothèques de conformères glycaniques sont téléchargées séparément —
# voir glycan_library_downloader.py et GLYCAN_LIBRARY/ dans le dépôt.
git clone https://gitlab.mpcdf.mpg.de/dioscuri-biophysics/glycoshield-md.git
cd glycoshield-md
uv pip install -e .
# 1. Greffer les conformères glycaniques sur chaque séquon listé dans le fichier d'entrée.
# Une ligne par site : <chaîne> <rés-1,rés,rés+1> <1,2,3> <glycan.pdb> <glycan.xtc> <out.pdb> <out.xtc>
python GlycoSHIELD.py --protpdb protein.pdb --inputfile sequons_input \
--threshold 3.5 --mode CG --shuffle-sugar
# 2. Score de masquage par résidu à travers les ensembles greffés (rayons de sonde en nm)
python GlycoSASA.py --pdblist A_463.pdb,A_492.pdb --xtclist A_463.xtc,A_492.xtc \
--probelist 0.14,0.25 --plottrace
À titre illustratif : les drapeaux proviennent des définitions argparse des scripts et du tutoriel en amont (N-cadhérine EC5 avec des glycanes Man5) ; ils n'ont pas été exécutés ici. --mode CG vérifie les collisions uniquement avec les atomes Cα et s'utilise avec --threshold 3.5 ; --mode All avec --threshold 0.7 est le réglage tous atomes.
3. GlycoWorkbench (Dessin/Analyse de structures glycaniques)
- URL : https://www.eurocarbdb.org/project/glycoworkbench
- Utilisation : Dessiner des structures glycaniques, calculer des masses, annoter des spectres de masse
- Format : GlycoCT, notation condensée IUPAC des glycanes
4. GlyConnect (Base de données glycanes-protéines)
- URL : https://glyconnect.expasy.org/
- Utilisation : Trouver des glycoprotéines et sites de glycosylation vérifiés expérimentalement
- Requête : Par protéine (identifiant UniProt), structure glycanique, ou tissu
import requests
def query_glyconnect(uniprot_id: str) -> dict:
"""Interroge GlyConnect pour les données de glycosylation d'une protéine."""
url = f"https://glyconnect.expasy.org/api/proteins/uniprot/{uniprot_id}"
response = requests.get(url, headers={"Accept": "application/json"})
if response.status_code == 200:
return response.json()
return {}
# Exemple : interroger la glycosylation de l'EGFR
efgfr_glyco = query_glyconnect("P00533")
5. UniCarbKB (Base de données de structures glycaniques)
- URL : https://unicarbkb.org/
- Utilisation : Parcourir les structures glycaniques, rechercher par masse ou composition
- Format : GlycoCT ou notation IUPAC
Stratégies clés de glycoingénierie
Pour les anticorps thérapeutiques
| Objectif | Stratégie | Notes |
|---|---|---|
| Améliorer l'ADCC | Défucosylation à Fc Asn297 | L'IgG1 afucosylée a une liaison ~50× meilleure au FcγRIIIa |
| Réduire l'immunogénicité | Supprimer les glycanes non humains | Éliminer les épitopes α-Gal, NGNA |
| Améliorer la demi-vie PK | Sialylation | Les glycanes sialylés prolongent la demi-vie |
| Réduire l'inflammation | Hypersialylation | Mécanisme anti-inflammatoire des IVIG |
| Créer un bouclier glycanique | Ajouter des N-glycosites en surface | Masque les épitopes vulnérables (conception de vaccins) |
Mutations courantes utilisées
| Mutation | Effet |
|---|---|
| N297A/Q (IgG1) | Supprime la glycosylation du Fc (aglycosyle) |
| N297D (IgG1) | Supprime la glycosylation du Fc |
| S298A/E333A/K334A | Augmente la liaison au FcγRIIIa |
| F243L (IgG1) | Augmente la défucosylation |
| T299A | Supprime la glycosylation du Fc |
Notation des glycanes
Notation condensée IUPAC (abréviations des monosaccharides)
| Symbole | Nom complet | Type |
|---|---|---|
| Glc | Glucose | Hexose |
| GlcNAc | N-Acétylglucosamine | HexNAc |
| Man | Mannose | Hexose |
| Gal | Galactose | Hexose |
| Fuc | Fucose | Désoxyhexose |
| Neu5Ac | Acide N-acétylneuraminique (Acide sialique) | Acide sialique |
| GalNAc | N-Acétylgalactosamine | HexNAc |
Structure complexe d'un N-glycane
Glycane N bi-antenné complexe typique :
Neu5Ac-Gal-GlcNAc-Man\
Man-GlcNAc-GlcNAc-[Asn]
Neu5Ac-Gal-GlcNAc-Man/
(±Fucose central sur le GlcNAc le plus interne)
Bonnes pratiques
- Commencez par NetNGlyc/NetOGlyc pour une prédiction computationnelle avant validation expérimentale
- Vérifiez par spectrométrie de masse : Glycoprotéomique (Byonic, Mascot) pour le profilage glycanique site-spécifique
- Considérez le contexte du site : Tous les séquons prédits ne sont pas réellement glycosylés (accessibilité, type cellulaire, conformation protéique)
- Pour les anticorps : Le glycane Fc N297 est critique — caractérisez toujours ce site en premier
- Utilisez GlyConnect pour vérifier si votre protéine d'intérêt possède des données de glycosylation vérifiées expérimentalement
Ressources supplémentaires
- GlyTouCan (dépôt de structures glycaniques) : https://glytoucan.org/
- GlyConnect : https://glyconnect.expasy.org/
- CFG Functional Glycomics : http://www.functionalglycomics.org/
- Serveurs DTU Health Tech (NetNGlyc, NetOGlyc) : https://services.healthtech.dtu.dk/
- GlycoWorkbench : https://glycoworkbench.software.informer.com/
- Revue : Apweiler R et al. (1999) Biochim Biophys Acta. PMID: 10564035
- Revue sur la glycoingénierie thérapeutique : Jefferis R (2009) Nature Reviews Drug Discovery. PMID: 19448661