Mass spectrometry analysis. Process mzML/MGF/MSP, spectral similarity (cosine, modified cosine), metadata harmonization, compound ID, for metabolomics and MS data processing.
Matchms is an open-source Python library for mass spectrometry data processing and analysis. Import spectra from various formats, standardize metadata, filter peaks, calculate spectral similarities, and build reproducible analytical workflows.
Load spectra from multiple file formats and export processed data:
```python
from matchms.importing import load_from_mgf, load_from_mzml, load_from_msp, load_from_json
from matchms.exporting import save_as_mgf, save_as_msp, save_as_json
spectra = list(load_from_mgf("spectra.mgf"))
spectra = list(load_from_mzml("data.mzML"))
spectra = list(load_from_msp("library.msp"))
save_as_mgf(spectra, "output.mgf")
save_as_json(spectra, "output.json")
```
**Supported formats:**
For detailed importing/exporting documentation, consult `references/importing_exporting.md`.
Apply comprehensive filters to standardize metadata and refine peak data:
```python
from matchms.filtering import default_filters, normalize_intensities
from matchms.filtering import select_by_relative_intensity, require_minimum_number_of_peaks
spectrum = default_filters(spectrum)
spectrum = normalize_intensities(spectrum)
spectrum = select_by_relative_intensity(spectrum, intensity_from=0.01, intensity_to=1.0)
spectrum = require_minimum_number_of_peaks(spectrum, n_required=5)
```
**Filter categories:**
Matchms provides 40+ filters. For the complete filter reference, consult `references/filtering.md`.
Compare spectra using various similarity metrics:
```python
from matchms import calculate_scores
from matchms.similarity import CosineGreedy, ModifiedCosine, CosineHungarian
scores = calculate_scores(references=library_spectra,
queries=query_spectra,
similarity_function=CosineGreedy())
scores = calculate_scores(references=library_spectra,
queries=query_spectra,
similarity_function=ModifiedCosine(tolerance=0.1))
best_matches = scores.scores_by_query(query_spectra[0], sort=True)[:10]
```
**Available similarity functions:**
For detailed similarity function documentation, consult `references/similarity.md`.
Create reproducible, multi-step analysis workflows:
```python
from matchms import SpectrumProcessor
from matchms.filtering import default_filters, normalize_intensities
from matchms.filtering import select_by_relative_intensity, remove_peaks_around_precursor_mz
processor = SpectrumProcessor([
default_filters,
normalize_intensities,
lambda s: select_by_relative_intensity(s, intensity_from=0.01),
lambda s: remove_peaks_around_precursor_mz(s, mz_tolerance=17)
])
processed_spectra = [processor(s) for s in spectra]
```
The core `Spectrum` class contains mass spectral data:
```python
from matchms import Spectrum
import numpy as np
mz = np.array([100.0, 150.0, 200.0, 250.0])
intensities = np.array([0.1, 0.5, 0.9, 0.3])
metadata = {"precursor_mz": 250.5, "ionmode": "positive"}
spectrum = Spectrum(mz=mz, intensities=intensities, metadata=metadata)
print(spectrum.peaks.mz) # m/z values
print(spectrum.peaks.intensities) # Intensity values
print(spectrum.get("precursor_mz")) # Metadata field
spectrum.plot()
spectrum.plot_against(reference_spectrum)
```
Standardize and harmonize spectrum metadata:
```python
spectrum.set("Precursor_mz", 250.5) # Gets harmonized to lowercase key
print(spectrum.get("precursor_mz")) # Returns 250.5
from matchms.filtering import derive_inchi_from_smiles, derive_inchikey_from_inchi
from matchms.filtering import add_fingerprint
spectrum = derive_inchi_from_smiles(spectrum)
spectrum = derive_inchikey_from_inchi(spectrum)
spectrum = add_fingerprint(spectrum, fingerprint_type="morgan", nbits=2048)
```
For typical mass spectrometry analysis workflows, including:
Consult `references/workflows.md` for detailed examples.
```bash
uv pip install matchms
```
For molecular structure processing (SMILES, InChI):
```bash
uv pip install matchms[chemistry]
```
Detailed reference documentation is available in the `references/` directory:
Load these references as needed for detailed information about specific matchms capabilities.
Leave a review
No reviews yet. Be the first to review this skill!