Agent skill

Bio Proteomics Ptm Analysis

by GPTomics in GPTomics/bioSkills

Frames PTM/phosphoproteomics analysis as three stacked inference layers on a biased enrichment - chemistry selection, site localization (FLR), and protein-level-adjusted quantification with…

MITAuto-check passedResearch & Science

Install Bio Proteomics Ptm Analysis

skills CLI
$ npx skills add GPTomics/bioSkills --skill bio-proteomics-ptm-analysis -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install GPTomics/bioSkills bio-proteomics-ptm-analysis --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/proteomics/ptm-analysis .claude/skills/bio-proteomics-ptm-analysis && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
bio-proteomics-ptm-analysis
GitHub stars
1.2k
Used in
1 other repo
Token cost
~6.9k tokens
SKILL.md length
2,700 words
Files
3
Skills in repo
559
Repo updated
First seen
Licence
MIT

At a glance

Frames PTM/phosphoproteomics analysis as three stacked inference layers on a biased enrichment - chemistry selection, site localization (FLR), and protein-level-adjusted quantification with…

  • Works in 4 steps: Enrichment IS the experiment, and the… → Identifying a peptide is NOT localizing… → A change in phosphopeptide abundance is… → …
  • Localizing and quantifying phosphorylation
  • SKILL.md covers Version Compatibility, The Single Most Important…, Tool Taxonomy and Decision Tree by Scenario, plus 9 more sections
  • Runs Python scripts from its folder; calls pip

What it does

Bio Proteomics Ptm Analysis is an agent skill from GPTomics/bioSkills. Frames PTM/phosphoproteomics analysis as three stacked inference layers on a biased enrichment - chemistry selection, site localization (FLR), and protein-level-adjusted quantification with MSstatsPTM - plus kinase-activity and functional triage. Covers MaxQuant Phospho (STY)Sites multiplicity expansion, localization-probability filtering (class I, Ascore, ptmRS, DIA EG.PTMLocalizationProbabilities, DIA-NN PTM.Site.Confidence), false localization rate (LuciPHOr/DeepFLR), motif analysis with experiment-matched…

Its SKILL.md is about 6.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `examples/phospho_analysis.py` and `usage-guide.md`).

It sits in Research & Science, covering Internationalization and Bioinformatics. The repository describes itself as: a set of SKILLS.md for doing bioinformatics with agents like claude code. The licence is MIT.

When your agent uses it

  • Localizing and quantifying phosphorylation
  • Glycosylation sites from enrichment-based runs and deciding whether an apparent site change is real after subtracting protein abundance

Example prompts

  • “Use the bio-proteomics-ptm-analysis skill to frame PTM/phosphoproteomics analysis as three stacked inference layers on a biased enrichment -…”
  • “/bio-proteomics-ptm-analysis”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Enrichment IS the experiment, and the chemistry is a filter confounded with biology. The data only contain what the chemistry captured…
  2. Identifying a peptide is NOT localizing the modification. A phosphopeptide with two S/T and one phosphate has isobaric positional isomers…
  3. A change in phosphopeptide abundance is NOT a change in phosphorylation (the biggest quant trap). Observed PTM signal ~ (site occupancy) x…
  4. Most identified sites have no known function. Fewer than ~5% of phosphosites are functionally annotated; a fold-change alone says nothing…

What it can do on your machine

Read from SKILL.md and the folder at commit d91ed3d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Bio Proteomics Ptm Analysis loads about 6.9k tokens when it runs. Until then it costs about 259 tokens; SKILL.md has 2,700 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~259
When it runs · the whole SKILL.md, loaded when a task matches
~6.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from GPTomics/bioSkills at commit d91ed3d, republished under its MIT licence (© GPTomics). 2,700 words, ~6,930 tokens.

Download SKILL.mdSave it as .claude/skills/bio-proteomics-ptm-analysis/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
bio-proteomics-ptm-analysis
description
Frames PTM/phosphoproteomics analysis as three stacked inference layers on a biased enrichment - chemistry selection, site localization (FLR), and protein-level-adjusted quantification with MSstatsPTM - plus kinase-activity and functional triage. Covers MaxQuant Phospho (STY)Sites multiplicity expansion, localization-probability filtering (class I, Ascore, ptmRS, DIA EG.PTMLocalizationProbabilities, DIA-NN PTM.Site.Confidence), false localization rate (LuciPHOr/DeepFLR), motif analysis with experiment-matched backgrounds, diGly/K-GG ubiquitin specificity, acetyl/glyco traps, and KSEA/PTM-SEA. Use when localizing and quantifying phosphorylation, acetylation, ubiquitination, or glycosylation sites from enrichment-based runs and deciding whether an apparent site change is real after subtracting protein abundance. Peptide ID and open/variable-mod search is peptide-identification; underlying protein-level quant is quantification and differential-abundance; DIA acquisition mechanics is dia-analysis.
tool_type
mixed
primary_tool
MSstatsPTM

Version Compatibility

Reference examples tested with: MSstatsPTM 2.4+, pandas 2.2+, numpy 1.26+, scipy 1.12+

