Metadata-Version: 2.4
Name: isodec
Version: 2.0.0b2
Summary: Charge-state assignment and deconvolution of isotopically resolved mass spectra
Keywords: mass spectrometry,charge state,deconvolution,isotope distribution
Author-Email: "Michael T. Marty" <mtmarty@utexas.edu>
License-Expression: BSD-3-Clause
License-File: LICENSE
License-File: THIRD_PARTY_NOTICES.md
License-File: extern/IsoGen/LICENSE
License-File: extern/IsoGen/src/fftw/COPYING
License-File: extern/IsoGen/src/fftw/COPYRIGHT
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
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: Topic :: Scientific/Engineering :: Chemistry
Project-URL: Homepage, https://github.com/michaelmarty/IsoDec
Project-URL: Repository, https://github.com/michaelmarty/IsoDec
Project-URL: Issues, https://github.com/michaelmarty/IsoDec/issues
Project-URL: Documentation, https://michaelmarty.github.io/IsoDec/
Requires-Python: >=3.9
Requires-Dist: matplotlib>=3.7
Requires-Dist: numba<0.62,>=0.57; sys_platform == "darwin" and platform_machine == "x86_64"
Requires-Dist: numba>=0.57; sys_platform != "darwin" or platform_machine != "x86_64"
Requires-Dist: numpy>=1.23
Requires-Dist: pandas>=2.0
Requires-Dist: pyisogen>=1.0.8
Requires-Dist: scipy>=1.9
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.6; extra == "docs"
Provides-Extra: training
Requires-Dist: matchms>=0.26; extra == "training"
Requires-Dist: torch>=2.1; extra == "training"
Provides-Extra: unidec
Requires-Dist: UniDec>=8.2.1; extra == "unidec"
Provides-Extra: release
Requires-Dist: build>=1.2; extra == "release"
Requires-Dist: twine>=5; extra == "release"
Description-Content-Type: text/markdown

# IsoDec

IsoDec assigns charge states and deconvolves isotopically resolved mass
spectrometry data. Its native core uses [IsoGen](https://github.com/michaelmarty/IsoGen)
for peptide and RNA isotope distributions.

## Installation

Install a published wheel:

```shell
python -m pip install isodec
```

IsoDec supports Python 3.9 and newer on 64-bit Windows, Linux, and macOS.
Compatible wheels include the native IsoDec and IsoGen libraries. A source
build requires CMake 3.22.1 or newer, a C/C++ compiler, FFTW, and an initialized
IsoGen submodule:

```shell
git clone --recurse-submodules https://github.com/michaelmarty/IsoDec.git
python -m pip install ./IsoDec
```

## Python usage

```python
import numpy as np
from isodec import IsoDecRuntime

spectrum = np.loadtxt("spectrum.txt")
engine = IsoDecRuntime()
peaks = engine.batch_process_spectrum(spectrum, centroided=True)

for peak in peaks:
    print(peak.mz, peak.z, peak.monoiso, peak.matchedintensity)
```

TXT, DAT, CSV, and NPZ single-scan spectra are supported without UniDec. Raw
vendor files, mzML/mzXML, and I2MS import use UniDec's extensive importer stack:

```shell
python -m pip install "isodec[unidec]"
```

## Command line

```shell
isodec spectrum.txt --centroided -o assigned_peaks.tsv
python -m isodec --help
```

## Development

```shell
git submodule update --init --recursive
python -m pip install -e ".[test]"
python -m pytest
```

Documentation sources live in `docs/` and are built with MkDocs. Release and
wheel-building details are in [PUBLISHING.md](PUBLISHING.md).

## License and citation

IsoDec is released under the BSD 3-Clause License. See
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) for IsoGen, FFTW, and Intel
runtime notices. When using IsoDec, please cite Pavek et al.,
“[A Fast Neural Network for Isotopic Charge State Assignment](https://doi.org/10.1021/jacs.5c03162),”
*J. Am. Chem. Soc.* **2025**, *147*, 21610–21620. Machine-readable metadata is
provided in [CITATION.cff](CITATION.cff).
