Metadata-Version: 2.4
Name: moses-hplc
Version: 1.0.0
Summary: MOSES: Molecular Separation Software
Author-email: Mohammad Haddadnia <mohammad_haddadnia@dfci.harvard.edu>, Malcolm Sim <malcolm.sim@mail.utoronto.ca>, Kazuhiro Hotta <kazu.hotta@utoronto.ca>, Han Hao <hann.hao@utoronto.ca>, Martin Seifrid <m_seifrid@ncsu.edu>, Felix Strieth-Kalthoff <strieth-kalthoff@uni-wuppertal.de>
Maintainer-email: Mohammad Haddadnia <mohammad_haddadnia@dfci.harvard.edu>, Felix Strieth-Kalthoff <strieth-kalthoff@uni-wuppertal.de>
Project-URL: Homepage, https://gitlab.com/aspuru-guzik-group/self-driving-lab/instruments/moses
Project-URL: Repository, https://gitlab.com/aspuru-guzik-group/self-driving-lab/instruments/moses.git
Project-URL: Bug Tracker, https://gitlab.com/aspuru-guzik-group/self-driving-lab/instruments/moses/-/issues
Keywords: chemistry,automation,HPLC-MS,Thermo Fisher,Agilent,chromatography,mass spectrometry
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Chemistry
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: setuptools
Requires-Dist: wheel
Provides-Extra: test
Requires-Dist: black; extra == "test"
Requires-Dist: flake8; extra == "test"
Requires-Dist: mypy; extra == "test"
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: hypothesis; extra == "test"
Requires-Dist: flake8-pyproject; extra == "test"
Provides-Extra: all
Requires-Dist: numpy; extra == "all"
Requires-Dist: torch; extra == "all"
Requires-Dist: pandas; extra == "all"
Requires-Dist: scipy; extra == "all"
Requires-Dist: matplotlib; extra == "all"
Requires-Dist: pysmiles; extra == "all"
Requires-Dist: pybaselines; extra == "all"
Requires-Dist: obonet; extra == "all"
Requires-Dist: bidict; extra == "all"
Requires-Dist: IsoSpecPy; extra == "all"
Requires-Dist: pymassspec; extra == "all"
Requires-Dist: pythonnet; python_version < "3.14" and extra == "all"
Requires-Dist: agilent-decode; extra == "all"
Provides-Extra: win32
Requires-Dist: setuptools; extra == "win32"
Requires-Dist: wheel; extra == "win32"
Requires-Dist: flake8; extra == "win32"
Requires-Dist: pytest; extra == "win32"
Requires-Dist: pytest-cov; extra == "win32"
Requires-Dist: hypothesis; extra == "win32"
Requires-Dist: flake8-pyproject; extra == "win32"
Requires-Dist: numpy==1.24.4; sys_platform == "win32" and extra == "win32"
Requires-Dist: pandas==2.0.3; sys_platform == "win32" and extra == "win32"
Requires-Dist: scipy==1.9.1; sys_platform == "win32" and extra == "win32"
Requires-Dist: matplotlib==3.5.3; sys_platform == "win32" and extra == "win32"
Requires-Dist: cftime==1.5.1.1; sys_platform == "win32" and extra == "win32"
Requires-Dist: netCDF4==1.6.0; sys_platform == "win32" and extra == "win32"
Requires-Dist: pymassspec; sys_platform == "win32" and extra == "win32"
Requires-Dist: IsoSpecPy; sys_platform == "win32" and extra == "win32"
Requires-Dist: pythonnet; sys_platform == "win32" and extra == "win32"
Requires-Dist: pysmiles; extra == "win32"
Requires-Dist: pybaselines; python_version < "3.9" and extra == "win32"
Requires-Dist: pybaselines; python_version >= "3.9" and extra == "win32"
Requires-Dist: obonet; extra == "win32"
Requires-Dist: bidict; extra == "win32"
Requires-Dist: agilent-decode; extra == "win32"