Before using code patterns, verify installed versions match. If versions differ:

  • Python: pip show <package> then help(module.function) to check signatures
  • R: packageVersion('<pkg>') then ?function_name to verify parameters

If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying.

PTM and Phosphoproteomics Analysis -- Three Inference Layers Stacked on a Biased Extraction

"Find the regulated phosphosites in my enriched samples" -> Localize each modification, then test whether its abundance change survives subtracting the protein-level change -- because a PTM result is three separate inferences (enrichment, localization, quantification) and each fails silently if the layer below is treated as solved.

  • R: MSstatsPTM::groupComparisonPTM() for protein-adjusted site testing (the load-bearing tool)
  • Python: pandas to expand MaxQuant Phospho (STY)Sites multiplicity and filter localization probability
  • R: KSEAapp / PTM-SEA (ssGSEA2.0) for kinase-activity inference from the site fold-changes

Scope: this skill OWNS enrichment-chemistry framing, site localization and FLR, multiplicity-resolved site quant, protein-level adjustment, motif analysis, and kinase-activity inference. Peptide identification and open/variable-mod search route to peptide-identification; the underlying protein-level (unenriched) quant routes to quantification and differential-abundance; DIA acquisition mechanics route to dia-analysis. OUT OF SCOPE: intact-glycopeptide glycan-composition search (pGlyco3/MSFragger-Glyco) and absolute occupancy from three-ratio SILAC are noted but not implemented here.

The Single Most Important Modern Insight -- A PTM Result Is Three Inferences, Not One

  1. Enrichment IS the experiment, and the chemistry is a filter confounded with biology. The data only contain what the chemistry captured. TiO2 and Fe-IMAC give partially-overlapping phosphoproteomes; anti-K-GG enriches ubiquitin, NEDD8, and ISG15 indistinguishably; a lectin reports only its cognate glycoforms. A between-method or between-lab "biological difference" must FIRST be excluded as a chemistry artifact before it is called biology.
  2. Identifying a peptide is NOT localizing the modification. A phosphopeptide with two S/T and one phosphate has isobaric positional isomers of identical precursor mass and identical peptide-level score; the localization is a SECOND inference decided only by site-determining fragment ions, with its own error rate (false localization rate, FLR). Target-decoy peptide FDR cannot estimate FLR: a wrong localization is the correct sequence with the mod one residue over, not a decoy sequence (Fermin 2013). A 1% peptide FDR does NOT yield a 1% site FDR -- report them separately.
  3. A change in phosphopeptide abundance is NOT a change in phosphorylation (the biggest quant trap). Observed PTM signal ~ (site occupancy) x (protein abundance) x (enrichment/ionization factor), so log2FC(PTM_observed) = log2FC(occupancy) + log2FC(protein). Without a paired global (unenriched) proteome run on the SAME samples to subtract log2FC(protein), every protein-abundance change masquerades as a regulated site. Because co-regulated proteins move together, the false positives are pathway-coherent and look biologically convincing -- the worst kind of artifact. This is the entire reason MSstatsPTM exists (Kohler 2023).
  4. Most identified sites have no known function. Fewer than ~5% of phosphosites are functionally annotated; a fold-change alone says nothing about regulatory relevance. Functional triage (conservation, stoichiometry, Ochoa functional score, confident kinase assignment) is a separate fourth layer on top of the quant (Ochoa 2020).

Bottom line: report THREE numbers, not one -- peptide/PSM FDR, per-site localization probability with its threshold, and an empirically estimated global FLR -- and never call a site "regulated" from a phospho-only run without protein-level adjustment.

Tool Taxonomy

Enrichment chemistry (phospho)
MethodCitationMechanism / biasWhen
TiO2 (MOAC)Larsen 2005Metal-oxide Lewis-acid surface; skews mono-phospho; needs hydroxy-acid additiveGeneral single-method depth; EasyPhos basis
Fe(III)-IMACRuprecht 2015Chelated Fe3+ coordinates phosphate; multidentate avidity skews MULTI-phosphoHierarchical/processive signaling; the mono/multi divergence is STRONGEST here vs TiO2
Ti4+/Zr4+-IMACMatheron 2014Chelated metal ION on immobilized phosphonate (NOT bulk oxide); bias vs TiO2 is SMALLModern automated workflows; metal identity matters more than IMAC-vs-MOAC
SIMAC (sequential)Thingholm 2008IMAC acidic elution = mono, basic = multi, then TiO2 on mono fractionRecovering both populations IMAC alone biases

Naming trap: Ti4+/Zr4+-IMAC (chelated ions) is DIFFERENT chemistry from TiO2/ZrO2 (bulk oxide). Glycolic acid is the modern additive standard (load 80% ACN / 5% TFA / 0.1 M glycolic acid).

