Source profileQuality 91/100

synthetic-sciences/openscience/backend/cli/skills/biology/glycobiology/SKILL.md

glycobiology

Glycosylation site prediction and glycobiology analysis. N-glycosylation motif finding, O-glycosylation hotspot prediction, glycan structure resources. Lightweight, pure Python. For protein function queries use uniprot-database; for structure analysis use alphafold-database.

Source repository stars
3,338
Declared platforms
0
Static risk flags
2
Last source update
2026-08-26
Source checked
2026-08-26

Decision brief

What it does: where it fits

Glycosylation site prediction and glycobiology analysis. N-glycosylation motif finding, O-glycosylation hotspot prediction, glycan structure resources.

Best for

  • Predicting N-glycosylation sites from protein sequences
  • Identifying O-glycosylation hotspot regions
  • Planning glycosylation site mutagenesis experiments

Not for

  • Problem: Sequon search finds sites in cytoplasmic proteins Solution: N-glycosylation only occurs in secretory pathway proteins. Filter predictions by subcellular localization (check UniProt).
  • Problem: Known glycosylation site not detected Solution: Some rare N-glycosylation occurs at non-canonical motifs (N-X-C). Check if the site has N-P-S/T which is excluded by default.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/synthetic-sciences/openscience --skill "backend/cli/skills/biology/glycobiology"
Safe inspection promptEditorial

