醣工程 是做什麼的?
概述
醣基化(Glycosylation)是最常見也最複雜的蛋白質轉譯後修飾,影響超過 50% 的人類蛋白質。醣類分子調控蛋白質的摺疊、穩定性、免疫辨識、受體交互作用以及治療性蛋白質的藥物動力學。醣工程(Glycoengineering)旨在透過合理修改醣基化模式,來改善治療效果、穩定性或免疫逃逸能力。
兩種主要的醣基化類型:
- N-醣基化:附著在天門冬醯胺 (N) 上的序列訊號 N-X-[S/T],其中 X ≠ 脯胺酸;發生在內質網/高基氏體
- O-醣基化:附著在絲胺酸 (S) 或蘇胺酸 (T) 上;無嚴格的一致性序列;主要起始於 GalNAc
何時使用此技能
在以下情況使用此技能:
- 抗體工程:優化 Fc 區醣基化以增強 ADCC、CDC 或降低免疫原性
- 治療性蛋白設計:鑑定影響半衰期、穩定性或免疫原性的醣基化位點
- 疫苗抗原設計:設計醣基屏蔽以集中免疫反應於保留的抗原決定位
- 生物相似藥特性分析:比較參考藥品與生物相似藥之間的醣鏈模式
- 藥物靶點分析:醣基化是否影響受體的靶點結合?
- 蛋白質穩定性:N-醣鏈通常穩定蛋白質;鑑定可進行穩定化突變的位點
N-醣基化序列訊號分析
掃描 N-醣基化位點
N-醣基化發生於序列訊號 N-X-[S/T],其中 X ≠ 脯胺酸。
import re
from typing import List, Tuple
def find_n_glycosylation_sequons(sequence: str) -> List[dict]:
"""
掃描蛋白質序列中典型的 N-連接醣基化序列訊號。
模體:N-X-[S/T],其中 X ≠ 脯胺酸。
參數:
sequence: 單字母胺基酸序列
返回:
包含位置(1-based)、模體和上下文資訊的字典列表
"""
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 個殘基的上下文
results.append({
'position': i + 1, # 1-based
'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:
"""產生 N-醣基化位點的研究日誌摘要。"""
sequons = find_n_glycosylation_sequons(sequence)
lines = [f"# N-醣基化序列訊號分析:{protein_name or '蛋白質'}"]
lines.append(f"序列長度:{len(sequence)}")
lines.append(f"總 N-醣基化序列訊號數:{len(sequons)}")
if sequons:
lines.append(f"\nN-X-S 位點數:{sum(1 for s in sequons if s['sequon_type'] == 'NXS')}")
lines.append(f"N-X-T 位點數:{sum(1 for s in sequons if s['sequon_type'] == 'NXT')}")
lines.append(f"\n位點詳細資訊:")
for s in sequons:
lines.append(f" 位置 {s['position']}:{s['motif']}(上下文:...{s['context']}...)")
else:
lines.append("未偵測到典型的 N-醣基化序列訊號。")
return "\n".join(lines)
# 範例:IgG1 Fc 區域
fc_sequence = "APELLGGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVKFNWYVDGVEVHNAKTKPREEQYNSTYRVVSVLTVLHQDWLNGKEYKCKVSNKALPAPIEKTISKAKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPVLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK"
print(summarize_glycosylation_sites(fc_sequence, "IgG1 Fc"))
突變 N-醣基化位點
def eliminate_glycosite(sequence: str, position: int, replacement: str = "Q") -> str:
"""
透過將 Asn 取代為 Gln(保守性突變)來消除 N-醣基化位點。
參數:
sequence: 蛋白質序列
position: 要突變的天門冬醯胺的 1-based 位置
replacement: 要取代的胺基酸(預設 Q = Gln;大小相似,不會被醣基化)
返回:
突變後的序列
"""
seq = list(sequence.upper())
idx = position - 1
assert seq[idx] == 'N', f"位置 {position} 是 '{seq[idx]}',而不是 'N'"
seq[idx] = replacement.upper()
return ''.join(seq)
def add_glycosite(sequence: str, position: int, flanking_context: str = "S") -> str:
"""
透過將某個殘基突變為 Asn,引入 N-醣基化位點,
並確保 X ≠ Pro 且 +2 = S/T。
參數:
position: 要引入 Asn 的 1-based 位置
flanking_context: 位置+2 處的胺基酸(如果需要修改則為 'S' 或 'T')
"""
seq = list(sequence.upper())
idx = position - 1
# 突變為 Asn
seq[idx] = 'N'
# 確保 X+1 != Pro(如果需要則突變為 Ala)
if idx + 1 < len(seq) and seq[idx + 1] == 'P':
seq[idx + 1] = 'A'
# 確保 X+2 = S 或 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]:
"""
基於局部 S/T 密度的啟發式 O-醣基化熱點評分。
不能取代 NetOGlyc;作為快速基礎線使用。
規則:
- O-GalNAc 醣基化聚集在 Ser/Thr 豐富的片段
- 標記 S/T 富集窗口中的 Ser/Thr 殘基
- 避免 S/T 後緊跟 Pro(TP/SP 模體會抑制 GalNAc-T)
參數:
window: 用於計算局部 S/T 密度的奇數窗口大小
min_st_fraction: 標記位點所需的窗口內 S/T 最小比例
"""
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 位點預測的網路服務:
- URL:https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/
- 輸入:FASTA 蛋白質序列
- 輸出:每個殘基的 O-醣基化機率評分
- 方法:基於實驗驗證的 O-GalNAc 位點訓練的神經網路
import requests
def submit_netoglycv4(fasta_sequence: str) -> str:
"""
提交序列至 NetOGlyc 4.0 網路服務。
返回用於結果擷取的任務 URL。
注意:此處使用 DTU Health Tech 網路服務。結果約需 1-5 分鐘。
"""
url = "https://services.healthtech.dtu.dk/cgi-bin/webface2.cgi"
# NetOGlyc 提交(參數可能因網路服務版本而異)
# 建議在大多數情況下直接使用網路介面
print("請於此處提交序列:https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/")
return url
# 另見:NetNGlyc 用於 N-醣基化預測
# URL:https://services.healthtech.dtu.dk/services/NetNGlyc-1.0/
2. GlycoSHIELD(醣基屏蔽分析)
GlycoSHIELD 將預先模擬的醣鏈構型庫嫁接至靜態蛋白質結構上,並評分醣鏈屏蔽了多少蛋白質表面,無需執行新的分子動力學模擬 (Tsai 等人,Cell 2024,doi:10.1016/j.cell.2024.01.034):
- URL:https://gitlab.mpcdf.mpg.de/dioscuri-biophysics/glycoshield-md/(網路應用程式:https://glycoshield.eu)
- 用途:模擬醣蛋白上的醣鏈屏蔽並繪製每個殘基的屏蔽程度
- 輸出:每個位點的醣基化 PDB/XTC 構型集合、每個殘基的屏蔽圖、將屏蔽資訊儲存在 B-factors 欄位的 PDB 檔案
GlycoSHIELD 不在 PyPI 上 — uv pip install glycoshield 會失敗。它以三個腳本形式提供,並基於一個小型 glycoshield 套件(需要 numpy, scipy, matplotlib, MDAnalysis;GlycoSASA.py 還需要在 PATH 上有 gmx 來自 GROMACS)。從檢出目錄安裝:
# 安裝 (GPL-3.0)。醣鏈構型庫需另外下載 —
# 參見 glycan_library_downloader.py 和儲存庫中的 GLYCAN_LIBRARY/。
git clone https://gitlab.mpcdf.mpg.de/dioscuri-biophysics/glycoshield-md.git
cd glycoshield-md
uv pip install -e .
# 1. 將醣鏈構型嫁接至輸入檔案中列出的每個序列訊號上。
# 每行一個位點:<鏈> <殘基-1,殘基,殘基+1> <1,2,3> <醣鏈.pdb> <醣鏈.xtc> <輸出.pdb> <輸出.xtc>
python GlycoSHIELD.py --protpdb protein.pdb --inputfile sequons_input \
--threshold 3.5 --mode CG --shuffle-sugar
# 2. 跨嫁接構型集合的每個殘基屏蔽評分(探針半徑單位為 nm)
python GlycoSASA.py --pdblist A_463.pdb,A_492.pdb --xtclist A_463.xtc,A_492.xtc \
--probelist 0.14,0.25 --plottrace
說明:這些旗標來自腳本的 argparse 定義和上層教程(N-cadherin EC5 帶有 Man5 醣鏈);在此處並未實際執行。--mode CG 僅針對 Cα 原子檢查衝突,並與 --threshold 3.5 搭配使用;--mode All 搭配 --threshold 0.7 則是全原子設定。
3. GlycoWorkbench(醣鏈結構繪圖/分析)
- URL:https://www.eurocarbdb.org/project/glycoworkbench
- 用途:繪製醣鏈結構,計算質量,標註質譜圖譜
- 格式:GlycoCT,IUPAC 壓縮式醣鏈表示法
4. GlyConnect(醣鏈-蛋白質資料庫)
- URL:https://glyconnect.expasy.org/
- 用途:查找經實驗驗證的醣蛋白和醣基化位點
- 查詢:依蛋白質(UniProt ID)、醣鏈結構或組織進行查詢
import requests
def query_glyconnect(uniprot_id: str) -> dict:
"""查詢 GlyConnect 以獲取某蛋白質的醣基化資料。"""
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 {}
# 範例:查詢 EGFR 的醣基化
# egfr_glyco = query_glyconnect("P00533")
5. UniCarbKB(醣鏈結構資料庫)
- URL:https://unicarbkb.org/
- 用途:瀏覽醣鏈結構,依質量或組成搜尋
- 格式:GlycoCT 或 IUPAC 表示法
關鍵醣工程策略
針對治療性抗體
| 目標 | 策略 | 備註 |
|---|---|---|
| 增強 ADCC | Fc Asn297 去岩藻糖化 | 去岩藻糖化的 IgG1 與 FcγRIIIa 的結合能力提高約 50 倍 |
| 降低免疫原性 | 移除非人類醣鏈 | 消除 α-Gal、NGNA 抗原決定位 |
| 改善藥物動力學半衰期 | 唾液酸化 | 唾液酸化的醣鏈可延長半衰期 |
| 減少發炎 | 高度唾液酸化 | IVIG 的抗發炎機制 |
| 建立醣基屏蔽 | 在表面添加 N-醣基化位點 | 遮蔽易受攻擊的抗原決定位(疫苗設計) |
常用突變
| 突變 | 效果 |
|---|---|
| N297A/Q (IgG1) | 移除 Fc 區醣基化(去醣基化) |
| N297D (IgG1) | 移除 Fc 區醣基化 |
| S298A/E333A/K334A | 增加 FcγRIIIa 結合 |
| F243L (IgG1) | 增加去岩藻糖化 |
| T299A | 移除 Fc 區醣基化 |
醣鏈表示法
IUPAC 壓縮式表示法(單醣縮寫)
| 符號 | 全名 | 類型 |
|---|---|---|
| Glc | 葡萄糖 | 己糖 |
| GlcNAc | N-乙醯葡萄糖胺 | HexNAc |
| Man | 甘露糖 | 己糖 |
| Gal | 半乳糖 | 己糖 |
| Fuc | 岩藻糖 | 去氧己糖 |
| Neu5Ac | N-乙醯神經胺酸(唾液酸) | 唾液酸 |
| GalNAc | N-乙醯半乳糖胺 | HexNAc |
複合型 N-醣鏈結構
典型複合型雙觸角 N-醣鏈:
Neu5Ac-Gal-GlcNAc-Man\
Man-GlcNAc-GlcNAc-[Asn]
Neu5Ac-Gal-GlcNAc-Man/
(±最內層 GlcNAc 上的核心岩藻糖)
最佳實務
- 從 NetNGlyc/NetOGlyc 開始:在實驗驗證前先進行計算預測
- 以質譜儀驗證:使用醣蛋白質體學(Byonic, Mascot)進行位點特異性醣鏈分析
- 考慮位點上下文:並非所有預測的序列訊號都會實際發生醣基化(可及性、細胞類型、蛋白質構型)
- 針對抗體:Fc N297 的醣鏈至關重要 — 請務必先表徵此位點
- 使用 GlyConnect:檢查您的目標蛋白質是否有實驗驗證的醣基化資料
其他資源
- GlyTouCan(醣鏈結構儲存庫):https://glytoucan.org/
- GlyConnect:https://glyconnect.expasy.org/
- CFG Functional Glycomics:http://www.functionalglycomics.org/
- DTU Health Tech 伺服器(NetNGlyc, NetOGlyc):https://services.healthtech.dtu.dk/
- GlycoWorkbench:https://glycoworkbench.software.informer.com/
- 綜述:Apweiler R 等人 (1999) Biochim Biophys Acta. PMID: 10564035
- 治療性醣工程綜述:Jefferis R (2009) Nature Reviews Drug Discovery. PMID: 19448661