Other-PTM enrichment and identity traps
PTMReagent / massCitationHeadline trap
Ubiquitin (diGly, K-GG, +114.0429)Anti-K-GG antibodyXu 2010; Kim 2011NOT ubiquitin-specific: K-GG = ubiquitin + NEDD8 (~6% at basal) + ISG15 (rises under interferon). UbiSite (Akimov 2018) is the ubiquitin-specific alternative
Ubiquitin alkylation artifactuse chloroacetamideNielsen 2008Iodoacetamide creates a +114.0429 lysine adduct mimicking ubiquitination; chloroacetamide does not
Acetyl-K (+42.0106)Anti-acetyllysine cocktailSvinkina 2015Isobaric with trimethyl +42.0470 (0.0364 Da, needs high-res); acetyl blocks trypsin -> allow >=4 missed cleavages
Glyco N-linkedPNGase F (released) or intactRiley 2021Released loses the glycan; N->D tag +0.984 is isobaric with deamidation -- use PNGase F in H2-18O (+2.988) to disambiguate; N-X-S/T (X!=Pro) sequon is necessary not sufficient
Localization scoring
ToolCitationMechanismNote
AscoreBeausoleil 2006Cumulative binomial of site-determining ions; DIFFERENCE between best and 2nd-best localization, peak-depth sweepAscore >=19 ~ p 0.01 PAIRWISE per-PSM, NOT a dataset FLR
PhosphoRS / ptmRSTaus 2011Per-isomer cumulative binomial, tolerance-aware (correct for high-res), per-site probs sum to 100%In Proteome Discoverer
PTMProphetShteynberg (TPP)EM/Bayesian mixture; per-site probs combinable across PSMs to a global FLRTPP/FragPipe
MaxQuant Localization probCox/Mann (Andromeda)Normalized posterior on the site (fixed peak depth)column Localization prob; >=0.75 = class I
DIA localizationBekker-Jensen 2020XIC peak-shape correlation substitutes for missing precursor isolationSpectronaut EG.PTMLocalizationProbabilities; DIA-NN PTM.Site.Confidence
DeepFLRZong 2023Deep-learning spectrum predictor + target-decoy FLRSOTA direction; DDA + DIA
Site-FDR / FLR (the layer most pipelines skip)
ToolCitationMechanism
LuciPHOrFermin 2013 (MCP)Decoy localizations on non-modifiable residues; rate decoys win = empirical FLR
LuciPHOr2Fermin 2015 (Bioinformatics)Generic-PTM successor (do NOT swap the two journals)
Decoy amino-acid FLRRamsbottom/Jones 2022Add a non-modifiable residue to the candidate set; global FLR ~ decoy-site-hits / target-site-hits, frequency-corrected
Kinase-activity inference
ToolCitationMechanismLimitation
KSEACasado 2013z-score of a kinase's substrate fold-changessqrt(m) favors well-annotated kinases; inherits PhosphoSitePlus bias
PTM-SEA / PTMsigDBKrug 2019ssGSEA2.0 on site-level +/-7 flanking-sequence signaturesrobust to isoform drift; PERT signatures score "looks like EGF stim"
RoKAIYilmaz 2021Network-smooth profiles before z-score so unobserved sites borrow neighbor signalattacks missingness; feeds KSEA

Benchmark result (Mueller-Dott 2025): across ~19 methods, simple z-score (KSEA/RoKAI) matched or beat sophisticated methods. Performance is PRIOR-limited, not algorithm-limited; all methods inherit PhosphoSitePlus curation bias toward CK2/CDK1/PKA/MAPK, and the dark kinome is structurally invisible. Spend effort on the substrate prior, not the estimator.

Decision Tree by Scenario

ScenarioRecommendedWhy
Phospho-only run, want regulated sitesAcquire a PAIRED global proteome -> MSstatsPTM groupComparisonPTM -> require significance in ADJUSTED.ModelUnadjusted site changes are confounded with protein abundance
No global proteome availableReport site changes as UNADJUSTED and flag the confound explicitlyCannot separate occupancy from abundance; do not claim "regulation"
Between-method phospho differenceSuspect chemistry (TiO2 vs Fe-IMAC mono/multi bias) BEFORE biologyEnrichment is a confounded filter
Multiply-phospho peptides presentLocalize per-site (Ascore/ptmRS) AND report empirical global FLRPeptide FDR != site FDR
"Ubiquitination" sitesConfirm chloroacetamide alkylation; treat K-GG as ub + NEDD8 + ISG15; consider UbiSiteIodoacetamide artifact + NEDD8/ISG15 confound
Which kinases moved?KSEA or PTM-SEA with a curated prior; do not over-interpret dark-kinome silencePrior-limited; simple z-score suffices
Motif logo from the hitsBackground = experiment-matched S/T/Y from the identified proteins (NOT whole proteome)Whole-proteome background rediscovers disordered-region composition bias

Default when uncertain: localize with the search engine's probability (class I >=0.75), expand MaxQuant multiplicity, run MSstatsPTM with a paired global proteome, and call only ADJUSTED.Model hits regulated.

Expand the MaxQuant Site Table Before Any Quant

Goal: Produce a long, multiplicity-resolved, class-I-filtered phosphosite intensity matrix from Phospho (STY)Sites.txt.

