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 descriptionssimilarity.md- Toutes les métriques de similitude et quand les utiliserimporting_exporting.md- Détails des formats de fichiers et opérations d'E/Sworkflows.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.