matchms

Par mkurman · zorai

Similarité spectrale et identification de composés pour la métabolomique. À utiliser pour comparer des spectres de masse, calculer des scores de similarité (cosinus, cosinus modifié) et identifier des composés inconnus à partir de bibliothèques spectrales. Idéal pour l'identification de métabolites, la mise en correspondance spectrale et la recherche en bibliothèque. Pour les pipelines LC-MS/MS de protéomique complets, utiliser pyopenms.

npx skills add https://github.com/mkurman/zorai --skill matchms

Matchms

Vue d'ensemble

Matchms est une bibliothèque Python open-source pour le traitement et l'analyse de données de spectrométrie de masse. Importez des spectres à partir de divers formats, standardisez les métadonnées, filtrez les pics, calculez les similitudes spectrales et créez des workflows analytiques reproductibles.

Capacités principales

1. Importer et exporter des données de spectrométrie de masse

Chargez des spectres à partir de plusieurs formats de fichiers et exportez les données traitées :

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

# Import spectra
spectra = list(load_from_mgf("spectra.mgf"))
spectra = list(load_from_mzml("data.mzML"))
spectra = list(load_from_msp("library.msp"))

# Export processed spectra
save_as_mgf(spectra, "output.mgf")
save_as_json(spectra, "output.json")

Formats supportés :

  • mzML et mzXML (formats bruts de spectrométrie de masse)
  • MGF (Mascot Generic Format)
  • MSP (format de bibliothèque spectrale)
  • JSON (compatible GNPS)
  • références metabolomics-USI
  • Pickle (sérialisation Python)

Pour la documentation détaillée sur l'importation/exportation, consultez references/importing_exporting.md.

2. Filtrage et traitement des spectres

Appliquez des filtres complets pour standardiser les métadonnées et affiner les données de pics :

from matchms.filtering import default_filters, normalize_intensities
from matchms.filtering import select_by_relative_intensity, require_minimum_number_of_peaks

# Apply default metadata harmonization filters
spectrum = default_filters(spectrum)

# Normalize peak intensities
spectrum = normalize_intensities(spectrum)

# Filter peaks by relative intensity
spectrum = select_by_relative_intensity(spectrum, intensity_from=0.01, intensity_to=1.0)

# Require minimum peaks
spectrum = require_minimum_number_of_peaks(spectrum, n_required=5)

Catégories de filtres :

  • Traitement des métadonnées : Harmoniser les noms de composés, dériver les structures chimiques, standardiser les adduits, corriger les charges
  • Filtrage des pics : Normaliser les intensités, sélectionner par m/z ou intensité, supprimer les pics de précurseur
  • Contrôle qualité : Exiger un nombre minimum de pics, valider le m/z du précurseur, assurer l'exhaustivité des métadonnées
  • Annotation chimique : Ajouter des empreintes digitales, dériver InChI/SMILES, réparer les incompatibilités structurelles

Matchms fournit plus de 40 filtres. Pour la référence complète des filtres, consultez references/filtering.md.

3. Calculer les similitudes spectrales

Comparez les spectres à l'aide de diverses métriques de similitude :

from matchms import calculate_scores
from matchms.similarity import CosineGreedy, ModifiedCosine, CosineHungarian

# Calculate cosine similarity (fast, greedy algorithm)
scores = calculate_scores(references=library_spectra,
                         queries=query_spectra,
                         similarity_function=CosineGreedy())

# Calculate modified cosine (accounts for precursor m/z differences)
scores = calculate_scores(references=library_spectra,
                         queries=query_spectra,
                         similarity_function=ModifiedCosine(tolerance=0.1))

# Get best matches
best_matches = scores.scores_by_query(query_spectra[0], sort=True)[:10]

Fonctions de similitude disponibles :

  • CosineGreedy/CosineHungarian : Similitude cosinus basée sur les pics avec différents algorithmes d'appariement
  • ModifiedCosine : Similitude cosinus tenant compte des différences de masse du précurseur
  • NeutralLossesCosine : Similitude basée sur les profils de perte neutre
  • FingerprintSimilarity : Similitude de structure moléculaire utilisant des empreintes digitales
  • MetadataMatch : Comparer les champs de métadonnées définis par l'utilisateur
  • PrecursorMzMatch/ParentMassMatch : Filtrage simple basé sur la masse

Pour la documentation détaillée des fonctions de similitude, consultez references/similarity.md.

4. Construire des pipelines de traitement

Créez des workflows d'analyse reproductibles et multi-étapes :

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

# Define a processing pipeline
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)
])

# Apply to all spectra
processed_spectra = [processor(s) for s in spectra]

5. Travailler avec les objets Spectrum

La classe Spectrum centrale contient les données spectrales de masse :

from matchms import Spectrum
import numpy as np

# Create a spectrum
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)

# Access spectrum properties
print(spectrum.peaks.mz)           # m/z values
print(spectrum.peaks.intensities)  # Intensity values
print(spectrum.get("precursor_mz")) # Metadata field

# Visualize spectra
spectrum.plot()
spectrum.plot_against(reference_spectrum)

6. Gestion des métadonnées

Standardisez et harmonisez les métadonnées des spectres :

# Metadata is automatically harmonized
spectrum.set("Precursor_mz", 250.5)  # Gets harmonized to lowercase key
print(spectrum.get("precursor_mz"))   # Returns 250.5

# Derive chemical information
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)

Workflows courants

Pour les workflows typiques d'analyse de spectrométrie de masse, notamment :

  • Chargement et prétraitement de bibliothèques spectrales
  • Appariement de spectres inconnus contre des bibliothèques de référence
  • Filtrage de qualité et nettoyage des données
  • Comparaisons de similitude à grande échelle
  • Clustering spectral basé sur les réseaux

Consultez references/workflows.md pour des exemples détaillés.

Installation

uv pip install matchms

Pour le traitement des structures moléculaires (SMILES, InChI) :

uv pip install matchms[chemistry]

Documentation de référence

La documentation de référence détaillée est disponible dans le répertoire references/ :

  • filtering.md - Référence complète des fonctions de filtrage avec descriptions
  • similarity.md - Toutes les métriques de similitude et quand les utiliser
  • importing_exporting.md - Détails des formats de fichiers et opérations d'E/S
  • workflows.md - Motifs d'analyse courants et exemples

Chargez ces références selon vos besoins pour des informations détaillées sur les capacités spécifiques de matchms.

Skills similaires