Approach: Each site row spreads its quant across Intensity___1/___2/___3 (singly/doubly/triply-phospho forms, THREE underscores); the collapsed base Intensity mixes phospho-states and can fake dephosphorylation. Drop Reverse/contaminant, filter Localization prob, then melt the per-multiplicity columns into rows.

python
import pandas as pd
import numpy as np

# Filename has a SPACE in the modification name; accept either form.
phospho = pd.read_csv('Phospho (STY)Sites.txt', sep='\t', low_memory=False)

# Newer MaxQuant uses 'Potential contaminant'; older uses 'Contaminant'.
contaminant_col = 'Potential contaminant' if 'Potential contaminant' in phospho.columns else 'Contaminant'
phospho = phospho[(phospho['Reverse'] != '+') & (phospho[contaminant_col] != '+')]

CLASS_I_PROB = 0.75  # Olsen 2006 class-I convention; comparability standard, not a calibrated FLR
phospho = phospho[phospho['Localization prob'] >= CLASS_I_PROB].copy()

gene = phospho['Gene names'].where(phospho['Gene names'].notna(), phospho['Protein'])
phospho['site_id'] = gene.str.split(';').str[0] + '_' + phospho['Amino acid'] + phospho['Position'].astype(int).astype(str)

# Multiplicity columns carry THREE underscores: collapsing them mixes phospho-states.
mult_cols = [c for c in phospho.columns if '___' in c and c.split('___')[-1] in {'1', '2', '3'} and c.startswith('Intensity')]
long = phospho.melt(id_vars=['site_id', 'Amino acid', 'Position', 'Localization prob'], value_vars=mult_cols, var_name='run_multiplicity', value_name='intensity')
long['multiplicity'] = long['run_multiplicity'].str.split('___').str[-1]
long['run'] = long['run_multiplicity'].str.replace(r'___[123]$', '', regex=True).str.replace('Intensity ', '', regex=False)
long = long[long['intensity'] > 0]
long['log2_intensity'] = np.log2(long['intensity'])

Protein-Level Adjustment with MSstatsPTM

Goal: Decide whether each site change is real after subtracting the matched protein-abundance change.

Approach: MSstatsPTM carries TWO datasets -- a PTM dataset (enriched) and a PROTEIN dataset (global/unenriched). groupComparisonPTM fits independent linear models to each and returns a list of THREE: PTM.Model (unadjusted), PROTEIN.Model, and ADJUSTED.Model. The adjustment is dFC_adj = dFC_PTM - dFC_protein with SE_adj = sqrt(SE_PTM^2 + SE_protein^2), so adjustment ADDS uncertainty -- a site can be significant unadjusted yet lose significance after adjustment. A confident regulation call requires significance in ADJUSTED.Model.

r
library(MSstatsPTM)

# Converters are <Tool>toMSstatsPTMFormat and return a list with $PTM and $PROTEIN.
# MaxQtoMSstatsPTMFormat reads the MaxQuant 'evidence.txt' (NOT the Phospho (STY)Sites
# table -- the pandas multiplicity-expansion above is a SEPARATE workflow); the FASTA maps
# peptides back to site coordinates. Supply BOTH the enriched evidence and the global
# proteinGroups; without the protein dataset there is nothing to adjust against.
# Arg-name note: the FASTA argument is `fasta_path` in current MSstatsPTM; older builds may
# differ -- run `?MaxQtoMSstatsPTMFormat` to confirm before relying on it.
input <- MaxQtoMSstatsPTMFormat(
  evidence = read.table('evidence.txt', sep = '\t', header = TRUE, quote = ''),
  annotation = read.csv('annotation_ptm.csv'),
  fasta_path = 'uniprot_human.fasta',
  fasta_protein_name = 'uniprot_ac',
  proteinGroups = read.table('proteinGroups.txt', sep = '\t', header = TRUE, quote = ''),
  annotation_protein = read.csv('annotation_protein.csv'),
  mod_id = '\\(Phospho \\(STY\\)\\)',
  which_proteinid_ptm = 'Proteins',
  use_unmod_peptides = FALSE
)

summarized <- dataSummarizationPTM(input, use_log_file = FALSE)
# LabelFree run: data.type = 'LF' (use 'TMT' for isobaric); contrast.matrix defaults to
# full pairwise. groupComparisonPTM has NO `model` argument -- it always fits independent
# PTM and PROTEIN models, then adjusts.
result <- groupComparisonPTM(summarized, data.type = 'LF')

# Three models; the adjusted one is the deliverable.
adjusted <- result$ADJUSTED.Model
regulated <- adjusted[!is.na(adjusted$adj.pvalue) & adjusted$adj.pvalue < 0.05 & abs(adjusted$log2FC) > 1, ]

# How much of each call was protein-driven: compare PTM.Model vs ADJUSTED.Model.

Motif Analysis with the Correct Background

Goal: Find kinase/writer motifs around the modified residue without rediscovering amino-acid composition bias.

Approach: Use the Sequence window (+/-15 residues, 31-mer) MaxQuant already provides, centered on the site. The background MUST be an experiment-matched S/T/Y set drawn from the identified proteins (or a central-residue-preserving shuffle), NOT the whole proteome or IUPAC-random -- those just report the composition of phospho-rich disordered regions. motif-x and MoMo p-values are only valid when the background is built this way.

