Metadata-Version: 2.3
Name: fermo_core
Version: 0.3.3
Summary: Data processing/analysis functionality of metabolomics dashboard FERMO
Project-URL: Website, https://fermo.bioinformatics.nl/
Project-URL: Repository, https://github.com/mmzdouc/fermo_core
Project-URL: Documentation, https://mmzdouc.github.io/fermo_docs/
Author-email: "Mitja M. Zdouc" <zdoucmm@gmail.com>
License-File: LICENSE
Keywords: cheminformatics,genomics,metabolomics
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Topic :: Scientific/Engineering :: Chemistry
Requires-Python: <3.12,>=3.11
Requires-Dist: argparse==1.4.0
Requires-Dist: coloredlogs==15.0.1
Requires-Dist: func-timeout==4.3.5
Requires-Dist: jsonschema==4.19.0
Requires-Dist: keras==2.15.0
Requires-Dist: matchms==0.24.0
Requires-Dist: ms2deepscore==0.5.0
Requires-Dist: ms2query==1.4.0
Requires-Dist: pandas==2.0.3
Requires-Dist: pydantic==2.5.2
Requires-Dist: pyteomics==4.6.3
Provides-Extra: dev
Requires-Dist: black~=24.4.2; extra == 'dev'
Requires-Dist: isort~=5.13.2; extra == 'dev'
Requires-Dist: pre-commit~=3.4.0; extra == 'dev'
Requires-Dist: pytest-cov~=4.1.0; extra == 'dev'
Requires-Dist: pytest~=7.4.2; extra == 'dev'
Requires-Dist: ruff~=0.4.4; extra == 'dev'
Description-Content-Type: text/markdown

fermo_core
=========

[![DOI](https://zenodo.org/badge/671395100.svg)](https://zenodo.org/doi/10.5281/zenodo.11259126) [![PyPI version](https://badge.fury.io/py/fermo_core.svg)](https://badge.fury.io/py/fermo_core)

`fermo_core` is a Python-based command line tool to process, analyze, and prioritize compounds from metabolomics data. While primarily intended to be the backend processing module of `fermo_gui` of the application FERMO, `fermo_core` can be used independently for large-scale data processing and analysis. 

This README specifies the use of `fermo_core` as command line interface. For a more user-friendly version, see the [FERMO online](https://fermo.bioinformatics.nl). Please also consult the [Documentation](https://mmzdouc.github.io/fermo_docs/).


Table of Contents
-----------------
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Usage](#usage)
- [Attribution](#attribution)
- [Contributing](#contributing)

## Installation

### With `pip` from PyPI
- Install `python 3.11.x`
- Create a virtual environment (e.g. venv, conda) and activate it
- Run `pip install fermo_core`
- Once installed, run as specified in [Run with `pip`](#run-with-pip)

### With `hatch` from GitHub
- Install `python 3.11.x`
- Install hatch (e.g. with `pipx install hatch`)
- Download or clone the [repository](https://github.com/mmzdouc/fermo_core)
- (Change into the fermo_core base directory if not already present)
- Run `hatch -v env create`
- Once installed, run as specified in [Run with `hatch`](#run-with-hatch)

### With `conda` from GitHub
- Install conda (e.g. miniconda)
- Create a conda environment with `conda create --name fermo_core python=3.11`
- Activate the conda environment with `conda activate fermo_core`
- Download or clone the [repository](https://github.com/mmzdouc/fermo_core)
- (Change into the fermo_core base directory if not already present)
- Run `pip install -e .`
- Once installed, run as specified in [Run with `conda`](#run-with-conda)

## Quick Start

### Run with `pip`
- `fermo_core --parameters <your_parameter_file.json>`

### Run with `hatch`:
- `hatch run fermo_core --parameters <your_parameter_file.json>`

### Run with `conda`:
- `python fermo_core/main.py --parameters <your_parameter_file.json>`

## Usage

`fermo_core` can be used both as a command line interface as well as a library.

All parameters and input data are specified in a `parameters.json` file be formatted following the schema specified in `fermo_core/config/schema.json`. See the example in `example_data/case_study_parameters.json` and/or consult the [Documentation](https://mmzdouc.github.io/fermo_docs/home/core.parameters/).

As **minimum** data input, fermo_core` requires a pre-processed **peaktable** summarizing the detected molecular features (**no raw data**). This peaktable must:
- Derive from liquid chromatography electrospray ionization (tandem) mass spectrometry **(LC-ESI-(MS/)MS)**
- Constitute of samples acquired at identical **concentration/dilution** and identical **injection volume**
- Be acquired using **untargeted** Data-dependent acquisition **(DDA)**
- Be of high resolution (ideally, **<20 ppm** mass deviation)
- Be in a single polarity (either **positive** or **negative** ion mode)

Optionally (but recommended), `fermo_core` also accepts the following file types:
- Mass fragmentation **(MS/MS)** accompanying the peak table
- Metadata on **sample grouping**
- **Phenotype** (bioactivity) data associated with the samples
- A **spectral library**
- An [**MS2Query**](https://github.com/iomega/ms2query) results file
- An [**antiSMASH**](https://antismash.secondarymetabolites.org) results folder

For more information on input and output files, their format, and their purpose, consult the [Documentation](https://mmzdouc.github.io/fermo_docs/home/input_output/).

## Attribution

### License

`fermo_core` is an open source tool licensed under the MIT license (see [LICENSE](LICENSE.md)).

### Publications

See [FERMO online](https://fermo.bioinformatics.nl/) for information on citing `fermo_core`.

### Authors
Mitja M. Zdouc <zdoucmm@gmail.com>

## Contributing

Contributions, whether filing an issue, making a pull request, or forking, are appreciated. Please see [Contributing](CONTRIBUTING.md) for more information on getting involved.
Contributors agree to adhere to the specified [Code of Conduct](CODE_OF_CONDUCT.md).
For technical details, see the For Developers pages in the [Documentation](https://mmzdouc.github.io/fermo_docs/for_devs/overview/).
