$npx -y skills add K-Dense-AI/scientific-agent-skills --skill glycoengineeringAnalyze and engineer protein glycosylation. Scan sequences for N-glycosylation sequons (N-X-S/T), predict O-glycosylation hotspots, and access curated glycoengineering tools (NetOGlyc, GlycoShield, GlycoWorkbench). For glycoprotein engineering, therapeutic antibody optimization,
| 1 | # Glycoengineering |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | 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. |
| 6 | |
| 7 | **Two major glycosylation types:** |
| 8 | - **N-glycosylation**: Attached to asparagine (N) in the sequon N-X-[S/T] where X ≠ Proline; occurs in the ER/Golgi |
| 9 | - **O-glycosylation**: Attached to serine (S) or threonine (T); no strict consensus motif; primarily GalNAc initiation |
| 10 | |
| 11 | ## When to Use This Skill |
| 12 | |
| 13 | Use this skill when: |
| 14 | |
| 15 | - **Antibody engineering**: Optimize Fc glycosylation for enhanced ADCC, CDC, or reduced immunogenicity |
| 16 | - **Therapeutic protein design**: Identify glycosylation sites that affect half-life, stability, or immunogenicity |
| 17 | - **Vaccine antigen design**: Engineer glycan shields to focus immune responses on conserved epitopes |
| 18 | - **Biosimilar characterization**: Compare glycan patterns between reference and biosimilar |
| 19 | - **Drug target analysis**: Does glycosylation affect target engagement for a receptor? |
| 20 | - **Protein stability**: N-glycans often stabilize proteins; identify sites for stabilizing mutations |
| 21 | |
| 22 | ## N-Glycosylation Sequon Analysis |
| 23 | |
| 24 | ### Scanning for N-Glycosylation Sites |
| 25 | |
| 26 | N-glycosylation occurs at the sequon **N-X-[S/T]** where X ≠ Proline. |
| 27 | |
| 28 | ```python |
| 29 | import re |
| 30 | from typing import List, Tuple |
| 31 | |
| 32 | def find_n_glycosylation_sequons(sequence: str) -> List[dict]: |
| 33 | """ |
| 34 | Scan a protein sequence for canonical N-linked glycosylation sequons. |
| 35 | Motif: N-X-[S/T], where X ≠ Proline. |
| 36 | |
| 37 | Args: |
| 38 | sequence: Single-letter amino acid sequence |
| 39 | |
| 40 | Returns: |
| 41 | List of dicts with position (1-based), motif, and context |
| 42 | """ |
| 43 | seq = sequence.upper() |
| 44 | results = [] |
| 45 | i = 0 |
| 46 | while i <= len(seq) - 3: |
| 47 | triplet = seq[i:i+3] |
| 48 | if triplet[0] == 'N' and triplet[1] != 'P' and triplet[2] in {'S', 'T'}: |
| 49 | context = seq[max(0, i-3):i+6] # ±3 residue context |
| 50 | results.append({ |
| 51 | 'position': i + 1, # 1-based |
| 52 | 'motif': triplet, |
| 53 | 'context': context, |
| 54 | 'sequon_type': 'NXS' if triplet[2] == 'S' else 'NXT' |
| 55 | }) |
| 56 | i += 3 |
| 57 | else: |
| 58 | i += 1 |
| 59 | return results |
| 60 | |
| 61 | def summarize_glycosylation_sites(sequence: str, protein_name: str = "") -> str: |
| 62 | """Generate a research log summary of N-glycosylation sites.""" |
| 63 | sequons = find_n_glycosylation_sequons(sequence) |
| 64 | |
| 65 | lines = [f"# N-Glycosylation Sequon Analysis: {protein_name or 'Protein'}"] |
| 66 | lines.append(f"Sequence length: {len(sequence)}") |
| 67 | lines.append(f"Total N-glycosylation sequons: {len(sequons)}") |
| 68 | |
| 69 | if sequons: |
| 70 | lines.append(f"\nN-X-S sites: {sum(1 for s in sequons if s['sequon_type'] == 'NXS')}") |
| 71 | lines.append(f"N-X-T sites: {sum(1 for s in sequons if s['sequon_type'] == 'NXT')}") |
| 72 | lines.append(f"\nSite details:") |
| 73 | for s in sequons: |
| 74 | lines.append(f" Position {s['position']}: {s['motif']} (context: ...{s['context']}...)") |
| 75 | else: |
| 76 | lines.append("No canonical N-glycosylation sequons detected.") |
| 77 | |
| 78 | return "\n".join(lines) |
| 79 | |
| 80 | # Example: IgG1 Fc region |
| 81 | fc_sequence = "APELLGGPSVFLFPPKPKDTLMISRTPEVTCVVVDVSHEDPEVKFNWYVDGVEVHNAKTKPREEQYNSTYRVVSVLTVLHQDWLNGKEYKCKVSNKALPAPIEKTISKAKGQPREPQVYTLPPSREEMTKNQVSLTCLVKGFYPSDIAVEWESNGQPENNYKTTPPVLDSDGSFFLYSKLTVDKSRWQQGNVFSCSVMHEALHNHYTQKSLSLSPGK" |
| 82 | print(summarize_glycosylation_sites(fc_sequence, "IgG1 Fc")) |
| 83 | ``` |
| 84 | |
| 85 | ### Mutating N-Glycosylation Sites |
| 86 | |
| 87 | ```python |
| 88 | def eliminate_glycosite(sequence: str, position: int, replacement: str = "Q") -> str: |
| 89 | """ |
| 90 | Eliminate an N-glycosylation site by substituting Asn → Gln (conservative). |
| 91 | |
| 92 | Args: |
| 93 | sequence: Protein sequence |
| 94 | position: 1-based position of the Asn to mutate |
| 95 | replacement: Amino acid to substitute (default Q = Gln; similar size, not glycosylated) |
| 96 | |
| 97 | Returns: |
| 98 | Mutated sequence |
| 99 | """ |
| 100 | seq = list(sequence.upper()) |
| 101 | idx = position - 1 |
| 102 | assert seq[idx] == 'N', f"Position {position} is '{seq[idx]}', not 'N'" |
| 103 | seq[idx] = replacement.upper() |
| 104 | return ''.join(seq) |
| 105 | |
| 106 | def add_glycosite(sequence: str, position: int, flanking_context: str = "S") -> str: |
| 107 | """ |
| 108 | Introduce an N-glycosylation site by mutating a residue to Asn, |
| 109 | and ensuring X ≠ Pro and +2 = S/T. |
| 110 | |
| 111 | Args: |
| 112 | position: 1-based p |