MS data processing with PyOpenMS for LC-MS/MS proteomics and metabolomics — mzML/mzXML I/O, signal processing (smoothing, peak picking, centroiding), feature detection/linking, peptide/protein ID with FDR, untargeted metabolomics. Use matchms for simple spectral matching.
SkillScore100Maintained
Automatic
◆Research pack
Last verified 8/23/2026
What it changes
Passed 22 of 22 test cases with the skill, and 12 of 22 without it.
Without skill55%
With skill100%
Checks it passed that the model alone missed
Uses ms.ProteaseDigestion to perform in silico cleavage.
Uses ms.MorphologicalFilter to perform baseline reduction.
Uses ms.PeakPickerHiRes to centroid the raw profile spectra.
and 9 more in the full report
10 fixed12 passed either way0 still failing0 broke
Pass-rate lift
+45 pp
Tokens
+279%
Agent turns
0%
Response time
-35%
Model gemini-3.6-flashMeasured 8/23/2026v1 · latest is v222 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
See it in action
One of 10 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 10
Prompt
When running `FeatureFinder` for small molecule metabolomics, I want to allow charge states from 1 to 3. Which specific parameter key names control the minimum and maximum isotopic pattern charge states?
What was checked, without and with the skill
Checked
Without skill
With skill
Sets the lower charge bound using parameter key isotopic_pattern:charge_low.
Missed
Passed
Sets the upper charge bound using parameter key isotopic_pattern:charge_high.
Missed
Passed
case-22 · gemini-3.6-flash · 8/23/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md633 lines4 files
PyOpenMS — Mass Spectrometry Analysis
Overview
PyOpenMS provides Python bindings to the OpenMS C++ library for computational mass spectrometry. It supports proteomics and metabolomics data processing including file I/O for 10+ MS formats, signal processing, feature detection, peptide/protein identification, and quantitative analysis across samples.
When to Use
Processing raw LC-MS/MS data (mzML, mzXML) for proteomics or metabolomics
Detecting chromatographic features and linking them across multiple samples
Identifying peptides and proteins from MS/MS search engine results with FDR control
Converting between mass spectrometry file formats (mzML, mzXML, featureXML, idXML)
Smoothing, filtering, and centroiding raw spectral data
For simple spectral library matching and metabolite identification, use matchms instead
For protein sequence analysis (not mass spec), use biopython instead
Prerequisites
uv pip install pyopenms numpy pandas matplotlib
Python 3.8+; NumPy for peak array operations
Input data: mzML files (standard MS format), FASTA databases (for identification)
All algorithms follow a consistent pattern: algo = Algorithm(); params = algo.getParameters(); params.setValue(...); algo.setParameters(params)
Pre-flight Interview
Settle these with the user before writing any analysis code.
decisions:
- id: D1
param: instrumentResolution
kind: required
source: data
ask: "Is this high-resolution data, and are the spectra already centroided or still in profile mode?"
default: null