Inspect the Agent Skill "glycobiology" from https://github.com/synthetic-sciences/openscience/blob/95be136c06386eb18546ce94d134d2c7e66976ac/backend/cli/skills/biology/glycobiology/SKILL.md at commit 95be136c06386eb18546ce94d134d2c7e66976ac. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Quick Start

    def findnglycosylationsites(sequence): """Find N-X-S/T sequons where X != P.""" sites = [] for i in range(len(sequence) - 2): if sequence[i] == 'N' and sequence[i+1] != 'P' and sequence[i+2] in ('S', 'T'): sites.append({ 'position': i + 1, 1-based 'motif': sequence[i:i+3], 'cont…

    def findnglycosylationsites(sequence): """Find N-X-S/T sequons where X != P.""" sites = [] for i in range(len(sequence) - 2): if sequence[i] == 'N' and sequence[i+1] != 'P' and sequence[i+2] in ('S', 'T'): sites.append(…
  2. 02

    Workflow 1: Predict All Glycosylation Sites in a Protein

    Review the “Workflow 1: Predict All Glycosylation Sites in a Protein” section in the pinned source before continuing.

    Review and apply the “Workflow 1: Predict All Glycosylation Sites in a Protein” source section.
  3. 03

    Workflow 2: Compare Predicted vs UniProt-Annotated Sites

    Review the “Workflow 2: Compare Predicted vs UniProt-Annotated Sites” section in the pinned source before continuing.

    Review and apply the “Workflow 2: Compare Predicted vs UniProt-Annotated Sites” source section.
  4. 04

    When to Use This Skill

    Related Skills: For protein function and existing glycosylation annotations use uniprot-database. For protein 3D structure and site accessibility use alphafold-database. For sequence manipulation use biopython.

    Predicting N-glycosylation sites from protein sequencesIdentifying O-glycosylation hotspot regionsPlanning glycosylation site mutagenesis experiments
  5. 05

    Installation

    No additional dependencies required — this skill uses pure Python.

    No additional dependencies required — this skill uses pure Python.

Permission review

Static risk signals and limitations

Reads files

low · line 105

The documentation asks the agent to read local files, directories, or repositories.

"""Scan all sequences in a FASTA file for N-glycosylation sites."""

Network access

medium · line 236

The documentation includes network, browsing, or remote request actions.

'url': 'https://services.healthtech.dtu.dk/services/NetNGlyc-1.0/',

Network access

medium · line 243

The documentation includes network, browsing, or remote request actions.

'url': 'https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/',

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars3,338SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
synthetic-sciences/openscience
Skill path
backend/cli/skills/biology/glycobiology/SKILL.md
Commit
95be136c06386eb18546ce94d134d2c7e66976ac
License
Apache-2.0
Collected
2026-08-26
Default branch
main
View the original SKILL.md

Glycobiology: Glycosylation Analysis

Overview

Glycobiology provides lightweight computational tools for predicting and analyzing glycosylation sites in protein sequences. This skill covers N-glycosylation sequon motif finding (N-X-S/T where X is not P), O-glycosylation hotspot prediction using a sliding window serine/threonine density heuristic, glycan structure tool references, and combined glycoprotein analysis with domain mapping. All analyses use pure Python with minimal dependencies (Biopython for sequence I/O, regex for pattern matching).

When to Use This Skill

  • Predicting N-glycosylation sites from protein sequences
  • Identifying O-glycosylation hotspot regions
  • Planning glycosylation site mutagenesis experiments
  • Comparing predicted vs experimentally determined glycosylation sites
  • Annotating glycosylation in biotherapeutic protein design
  • Surveying glycan analysis tools for downstream structural studies

Related Skills: For protein function and existing glycosylation annotations use uniprot-database. For protein 3D structure and site accessibility use alphafold-database. For sequence manipulation use biopython.

Installation

uv pip install biopython numpy

No additional dependencies required — this skill uses pure Python.

Quick Start

import re

def find_n_glycosylation_sites(sequence):
    """Find N-X-S/T sequons where X != P."""
    sites = []
    for i in range(len(sequence) - 2):
        if sequence[i] == 'N' and sequence[i+1] != 'P' and sequence[i+2] in ('S', 'T'):
            sites.append({
                'position': i + 1,  # 1-based
                'motif': sequence[i:i+3],
                'context': sequence[max(0,i-3):i+6]
            })
    return sites

# Example: human EPO
epo_seq = "MGVHECPAWLWLLLSLLSLPLGLPVLGAPPRLICDSRVLERYLLEAKEAENITTGCAEHCSLNENITVPDTKVNFYAWKRMEVGQQAVEVWQGLALLSEAVLRGQALLVNSSQPWEPLQLHVDKAVSGLRSLTTLLRALGAQKEAISPPDAASAAPLRTITADTFRKLFRVYSNFLRGKLKLYTGEACRTGDR"

sites = find_n_glycosylation_sites(epo_seq)
print(f"N-glycosylation sites: {len(sites)}")
for s in sites:
    print(f"  Position {s['position']}: {s['motif']} (context: ...{s['context']}...)")

Core Capabilities

1. N-Glycosylation Motif Finding

Identify N-X-S/T sequons in protein sequences.

import re
from Bio import SeqIO

def find_n_glycosylation_sites(sequence, exclude_proline=True):
    """Find N-linked glycosylation sequons (N-X-S/T).

    Args:
        sequence: protein sequence string
        exclude_proline: if True, exclude N-P-S/T motifs (standard rule)
    """
    sites = []
    seq = str(sequence).upper()

    for i in range(len(seq) - 2):
        if seq[i] != 'N':
            continue

        x_residue = seq[i + 1]
        st_residue = seq[i + 2]

        # Standard rule: X != P
        if exclude_proline and x_residue == 'P':
            continue

        if st_residue not in ('S', 'T'):
            continue

        # Context (5 residues each side)
        context_start = max(0, i - 5)
        context_end = min(len(seq), i + 8)
        context = seq[context_start:context_end]

        sites.append({
            'position': i + 1,  # 1-based position
            'residue': seq[i],
            'motif': seq[i:i+3],
            'x_residue': x_residue,
            'acceptor': st_residue,
            'context': context,
            'context_start': context_start + 1
        })

    return sites

def scan_fasta_for_n_glyc(fasta_path):
    """Scan all sequences in a FASTA file for N-glycosylation sites."""
    results = []
    for record in SeqIO.parse(fasta_path, 'fasta'):
        sites = find_n_glycosylation_sites(str(record.seq))
        results.append({
            'id': record.id,
            'description': record.description,
            'length': len(record.seq),
            'n_sites': len(sites),
            'sites': sites,
            'density': len(sites) / len(record.seq) * 1000  # per 1000 residues
        })

    import pandas as pd
    df = pd.DataFrame([{k: v for k, v in r.items() if k != 'sites'} for r in results])
    print(f"Scanned {len(df)} sequences")
    print(f"Total N-glyc sites: {df['n_sites'].sum()}")
    print(f"Mean density: {df['density'].mean():.1f} per 1000 residues")
    return results

# Example with multiple sequences
sites = find_n_glycosylation_sites("MANLQTSPNGTLKNVTSITDA")
for s in sites:
    print(f"N{s['position']}: {s['motif']} (X={s['x_residue']}, acceptor={s['acceptor']})")

2. O-Glycosylation Hotspot Prediction

Identify regions enriched in serine/threonine that may be O-glycosylated.

import numpy as np

def predict_o_glycosylation_hotspots(sequence, window_size=20, threshold=0.4,
                                       exclude_near_proline=True):
    """Predict O-glycosylation hotspots using S/T density heuristic.

    O-glycosylation preferentially occurs in S/T-rich regions, often near
    proline residues. This heuristic identifies candidate regions.

    Args:
        sequence: protein sequence string
        window_size: sliding window size
        threshold: minimum S/T fraction to call a hotspot
        exclude_near_proline: if True, downweight S/T not near P
    """
    seq = str(sequence).upper()
    n = len(seq)

    if n < window_size:
        return []

    # Calculate S/T density in sliding windows
    densities = []
    for i in range(n - window_size + 1):
        window = seq[i:i + window_size]
        st_count = window.count('S') + window.count('T')
        density = st_count / window_size
        densities.append(density)

    densities = np.array(densities)

    # Find hotspot regions
    hotspots = []
    in_hotspot = False
    start = 0

    for i, d in enumerate(densities):
        if d >= threshold and not in_hotspot:
            start = i
            in_hotspot = True
        elif d < threshold and in_hotspot:
            hotspots.append({
                'start': start + 1,  # 1-based
                'end': i + window_size,
                'length': i + window_size - start,
                'max_density': float(densities[start:i].max()),
                'mean_density': float(densities[start:i].mean()),
                'region': seq[start:i + window_size]
            })
            in_hotspot = False

    if in_hotspot:
        hotspots.append({
            'start': start + 1,
            'end': n,
            'length': n - start,
            'max_density': float(densities[start:].max()),
            'mean_density': float(densities[start:].mean()),
            'region': seq[start:]
        })

    # Individual S/T residues in hotspots
    all_st_sites = []
    for hs in hotspots:
        region_start = hs['start'] - 1
        region_seq = hs['region']
        for j, aa in enumerate(region_seq):
            if aa in ('S', 'T'):
                pos = region_start + j + 1
                # Check proline neighbors
                has_nearby_P = False
                for k in range(-3, 4):
                    check_pos = region_start + j + k
                    if 0 <= check_pos < n and seq[check_pos] == 'P':
                        has_nearby_P = True
                        break

                all_st_sites.append({
                    'position': pos,
                    'residue': aa,
                    'in_hotspot': True,
                    'near_proline': has_nearby_P
                })

    print(f"O-glycosylation hotspots: {len(hotspots)}")
    for hs in hotspots:
        print(f"  Pos {hs['start']}-{hs['end']}: density={hs['max_density']:.2f}, "
              f"{hs['region'][:30]}{'...' if len(hs['region'])>30 else ''}")
    print(f"Candidate S/T residues: {len(all_st_sites)}")

    return hotspots, all_st_sites

3. Glycan Structure Resources

Curated list of tools for glycan structure analysis and prediction.

GLYCAN_TOOLS = {
    'NetNGlyc': {
        'url': 'https://services.healthtech.dtu.dk/services/NetNGlyc-1.0/',
        'description': 'Neural network prediction of N-glycosylation sites',
        'input': 'Protein sequence (FASTA)',
        'output': 'N-glycosylation probability per Asn',
        'note': 'More accurate than motif-only scanning; considers sequence context'
    },
    'NetOGlyc': {
        'url': 'https://services.healthtech.dtu.dk/services/NetOGlyc-4.0/',
        'description': 'Neural network prediction of mucin-type O-glycosylation',
        'input': 'Protein sequence (FASTA)',
        'output': 'O-glycosylation probability per Ser/Thr',
        'note': 'Version 4.0 trained on O-GalNAc glycoproteomics data'
    },
    'GlycoWorkbench': {
        'url': 'https://code.google.com/archive/p/glycoworkbench/',
        'description': 'Glycan structure drawing and MS annotation',
        'input': 'Mass spectrometry data',
        'output': 'Glycan structure assignments'
    },
    'GLYCAM-Web': {
        'url': 'https://glycam.org/',
        'description': 'Glycan 3D structure building and MD simulation',
        'input': 'Glycan sequence (IUPAC condensed)',
        'output': '3D coordinates (PDB), AMBER parameters'
    },
    'Glycoshield-MD': {
        'url': 'https://github.com/GlycoSHIELD-MD/GlycoSHIELD-MD',
        'description': 'Model glycan shields on protein structures for MD',
        'input': 'Protein PDB + glycosylation sites',
        'output': 'Glycosylated protein structure'
    },
    'SweetTalk': {
        'url': 'https://glycoproteome.expasy.org/sweettalk/',
        'description': 'Glycoprotein structure visualization',
        'input': 'UniProt ID',
        'output': 'Interactive glycoprotein 3D viewer'
    }
}

def list_glycan_tools():
    """Print available glycan analysis tools."""
    for name, info in GLYCAN_TOOLS.items():
        print(f"\n{name}")
        print(f"  URL: {info['url']}")
        print(f"  Description: {info['description']}")
        if 'note' in info:
            print(f"  Note: {info['note']}")

4. Glycoprotein Analysis

Combined N/O glycosylation analysis with domain mapping.

def analyze_glycoprotein(sequence, protein_name='protein',
                          uniprot_sites=None):
    """Comprehensive glycosylation analysis.

    Args:
        sequence: protein sequence
        protein_name: name for reporting
        uniprot_sites: dict of known sites from UniProt
                       {'N_glyc': [positions], 'O_glyc': [positions]}
    """
    seq = str(sequence).upper()
    print(f"=== Glycoprotein Analysis: {protein_name} ===")
    print(f"Length: {len(seq)} residues")

    # N-glycosylation
    n_sites = find_n_glycosylation_sites(seq)
    print(f"\nN-glycosylation sites (sequon motif): {len(n_sites)}")
    for s in n_sites:
        print(f"  N{s['position']}: {s['motif']}")

    # O-glycosylation hotspots
    o_hotspots, o_sites = predict_o_glycosylation_hotspots(seq)

    # Comparison with UniProt annotations
    if uniprot_sites:
        known_n = set(uniprot_sites.get('N_glyc', []))
        predicted_n = set(s['position'] for s in n_sites)

        tp = known_n & predicted_n
        fp = predicted_n - known_n
        fn = known_n - predicted_n

        print(f"\nComparison with UniProt annotations:")
        print(f"  True positives (predicted & annotated): {len(tp)}")
        print(f"  False positives (predicted, not annotated): {len(fp)}")
        print(f"  False negatives (annotated, not predicted): {len(fn)}")

        if fn:
            print(f"  Missed sites: {sorted(fn)}")
            for pos in fn:
                context = seq[max(0,pos-4):pos+5]
                print(f"    N{pos}: ...{context}... (may have N-P-S/T or non-standard motif)")

    # Summary
    print(f"\nSummary:")
    print(f"  N-glyc sites: {len(n_sites)}")
    print(f"  O-glyc hotspots: {len(o_hotspots)}")
    print(f"  Total candidate O-glyc S/T: {len(o_sites)}")
    print(f"  Glycosylation density: {(len(n_sites) + len(o_sites)) / len(seq) * 100:.1f}%")

    return {
        'n_glyc_sites': n_sites,
        'o_glyc_hotspots': o_hotspots,
        'o_glyc_sites': o_sites
    }

Typical Workflows

Workflow 1: Predict All Glycosylation Sites in a Protein

sequence = "MANLQTSPNGTLKNVTSITDANLTQSPNNFTLRNITSANDTVTQSTPNVTQLNVSQSTPNVTQLNVSQST"
results = analyze_glycoprotein(sequence, protein_name='MyProtein')

Workflow 2: Compare Predicted vs UniProt-Annotated Sites

sequence = "MGVHECPAWLWLLLSLLSLPLGLPVLGAPPRLICDSRVLERYLLEAKEAENITTGCAEHCSLNENITVPDT"
known = {'N_glyc': [24, 38, 83], 'O_glyc': []}  # Known from UniProt
results = analyze_glycoprotein(sequence, protein_name='EPO', uniprot_sites=known)

Best Practices

  1. N-glycosylation prediction — sequon motif (N-X-S/T, X!=P) is necessary but not sufficient; not all sequons are glycosylated; use NetNGlyc for probability-based prediction
  2. O-glycosylation — much harder to predict than N-glyc; the S/T density heuristic identifies candidate regions but has high false positive rate; use NetOGlyc for better accuracy
  3. Validate with UniProt — always cross-reference predictions with experimentally verified glycosylation annotations in UniProt
  4. Signal peptide — glycosylation occurs in the ER/Golgi; ensure the protein has a signal peptide (positions are relative to mature protein in databases)
  5. Structural context — glycosylation requires surface accessibility; use AlphaFold to check if predicted sites are surface-exposed
  6. Biotherapeutics — for antibody/protein drug design, N-glycosylation in Fc regions (N297 in IgG) is critical for effector function

Troubleshooting

Problem: Sequon search finds sites in cytoplasmic proteins Solution: N-glycosylation only occurs in secretory pathway proteins. Filter predictions by subcellular localization (check UniProt).

Problem: Known glycosylation site not detected Solution: Some rare N-glycosylation occurs at non-canonical motifs (N-X-C). Check if the site has N-P-S/T which is excluded by default.

Problem: Too many O-glycosylation hotspots Solution: Increase the density threshold (e.g., 0.5). Focus on regions that are both S/T-rich and in extracellular domains.

Resources

Frequently asked questions

What to verify before installation and use

What does the glycobiology source document cover?

Glycosylation site prediction and glycobiology analysis. N-glycosylation motif finding, O-glycosylation hotspot prediction, glycan structure resources.

How do I install glycobiology?

The source record exposes this install command: npx skills add https://github.com/synthetic-sciences/openscience --skill "backend/cli/skills/biology/glycobiology". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged read-files, network in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 9834,478

K-Dense-AI/scientific-agent-skills

dask

Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.

Computed 9834,478

K-Dense-AI/scientific-agent-skills

neurokit2

Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.

Computed 98269

Aperivue/medsci-skills

make-figures

Generate publication-ready figures and visual abstracts for medical research papers. Supports ROC curves, forest plots, CONSORT/STARD/PRISMA flow diagrams, calibration plots, Kaplan-Meier curves, Bland-Altman plots, confusion matrices, pipeline diagrams, and journal-specific visual/graphical abstracts (python-pptx template-based).

Computed 9734,478

K-Dense-AI/scientific-agent-skills

biopython

Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.