Source code for matchms.exporting.save_as_mgf

from typing import List, Union
import pyteomics.mgf as py_mgf
from ..Spectrum import Spectrum
from ..utils import fingerprint_export_warning


[docs]def save_as_mgf(spectrums: Union[List[Spectrum], Spectrum], filename: str, export_style: str = "matchms"): """Save spectrum(s) as mgf file. :py:attr:`~matchms.Spectrum.losses` of spectrum will not be saved. Example: .. code-block:: python import numpy as np from matchms import Spectrum from matchms.exporting import save_as_mgf # Create dummy spectrum spectrum = Spectrum(mz=np.array([100, 200, 300], dtype="float"), intensities=np.array([10, 10, 500], dtype="float"), metadata={"charge": -1, "inchi": '"InChI=1S/C6H12"', "precursor_mz": 222.2}) # Write spectrum to test file save_as_mgf(spectrum, "test.mgf") Parameters ---------- spectrums: Expected input are match.Spectrum.Spectrum() objects. filename: Provide filename to save spectrum(s). export_style: Converts the keys to the required export style. One of ["matchms", "massbank", "nist", "riken", "gnps"]. Default is "matchms" """ if not isinstance(spectrums, list): # Assume that input was single Spectrum spectrums = [spectrums] fingerprint_export_warning(spectrums) def spectrum_dict_generator(matchms_spectrums): """Generates dictionaries in the format expected by py_mgf""" for spectrum in matchms_spectrums: spectrum_dict = {"m/z array": spectrum.peaks.mz, "intensity array": spectrum.peaks.intensities, "params": spectrum.metadata_dict(export_style)} if 'fingerprint' in spectrum_dict["params"]: del spectrum_dict["params"]["fingerprint"] yield spectrum_dict py_mgf.write(spectrum_dict_generator(spectrums), filename, file_mode="a")