python
from collections import Counter

# 'Sequence window' is a 31-mer (+/-15) centered on the modified residue.
WINDOW_HALF = 7  # +/-7 flanking is the standard kinase-motif window
foreground = [w[15 - WINDOW_HALF: 16 + WINDOW_HALF] for w in confident['Sequence window'].dropna() if len(w) >= 31]

# Background: same-residue windows from the matched dataset, NOT the whole proteome.
def position_frequencies(windows):
    counts = {i: Counter() for i in range(-WINDOW_HALF, WINDOW_HALF + 1)}
    for w in windows:
        for offset, aa in zip(range(-WINDOW_HALF, WINDOW_HALF + 1), w):
            if aa not in '_X':
                counts[offset][aa] += 1
    return counts

For a publication-grade enrichment logo, hand the foreground and a matched background to a dedicated tool (motif-x / MoMo) and render with data-visualization/sequence-logos.

A Note on Home-Grown Ascore

The function below is an ILLUSTRATIVE approximation, NOT real Ascore. Real Ascore (Beausoleil 2006) competes the best localization against the second-best, sweeps peak depth 1-10 per 100 Th, and restricts to site-determining ions -- none of which this captures. Use the search engine's own localization probability (MaxQuant Localization prob, ptmRS, PTMProphet) for real work, or pyOpenMS AScore (introspect the exact API before relying on it). The home-grown form is here only to show the binomial intuition.

python
import numpy as np
from scipy.stats import binom

def illustrative_localization_score(matched_site_ions, total_ions, depth_p=0.04):
    '''Binomial intuition only; NOT Ascore (no best-vs-second competition or depth sweep).'''
    if total_ions == 0 or matched_site_ions == 0:
        return 0.0
    p_random = 1 - binom.cdf(matched_site_ions - 1, total_ions, depth_p)
    return -10 * np.log10(p_random) if p_random > 0 else 100.0

Per-Method Failure Modes

Skipping protein-level adjustment

Trigger: Differential testing on a phospho-only run with no paired global proteome. Mechanism: log2FC(PTM_observed) = log2FC(occupancy) + log2FC(protein); the two terms are inseparable. Symptom: Pathway-coherent "regulated sites" that are pure protein-abundance changes (cyclins/histones in cell cycle, stabilized substrates under drug). Fix: Run a matched global proteome and adjust via MSstatsPTM; route the protein-level quant to quantification.

Show full SKILL.md (1,100 more words)Show less
Collapsing the MaxQuant multiplicity

Trigger: Quantifying on base Intensity instead of Intensity___1/___2/___3. Mechanism: The collapsed column mixes singly/doubly/triply-phospho forms of the same site. Symptom: The singly-phospho form dropping as a neighbor gets phosphorylated reads as dephosphorylation. Fix: Expand multiplicity to long form (Perseus "Expand site table" or the melt above) before any stats.

Treating identification as localization

Trigger: Reporting sites at peptide FDR without a localization threshold. Mechanism: Isobaric positional isomers share precursor mass and peptide score; CID/ion-trap neutral loss (-98 Da) starves site-determining ions. Symptom: A 1% peptide FDR result with a much higher true site error. Fix: Filter localization probability (class I >=0.75), report an empirical global FLR (LuciPHOr/DeepFLR), prefer HCD/EThcD.

diGly read as ubiquitin

Trigger: Calling the K-GG proteome "ubiquitination". Mechanism: NEDD8 and ISG15 share the LRLRGG C-terminus and leave the identical +114.0429 remnant; iodoacetamide adds a fourth source. Symptom: Inflated/false ubiquitin sites, worst under interferon (ISG15) or with iodoacetamide. Fix: Chloroacetamide alkylation; treat K-GG as ub+NEDD8+ISG15; use UbiSite for ubiquitin-specific mapping.

Motif logo against the wrong background

Trigger: Whole-proteome or IUPAC-random background. Mechanism: Phosphosites sit in disordered, Ser/Pro/acidic-rich regions; that composition dominates the enrichment. Symptom: "Enriched" proline/serine motifs that are region bias, not kinase preference. Fix: Experiment-matched S/T/Y background or central-residue-preserving shuffle (MoMo default).

Over-reading kinase-activity output

Trigger: Naming the top KSEA/atlas kinase as the responsible enzyme. Mechanism: Substrate priors are PhosphoSitePlus-curated (CK2/CDK1/PKA/MAPK heavy); atlas hits are biochemical preference ignoring expression/localization/timing. Symptom: Always-the-usual-suspects kinase lists; dark-kinome activity invisible. Fix: Use a curated prior, report z-scores with their substrate counts, do not infer absence from silence.

Quantitative Thresholds

