Skill Tracer
Skills › Scientific Agent Skills › matchms › sources.md

sources.md

167 lines · skills/matchms/references/sources.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Sources and Verification Record
2
3This skill was refreshed on **2026-10-01** against the current stable release,
4matchms **0.33.1**. Public PyPI metadata, current official API pages, the released
5wheel/source, and live public services were checked separately.
6

Sources and Verification Record

This skill was refreshed on 2026-10-01 against the current stable release, matchms 0.33.1. Public PyPI metadata, current official API pages, the released wheel/source, and live public services were checked separately.

Raw lines 1 to 6
7## Version and Packaging
8
9- [matchms on PyPI](https://pypi.org/project/matchms/) — 0.33.1, released
10 2026-06-08; Python `>=3.10,<3.15`; release history and package metadata.
11- [matchms 0.33.1 release](https://github.com/matchms/matchms/releases/tag/0.33.1)
12 — Python 3.14 support and maintenance changes.
13- [matchms repository](https://github.com/matchms/matchms) — source,
14 `pyproject.toml`, tests, examples, and current README.
15- [matchms releases](https://github.com/matchms/matchms/releases) — complete
16 upstream release history.
18The 0.33.1 wheel was installed in isolated uv environments on macOS ARM64 with
19Python 3.13.3. Public objects in core, I/O, filtering, similarity, Pipeline,
20Fingerprints, and networking were inspected with `inspect.signature`; decorated
21writer signatures and return/side-effect semantics were checked in source.
22The project environment was not given scientific dependencies.

Version and Packaging

The 0.33.1 wheel was installed in isolated uv environments on macOS ARM64 with Python 3.13.3. Public objects in core, I/O, filtering, similarity, Pipeline, Fingerprints, and networking were inspected with inspect.signature; decorated writer signatures and return/side-effect semantics were checked in source. The project environment was not given scientific dependencies.

Raw lines 7 to 23
24## Release Notes Used for Migration
26- [0.27.0](https://github.com/matchms/matchms/releases/tag/0.27.0) — on-demand
27 losses, removal of `add_losses`, and `spectrums` to `spectra` renaming.
28- [0.30.0](https://github.com/matchms/matchms/releases/tag/0.30.0) — NumPy 2
29 baseline and Python 3.13 support.
30- [0.31.0](https://github.com/matchms/matchms/releases/tag/0.31.0) —
31 `FlashSimilarity`, `BlinkCosine`, min-max intensity scaling, and new filters.
32- [0.32.0](https://github.com/matchms/matchms/releases/tag/0.32.0) —
33 `ModifiedCosineGreedy` rename and `ModifiedCosineHungarian`.
34- [0.33.0](https://github.com/matchms/matchms/releases/tag/0.33.0) —
35 `CosineLinear` and preparation for the future 1.0 API.
36- [0.33.1](https://github.com/matchms/matchms/releases/tag/0.33.1) — current
37 verified release.

Release Notes Used for Migration

  • 0.27.0 — on-demand losses, removal of add_losses, and spectrums to spectra renaming.
  • 0.30.0 — NumPy 2 baseline and Python 3.13 support.
  • 0.31.0 — FlashSimilarity, BlinkCosine, min-max intensity scaling, and new filters.
  • 0.32.0 — ModifiedCosineGreedy rename and ModifiedCosineHungarian.
  • 0.33.0 — CosineLinear and preparation for the future 1.0 API.
  • 0.33.1 — current verified release.
Raw lines 24 to 38
39## Current API Documentation
41- [Documentation home](https://matchms.readthedocs.io/)
42- [Core package, Pipeline, Spectrum, and Scores](https://matchms.readthedocs.io/en/latest/api/matchms.html)
43- [Spectrum](https://matchms.readthedocs.io/en/latest/api/matchms.Spectrum.html)
44- [Filtering](https://matchms.readthedocs.io/en/latest/api/matchms.filtering.html)
45- [Importing](https://matchms.readthedocs.io/en/latest/api/matchms.importing.html)
46- [Exporting](https://matchms.readthedocs.io/en/latest/api/matchms.exporting.html)
47- [Similarity](https://matchms.readthedocs.io/en/latest/api/matchms.similarity.html)
48- [Networking](https://matchms.readthedocs.io/en/latest/api/matchms.networking.html)
50Read the Docs pages identify 0.33.1, but individual cached source pages can be
51older. The installed released source resolves disagreements, including several
52docstring/implementation differences reproduced below.

Current API Documentation

Read the Docs pages identify 0.33.1, but individual cached source pages can be older. The installed released source resolves disagreements, including several docstring/implementation differences reproduced below.

Raw lines 39 to 53
54## User Guides
56- [matchms user documentation](https://matchms.github.io/matchms-docs/intro.html)
57- [Filtering tutorial](https://matchms.github.io/matchms-docs/notebooks/matchms_filtering_tutorial.html)
58- [Building an MS/MS analysis pipeline](https://matchms.github.io/matchms-docs/notebooks/matchms_tutorial_01_building_analysis_pipeline.html)
59- [User-guide repository](https://github.com/matchms/matchms-docs)
60- [Latest recorded guide revision](https://github.com/matchms/matchms-docs/commit/796f156c58d25adfb7e1528fcb24eb8c40c143a5)
61 — 2024-06-13; still the newest guide commit on the review date.
63The tutorials are useful for workflow concepts but predate releases 0.27-0.33.
64In particular, the pipeline tutorial still uses `ModifiedCosine`. Current API
65docs and release notes supersede tutorial symbol names.

User Guides

The tutorials are useful for workflow concepts but predate releases 0.27-0.33. In particular, the pipeline tutorial still uses ModifiedCosine. Current API docs and release notes supersede tutorial symbol names.

Raw lines 54 to 66
67## Primary Scientific References
69- [Huber et al., 2020 — matchms: processing and similarity evaluation of mass
70 spectrometry data](https://joss.theoj.org/papers/10.21105/joss.02411),
71 *Journal of Open Source Software* 5(52), 2411,
72 DOI `10.21105/joss.02411`.
73- [Watrous et al., 2012 — Mass spectral molecular networking of living
74 microbial colonies](https://www.pnas.org/doi/10.1073/pnas.1203689109),
75 *PNAS* 109, E1743-E1752, DOI `10.1073/pnas.1203689109`.
76- [Harwood et al., 2023 — BLINK enables ultrafast tandem mass spectrometry
77 cosine similarity scoring](https://pmc.ncbi.nlm.nih.gov/articles/PMC10439109),
78 *Scientific Reports* 13, 13462, DOI `10.1038/s41598-023-40496-9`.
79- [Li & Fiehn, 2023 — Flash entropy search to query all mass spectral libraries
80 in real time](https://pubmed.ncbi.nlm.nih.gov/37735567),
81 *Nature Methods* 20, 1475-1478,
82 DOI `10.1038/s41592-023-02012-9`.
83- [Huber et al., 2021 — Spec2Vec: Improved mass spectral similarity scoring
84 through learning of structural relationships](https://pmc.ncbi.nlm.nih.gov/articles/PMC7909622/),
85 *PLoS Computational Biology* 17, e1008724,
86 DOI `10.1371/journal.pcbi.1008724`.
88These papers motivate methods and interpretation. The matchms implementation
89and its exact defaults remain defined by the 0.33.1 API/source.

Primary Scientific References

These papers motivate methods and interpretation. The matchms implementation and its exact defaults remain defined by the 0.33.1 API/source.

Raw lines 67 to 90
91## Ecosystem References
93The upstream ecosystem lists complementary tools; they were not runtime-tested
94as part of this matchms refresh:
96- [MS2DeepScore](https://github.com/matchms/ms2deepscore)
97- [Spec2Vec](https://github.com/iomega/spec2vec)
98- [matchmsextras](https://github.com/matchms/matchmsextras)
99- [MS2Query](https://github.com/iomega/ms2query)
100- [SimMS](https://github.com/PangeAI/SimMS)
101- [matchms organization](https://github.com/matchms)
103Check each project's current compatibility matrix before combining environments;
104matchms 0.33.1 uses NumPy 2 and Python 3.10-3.14.

Ecosystem References

The upstream ecosystem lists complementary tools; they were not runtime-tested as part of this matchms refresh:

Check each project's current compatibility matrix before combining environments; matchms 0.33.1 uses NumPy 2 and Python 3.10-3.14.

Raw lines 91 to 105
106## Released-Source Findings
108- [Spectrum and metadata construction](https://github.com/matchms/matchms/blob/0.33.1/matchms/Spectrum.py):
109 `metadata_harmonization=False` still harmonizes keys; `plot_against` returns
110 `(figure, axis)`.
111- [SpectrumProcessor](https://github.com/matchms/matchms/blob/0.33.1/matchms/filtering/SpectrumProcessor.py):
112 direct single-spectrum processing can mutate input, while list processing
113 clones inputs without a report; registered filters are reordered.
114- [Scores calculation](https://github.com/matchms/matchms/blob/0.33.1/matchms/Scores.py):
115 coordinate-only computation requires a left/inner join and fewer than half of
116 all coordinates; 1-by-1 always calls `pair`.
117- [CosineLinear](https://github.com/matchms/matchms/blob/0.33.1/matchms/similarity/CosineLinear.py):
118 close peaks are merged before matching.
119- [FlashSimilarity](https://github.com/matchms/matchms/blob/0.33.1/matchms/similarity/FlashSimilarity.py):
120 sparse output still allocates a dense matrix. Entropy with `neutral_loss`
121 adds fragment and loss terms and gave a self-score near 2 in both pair/matrix
122 tests; the skill explicitly excludes that combination as a normalized score.
123- [Metadata export mappings](https://github.com/matchms/matchms/blob/0.33.1/matchms/data/export_key_conversions.csv):
124 MassBank-style precursor keys did not return to `precursor_mz` on reimport.
125- [mzSpecLib writer](https://github.com/matchms/matchms/blob/0.33.1/matchms/exporting/save_as_mzspeclib.py):
126 direct text output rounds intensities to two decimals and assumes collision
127 energy text is expressed in eV.

Released-Source Findings

  • Spectrum and metadata construction: metadata_harmonization=False still harmonizes keys; plot_against returns (figure, axis).
  • SpectrumProcessor: direct single-spectrum processing can mutate input, while list processing clones inputs without a report; registered filters are reordered.
  • Scores calculation: coordinate-only computation requires a left/inner join and fewer than half of all coordinates; 1-by-1 always calls pair.
  • CosineLinear: close peaks are merged before matching.
  • FlashSimilarity: sparse output still allocates a dense matrix. Entropy with neutral_loss adds fragment and loss terms and gave a self-score near 2 in both pair/matrix tests; the skill explicitly excludes that combination as a normalized score.
  • Metadata export mappings: MassBank-style precursor keys did not return to precursor_mz on reimport.
  • mzSpecLib writer: direct text output rounds intensities to two decimals and assumes collision energy text is expressed in eV.
Raw lines 106 to 128
129## Endpoint Verification
131- [USI helper source](https://github.com/matchms/matchms/blob/0.33.1/matchms/importing/load_from_usi.py)
132 and [GNPS API documentation](https://ccms-ucsd.github.io/GNPSDocumentation/api/):
133 public GET `/json/?usi1=<USI>` on `https://metabolomics-usi.gnps2.org`, no
134 authentication or pagination, one JSON spectrum. Live retrieval of the two
135 documented USIs produced 317 and 119 peaks. The first raw response included
136 `precursor_charge` and `splash`, which matchms discards. Both were successfully
137 loaded with matchms, identically normalized, and cosine-scored; this was an
138 execution check, not a compound-identification validation.
139- [Name-annotation filter source](https://github.com/matchms/matchms/blob/0.33.1/matchms/filtering/metadata_processing/derive_annotation_from_compound_name.py)
140 and [PubChemPy name-search documentation](https://docs.pubchempy.org/en/latest/guide/searching.html):
141 public name lookup via PubChemPy, optional local CSV cache, neutral-parent-mass
142 gate, no credential. A live caffeine lookup at 0.001 Da tolerance returned
143 the expected reference InChIKey. This does not establish identity for unknown
144 spectra or ambiguity-free annotation for arbitrary names.

Endpoint Verification

  • USI helper source and GNPS API documentation: public GET /json/?usi1=<USI> on https://metabolomics-usi.gnps2.org, no authentication or pagination, one JSON spectrum. Live retrieval of the two documented USIs produced 317 and 119 peaks. The first raw response included precursor_charge and splash, which matchms discards. Both were successfully loaded with matchms, identically normalized, and cosine-scored; this was an execution check, not a compound-identification validation.
  • Name-annotation filter source and PubChemPy name-search documentation: public name lookup via PubChemPy, optional local CSV cache, neutral-parent-mass gate, no credential. A live caffeine lookup at 0.001 Da tolerance returned the expected reference InChIKey. This does not establish identity for unknown spectra or ambiguity-free annotation for arbitrary names.
Raw lines 129 to 145
146## Execution Coverage and Limits
148- `uv run skills-ref validate skills/matchms`: passed.
149- `PYTHONDONTWRITEBYTECODE=1 python tests/run_all.py --isolated matchms`:
150 117 tests passed, including the original 58 and 59 API/CLI regressions.
151- Small synthetic smoke checks passed for mzML/mzXML MS-level selection,
152 precursor and peak arrays; Pipeline/YAML; five network export formats;
153 Fingerprints bridging and three structure metrics; binned and metadata
154 scoring; mirror-plot export; and all ten bundled CLI metrics.
155- MGF/MSP/JSON roundtrips covered matchms, GNPS, NIST, and RIKEN metadata styles;
156 separate regression cases record MassBank precursor loss. Score JSON
157 serialization/reloading was exercised. No untrusted pickle was opened.
158- Flash pair and serial matrix paths were checked. Large-library performance,
159 multiprocessing scaling, ANN recall, acquisition-specific thresholds,
160 downstream mzSpecLib conformance, every repair heuristic, and other operating
161 systems/Python versions were not experimentally validated. Broader snippets
162 are workflow templates requiring representative local validation.
163- The ordinary project-environment pytest invocation skipped both modules
164 because scientific dependencies are intentionally absent; the isolated run
165 above is the executable validation.
167No downloaded scientific datasets or research JSON artifacts are shipped.

Execution Coverage and Limits

  • uv run skills-ref validate skills/matchms: passed.
  • PYTHONDONTWRITEBYTECODE=1 python tests/run_all.py --isolated matchms: 117 tests passed, including the original 58 and 59 API/CLI regressions.
  • Small synthetic smoke checks passed for mzML/mzXML MS-level selection, precursor and peak arrays; Pipeline/YAML; five network export formats; Fingerprints bridging and three structure metrics; binned and metadata scoring; mirror-plot export; and all ten bundled CLI metrics.
  • MGF/MSP/JSON roundtrips covered matchms, GNPS, NIST, and RIKEN metadata styles; separate regression cases record MassBank precursor loss. Score JSON serialization/reloading was exercised. No untrusted pickle was opened.
  • Flash pair and serial matrix paths were checked. Large-library performance, multiprocessing scaling, ANN recall, acquisition-specific thresholds, downstream mzSpecLib conformance, every repair heuristic, and other operating systems/Python versions were not experimentally validated. Broader snippets are workflow templates requiring representative local validation.
  • The ordinary project-environment pytest invocation skipped both modules because scientific dependencies are intentionally absent; the isolated run above is the executable validation.

No downloaded scientific datasets or research JSON artifacts are shipped.

Raw lines 146 to 167
Runs code python tests/run_all.py :149