![Python Version](https://img.shields.io/badge/Python-3.8%2B-blue?logo=python&logoColor=white)
![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
![Code Style: black](https://img.shields.io/badge/Code%20Style-Black-000000.svg)
![Testing](https://gitlab.com/aspuru-guzik-group/self-driving-lab/instruments/moses/badges/develop/pipeline.svg)
![Release](https://gitlab.com/aspuru-guzik-group/self-driving-lab/instruments/moses/-/badges/release.svg)

# MoSeS: Molecular Separation Software
MoSeS is a comprehensive solution for automating High-Performance Liquid Chromatography-Mass Spectrometry (HPLC-MS) workflows. Covering instrument control, parameter optimization, and data analysis, this module streamlines the analytical process. It provides a user-friendly interface to enhance efficiency and reproducibility in HPLC-MS experiments.

## Installation

```bash
git clone https://gitlab.com/aspuru-guzik-group/self-driving-lab/instruments/moses.git 
pip install -e .
```

After installtion, run the following to let MoSeS know where the SDKs of your instrument(s) are located, so it can interact with your instrument:

```python
import moses

# ThermoFisher
moses.set_config(
    instrument="thermo",
    sdk_dir="path/to/thermo/sdk",
    tracefinder="path/to/thermo/tracefinder"
)

# Agilent
moses.set_config(
    instrument="agilent",
    sdk_dir="path/to/agilent/sdk",
    automation_core="path/to/agilent/automation_core",
    automation_instrument="path/to/agilent/automation_instrument",
)
```

## Usage

MoSeS consists of five submodules:

<center>

|       Module        |                       Description                       |
| ------------------- | ------------------------------------------------------- |
|  `moses.datatypes`  | Data structures for handling HPLC-MS data               |
|  `moses.analyzer`   | Analysis of HPLC-MS data                                |
|  `moses.graphy`     | Plotting for HPLC-MS data                               |
|  `moses.chromeleon` | Python controller for ThermoFisher HPLC-MS instruments  |
|  `moses.agilent`    | Python controller for Agilent HPLC-MS instruments       |


</center>

### Datatypes/Data Structures (`moses.datatypes`)

Provides specialized data structures built on <a href="https://numpy.org/">NumPy</a> for efficient analysis of HPLC-MS data. Tailored for organizing mass spectra, chromatographic profiles, and metadata, these structures offer a seamless integration into Python workflows, enabling streamlined processing and manipulation of complex HPLC-MS datasets.

### Data Analyzer (`moses.analyzer`)

Provides comprehensive data analysis toolkit tailored for HPLC-MS datasets. Leveraging advanced algorithms and statistical methods, it provides functionalities for peak detection, spectra matching, and peak annotation, allowing the analysis of complex chromatographic and mass spectrometric data effortlessly.

### Graphy (`moses.graphy`)

Specialized extension built on top of <a href="https://matplotlib.org/">matplotlib</a>, tailored for HPLC-MS data visualization. It provides a convenient interface for researchers and analysts to generate informative and customizable plots

### Instrument Control

#### Chromeleon (`moses.chromeleon`)

Python controller for Thermo Fisher HPLC-MS instrument. Provides a user-friendly interface to automate instrument operation, data acquisition, and method development, making it an invaluable tool for researchers and scientists looking to streamline their experiments and data collection processes on Thermo Fisher HPLC-MS systems.

#### Agilent (`moses.agilent`)

Python controller for Agilent HPLC-MS instrument. Provides a user-friendly interface to automate instrument operation, data acquisition, and method development, making it an invaluable tool for researchers and scientists looking to streamline their experiments and data collection processes on Agilent HPLC-MS systems.

## Acknowledgments

The following people are acknowledged for assisting in the development of MoSeS and its functionality in various ways:

* Mohammad Haddadnia
* Felix Strieth-Kalthoff
* Malcolm Sim
* Han Hao
* Kazuhiro Hotta
* Tony C. Wu
* Martin Seifrid
* Shi Xuan Leong
* Natalia Ivanova
* Chris Crebolder