ThresholdSourceRationale
Localization prob class I >= 0.75Olsen 2006Best site holds >3x the posterior of all alternatives (single-phospho); a comparability standard, not a calibrated error rate
Class II 0.5-0.75; class III 0.25-0.5Olsen 2006Partial / poor localization
Ascore >= 19 (p~0.01); loose >13Beausoleil 2006Pairwise per-PSM best-vs-next confidence; NOT a dataset FLR
DIA directDIA localization >= 0.99Bekker-Jensen 2020Stricter than library-based (0.75) to match DDA error rates
DIA-NN site matrix 0.90 / 0.99DIA-NN docsphosphosites_90/99.tsv; class-I-equivalent stringency is HIGHER than MaxQuant 0.75
Acetyl missed cleavages >= 4--Acetyl-K blocks trypsin; pair LysC + trypsin
Kinase atlas motif match >= 90th percentileJohnson 2023Strong motif preference, NOT proof the kinase acted
Report peptide FDR and site FLR separatelyFermin 20131% peptide FDR != 1% site FDR; true site error is typically several-fold higher

Common Errors

Error / symptomCauseSolution
FileNotFoundError on the sites tableFilename has a SPACE: Phospho (STY)Sites.txtAccept either spaced or no-space form
Apparent dephosphorylation that is not realQuantified base Intensity, mixing multiplicitiesUse Intensity___1/___2/___3 (three underscores)
KeyError / NaN on Gene namesColumn is FASTA-dependent, absent without gene annotationGuard with .notna() and fall back to Protein
All sites "regulated" and pathway-coherentNo protein-level adjustmentRequire significance in MSstatsPTM ADJUSTED.Model
PTM.Q.Value / PhosphoSite not found (DIA-NN)Those columns do not existUse PTM.Site.Confidence and Site.Occupancy.Probabilities
False "ubiquitination" sitesIodoacetamide +114.0429 lysine artifactAlkylate with chloroacetamide
Acetyl confused with trimethyl+42.0106 vs +42.0470 isobaric at nominal massRequire high-res MS; check 0.0364 Da split

References

  • Beausoleil SA, Villen J, Gerber SA, Rush J, Gygi SP. A probability-based approach for high-throughput protein phosphorylation analysis and site localization. Nat Biotechnol 2006;24(10):1285-1292.
  • Taus T, Kocher T, Pichler P, et al. Universal and confident phosphorylation site localization using phosphoRS. J Proteome Res 2011;10(12):5354-5362.
  • Olsen JV, Blagoev B, Gnad F, et al. Global, in vivo, and site-specific phosphorylation dynamics in signaling networks. Cell 2006;127(3):635-648.
  • Fermin D, Walmsley SJ, Gingras AC, Choi H, Nesvizhskii AI. LuciPHOr: algorithm for phosphorylation site localization with false localization rate estimation using modified target-decoy approach. Mol Cell Proteomics 2013;12(11):3409-3419.
  • Fermin D, Avtonomov D, Choi H, Nesvizhskii AI. LuciPHOr2: site localization of generic PTMs from tandem mass spectrometry data. Bioinformatics 2015;31(7):1141-1143.
  • Bekker-Jensen DB, Bernhardt OM, Hogrebe A, et al. Rapid and site-specific deep phosphoproteome profiling by data-independent acquisition without the need for spectral libraries. Nat Commun 2020;11:787.
  • Kohler D, Tsai TH, Verschueren E, et al. MSstatsPTM: Statistical Relative Quantification of Posttranslational Modifications in Bottom-Up Mass Spectrometry-Based Proteomics. Mol Cell Proteomics 2023;22(1):100477.
  • Ochoa D, Jarnuczak AF, Vieitez C, et al. The functional landscape of the human phosphoproteome. Nat Biotechnol 2020;38(3):365-373.
  • Casado P, Rodriguez-Prados JC, Cosulich SC, et al. Kinase-Substrate Enrichment Analysis Provides Insights into the Heterogeneity of Signaling Pathway Activation in Leukemia Cells. Sci Signal 2013;6(268):rs6.
  • Krug K, Mertins P, Zhang B, et al. A Curated Resource for Phosphosite-specific Signature Analysis. Mol Cell Proteomics 2019;18(3):576-593.
  • Yilmaz S, Ayati M, Schlatzer D, et al. Robust inference of kinase activity using functional networks. Nat Commun 2021;12:1177.
  • Larsen MR, Thingholm TE, Jensen ON, Roepstorff P, Jorgensen TJD. Highly selective enrichment of phosphorylated peptides from peptide mixtures using titanium dioxide microcolumns. Mol Cell Proteomics 2005;4(7):873-886.
  • Ruprecht B, Koch H, Medard G, et al. Comprehensive and reproducible phosphopeptide enrichment using iron immobilized metal ion affinity chromatography (Fe-IMAC) columns. Mol Cell Proteomics 2015;14(1):205-215.
  • Matheron L, van den Toorn H, Heck AJR, Mohammed S. Characterization of biases in phosphopeptide enrichment by Ti(IV)-IMAC and TiO2 using a massive synthetic library and human cell digests. Anal Chem 2014;86(16):8312-8320.
  • Thingholm TE, Jensen ON, Robinson PJ, Larsen MR. SIMAC (sequential elution from IMAC), a phosphoproteomics strategy for the rapid separation of monophosphorylated from multiply phosphorylated peptides. Mol Cell Proteomics 2008;7(4):661-671.
  • Svinkina T, Gu H, Silva JC, et al. Deep, Quantitative Coverage of the Lysine Acetylome Using Novel Anti-acetyl-lysine Antibodies and an Optimized Proteomic Workflow. Mol Cell Proteomics 2015;14(9):2429-2440.
  • Xu G, Paige JS, Jaffrey SR. Global analysis of lysine ubiquitination by ubiquitin remnant immunoaffinity profiling. Nat Biotechnol 2010;28(8):868-873.
  • Kim W, Bennett EJ, Huttlin EL, et al. Systematic and Quantitative Assessment of the Ubiquitin-Modified Proteome. Mol Cell 2011;44(2):325-340.
  • Nielsen ML, Vermeulen M, Bonaldi T, Cox J, Moroder L, Mann M. Iodoacetamide-induced artifact mimics ubiquitination in mass spectrometry. Nat Methods 2008;5(6):459-460.
  • Akimov V, Barrio-Hernandez I, Hansen SVF, et al. UbiSite approach for comprehensive mapping of lysine and N-terminal ubiquitination sites. Nat Struct Mol Biol 2018;25(7):631-640.
  • Riley NM, Bertozzi CR, Pitteri SJ. A Pragmatic Guide to Enrichment Strategies for Mass Spectrometry-Based Glycoproteomics. Mol Cell Proteomics 2021;20:100029.
  • Johnson JL, Yaron TM, Huntsman EM, et al. An atlas of substrate specificities for the human serine/threonine kinome. Nature 2023;613(7945):759-766.
  • Mueller-Dott S, Jaehnig EJ, et al. Comprehensive evaluation of phosphoproteomic-based kinase activity inference. Nat Commun 2025;16:4771.
  • Zong Y, Wang Y, Yang Y, et al. DeepFLR facilitates false localization rate control in phosphoproteomics. Nat Commun 2023;14:2269.
  • peptide-identification - Identify modified peptides and run open/variable-mod search
  • quantification - Underlying protein-level quant feeding the MSstatsPTM PROTEIN dataset
  • differential-abundance - Moderated testing on the protein-level intensity matrix
  • pathway-analysis/gsea - Enrichment scoring of regulated-site protein lists and PTM-SEA-style signatures
  • data-visualization/sequence-logos - Render motif logos from the foreground/background windows

