MSMetaEnhancer is a tool used for .msp files annotation.
It adds metadata like SMILES, InChI, and CAS number fetched from the following services: CIR, CTS, PubChem, IDSM, and BridgeDb.
The app uses asynchronous implementation of annotation process allowing for optimal fetching speed.
If you use MSMetaEnhancer in your work, please cite the following publication:
Troják et al., (2022). MSMetaEnhancer: A Python package for mass spectra metadata annotation. Journal of Open Source Software, 7(79), 4494, https://doi.org/10.21105/joss.04494
Usage
import asyncio from MSMetaEnhancer import Application from MSMetaEnhancer.libs.converters.web import CTS, CIR, IDSM, PubChem, BridgeDb from MSMetaEnhancer.libs.converters.compute import RDKit from MSMetaEnhancer.libs.utils.ConverterBuilder import ConverterBuilder ConverterBuilder.register([CTS, CIR, IDSM, PubChem, BridgeDb, RDKit]) app = Application() # import your .msp file app.load_data('sample.msp', file_format='msp') # curate given metadata (e.g. fix CAS numbers) app.curate_metadata() # specify requested services (these are supported) services = ['CTS', 'CIR', 'IDSM', 'PubChem', 'BridgeDb', 'RDKit'] # specify requested jobs jobs = [('name', 'inchi', 'IDSM'), ('inchi', 'formula', 'IDSM'), ('inchi', 'inchikey', 'IDSM'), ('inchi', 'iupac_name', 'IDSM'), ('inchi', 'canonical_smiles', 'IDSM')] # run asynchronous annotations of spectra data asyncio.run(app.annotate_spectra(services, jobs)) # export .msp file app.save_data('sample_out.msp', file_format='msp')
Installation
Prerequisites:
- Python 3.9+
- Anaconda
Install MSMetaEnhancer from Bioconda with:
# install MSMetaEnhancer in a new virtual environment to avoid dependency clashes
conda create --name MSMetaEnhancer python=3.9
conda activate MSMetaEnhancer
conda install --channel bioconda --channel conda-forge MSMetaEnhancer
Developer Documentation
Setup
Create your development environment using the provided script via conda to install all required dependencies.
Contributing
We appreciate contributions - feel free to open an issue on our repository, create your own fork, work on the problem and post a PR. Please add your contributions to the changelog and to adhere to the versioning. For more information see here.
Testing
All functionality is tested with the pytest framework.