© GPTomics, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in proteomics/ptm-analysis of GPTomics/bioSkills.

  • SKILL.md
  • examples/phospho_analysis.py
  • usage-guide.md

Open the folder on GitHubat commit d91ed3d

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in GPTomics/bioSkills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Bio Proteomics Ptm Analysis next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Bio Proteomics Ptm Analysis compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bio Proteomics Ptm Analysis this skillGPTomics/bioSkills1.2k1 repos~6.9kAutomated safety check: PassMIT
Spatial S5 DownstreamQING1105/ezST101—~513Automated safety check: PassMIT
Bio Proteomics Ptm AnalysisFreedomIntelligence/OpenClaw-Medical-Skills3.1k1 repos~1.2kAutomated safety check: PassNone
Proteomics PtmTianGzlab/OmicsClaw161—~989Automated safety check: PassApache-2.0
Bioconductor BandlebioMate-AI/biomate-bioconductor-kb804—~1.3kAutomated safety check: PassCustom licence
Bioconductor StatialbioMate-AI/biomate-bioconductor-kb804—~1.5kAutomated safety check: PassCustom licence

Similar skills

  • Stage 5 of the spatial transcriptomics workflow — neighborhood enrichment and cell-cell communication analysis.

    101 GitHub stars~513 tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Bio Proteomics Ptm Analysis

    FreedomIntelligence/OpenClaw-Medical-Skills

    Post-translational modification analysis including phosphorylation, acetylation, and ubiquitination.

    3.1k GitHub starsUsed in 1 repo~1.2k tokens
    Research & ScienceAuto-check passed
  • Proteomics Ptm

    TianGzlab/OmicsClaw

    Load when summarising PTM sites (phosphorylation, acetylation, ubiquitination, etc.) from a per-site CSV — site-class assignment (Olsen et al.

    161 GitHub stars~989 tokensUpdated 2 days ago
    Research & ScienceAuto-check passed
  • Bioconductor Bandle

    bioMate-AI/biomate-bioconductor-kb

    The Bandle package enables the analysis and visualisation of differential localisation experiments using mass-spectrometry data.

    804 GitHub stars~1.3k tokensUpdated 3 mo ago
    Frontend & DesignAuto-check passed
  • Bioconductor Statial

    bioMate-AI/biomate-bioconductor-kb

    Statial is a suite of functions for identifying changes in cell state.

    804 GitHub stars~1.5k tokensUpdated 3 mo ago
    Frontend & DesignAuto-check passed
  • Plannotate Plasmid Annotation

    jaechang-hits/SciAgent-Skills

    Auto-annotate plasmids with features (promoters, terminators, resistance, origins, tags, fluorescent proteins) via BLAST against curated DBs (Addgene, fpbase, SnapGene).

    371 GitHub starsUsed in 1 repo~4.7k tokens
    Research & ScienceAuto-check passed

More from GPTomics/bioSkills

All 559 skills in this repo
  • Bio Alignment Io

    GPTomics/bioSkills

    Read, write, and convert multiple sequence alignment files using Biopython Bio.AlignIO.

    1.2k GitHub starsUsed in 3 repos~4.9k tokens
    Auto-check passed
  • bioSkills Installer

    GPTomics/bioSkills

    Installs the bioSkills collection of 425 bioinformatics skills in one step, or only chosen categories, so sequencing, RNA-seq, single-cell and variant tasks get specialized help.

    1.2k GitHub starsUsed in 1 repo~789 tokens
    Auto-check passed
  • Bio Write Sequences

    GPTomics/bioSkills

    Write biological sequences to files (FASTA, FASTQ, GenBank, EMBL) using Biopython Bio.SeqIO.

    1.2k GitHub starsUsed in 3 repos~2.1k tokens
    Auto-check passed
  • Amplicon Primer Clipping

    GPTomics/bioSkills

    Soft- or hard-clips PCR primer footprints from aligned amplicon BAMs so primer bases stop masquerading as confirmed reference sequence.

    1.2k GitHub starsUsed in 2 repos~2.2k tokens
    Auto-check passed
  • Filters BAM alignments by FLAG bits, mapping quality and regions with samtools view or pysam, with recipes for common keep and drop cases.

    1.2k GitHub starsUsed in 2 repos~3.6k tokens
    Auto-check passed
  • Bio Alignment Indexing

    GPTomics/bioSkills

    Create and use BAI/CSI indices for BAM/CRAM files using samtools and pysam.

    1.2k GitHub starsUsed in 2 repos~2.4k tokens
    Auto-check passed

Questions about Bio Proteomics Ptm Analysis

What does Bio Proteomics Ptm Analysis do?

Frames PTM/phosphoproteomics analysis as three stacked inference layers on a biased enrichment - chemistry selection, site localization (FLR), and protein-level-adjusted quantification with…. Bio Proteomics Ptm Analysis is an agent skill from GPTomics/bioSkills. Frames PTM/phosphoproteomics analysis as three stacked inference layers on a biased enrichment - chemistry selection, site localization (FLR), and protein-level-adjusted quantification with MSstatsPTM - plus kinase-activity and functional triage.

When should I use Bio Proteomics Ptm Analysis?

Bio Proteomics Ptm Analysis fits situations like: localizing and quantifying phosphorylation; glycosylation sites from enrichment-based runs and deciding whether an apparent site change is real after subtracting protein abundance.

How do I install Bio Proteomics Ptm Analysis in Claude Code?

Run `npx skills add GPTomics/bioSkills --skill bio-proteomics-ptm-analysis -a claude-code`. Or copy the skill folder (proteomics/ptm-analysis in GPTomics/bioSkills) into .claude/skills/bio-proteomics-ptm-analysis in your project. Claude Code loads it when a task matches its description.

How do I install Bio Proteomics Ptm Analysis in Codex?

Run `npx skills add GPTomics/bioSkills --skill bio-proteomics-ptm-analysis -a codex`. Or copy the skill folder (proteomics/ptm-analysis in GPTomics/bioSkills) into .agents/skills/bio-proteomics-ptm-analysis in your project. Codex loads it when a task matches its description.

Can I use Bio Proteomics Ptm Analysis in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GPTomics/bioSkills --skill bio-proteomics-ptm-analysis -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bio-proteomics-ptm-analysis, .gemini/skills/bio-proteomics-ptm-analysis, .github/skills/bio-proteomics-ptm-analysis and .opencode/skills/bio-proteomics-ptm-analysis in your project.

What does Bio Proteomics Ptm Analysis need to run?

Going by SKILL.md and its folder, Bio Proteomics Ptm Analysis needs Python for the scripts in its folder and the command-line tools its instructions call (pip). Our summary lists: Python 3.

Does Bio Proteomics Ptm Analysis access the network?

SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Bio Proteomics Ptm Analysis safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Bio Proteomics Ptm Analysis use?

Bio Proteomics Ptm Analysis is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Bio Proteomics Ptm Analysis use?

About 6.9k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Bio Proteomics Ptm Analysis?

Skills that share tags, products or a category with Bio Proteomics Ptm Analysis: Spatial S5 Downstream (QING1105/ezST, 101 stars), Bio Proteomics Ptm Analysis (FreedomIntelligence/OpenClaw-Medical-Skills, 3.1k stars), Proteomics Ptm (TianGzlab/OmicsClaw, 161 stars) and Bioconductor Bandle (bioMate-AI/biomate-bioconductor-kb, 804 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bio Proteomics Ptm Analysis?

GPTomics (a GitHub organization) maintains it in GPTomics/bioSkills, which has 1,217 GitHub stars. The repository holds 559 skills in this directory. The repository was last updated on August 15, 2026.

Source: GPTomics/bioSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.