IsoDec
IsoDec assigns charge states and deconvolves isotopically resolved mass spectrometry data. Its native core uses IsoGen for peptide and RNA isotope distributions.
Installation
Install a published wheel:
python -m pip install isodec
IsoDec supports Python 3.9 and newer on 64-bit Windows, Linux, and macOS, including Apple silicon. Native builds are also tested on ARM64 Windows and Linux. 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:
git clone --recurse-submodules https://github.com/michaelmarty/IsoDec.git
python -m pip install ./IsoDec
Python usage
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:
python -m pip install "isodec[unidec]"
Command line
isodec spectrum.txt --centroided -o assigned_peaks.tsv
python -m isodec --help
Development
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.
Fragment matching
Match deconvolved neutral masses to theoretical protein fragments with a 5 ppm default tolerance:
from isodec import match_fragments
match_fragments(pks, "PEPTIDE", ion_types="by", monoisotopic=True)
print(pks.fragment_match_percent, pks.sequence_coverage)
print(pks.fragment_matches)
Each matched peak receives a sequence_match annotation such as "b6".
Pass allow_duplicate_assignments=True to retain every valid annotation as a
list instead of selecting the assignment with the smallest ppm error.
License and citation
IsoDec is released under the BSD 3-Clause License. See 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,” J. Am. Chem. Soc. 2025, 147, 21610–21620. Machine-readable metadata is provided in CITATION.cff.
Changelog
2.0.2
- Added fragmentation matching options.
- Updated to IsoGen 1.1.1 for ProForma fragment masses and corrected z-ion annotations.
2.0.1
- Improved native processing performance with optimized AVX matrix operations, linear-time peak detection, faster isotope matching, and reusable work buffers.
- Moved installed native libraries and executables into
isodec/bin; Windows binaries are included with the package. - Added processing-time and matched-peak reporting for native spectrum runs.
- Added automated MSVC-versus-IntelLLVM performance benchmarking.
2.0.0
- Split IsoDec from UniDec into the standalone
isodecpackage, with IsoGen as a submodule and an independent version and release cycle. - Added experimental charge-state assignment directly from profile-mode data.
- Added cross-platform tests—including native ARM64 Windows and Linux coverage—documentation, and automated wheel and source distribution publishing.
1.0.0
- Initial IsoDec release with IsoGen integration for isotopic charge-state assignment and deconvolution of mass spectrometry data, distributed as part of UniDec.
Release files for isodec 2.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| isodec-2.0.2.tar.gz | 58.5 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| isodec-2.0.2-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| isodec-2.0.2-py3-none-manylinux_2_31_x86_64.whl | Python 3 | none | Linux glibc 2.31+ x86-64 | Details |
| isodec-2.0.2-py3-none-macosx_15_0_x86_64.whl | Python 3 | none | macOS 15.0+ x86-64 | Details |
| isodec-2.0.2-py3-none-macosx_14_0_arm64.whl | Python 3 | none | macOS 14.0+ ARM64 | Details |
Total release size: 157.0 MB
Release files / isodec-2.0.2.tar.gz
| Download URL | isodec-2.0.2.tar.gz |
|---|---|
| Size | 58.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79dc33acf7105d10641f0065ca364b85c91bb2431c5b5480765ec06968c32b36
|
|
BLAKE2b-256 checksum How to use checksums |
483d548dd4cf7add61b2f1c554b4e8d9fc512b61dfa4aeaddc223a73088bdc82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.
Transparency logRelease files / isodec-2.0.2-py3-none-win_amd64.whl
| Download URL | isodec-2.0.2-py3-none-win_amd64.whl |
|---|---|
| Size | 23.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
50328ba26fd482640de8a0aedc69c6c4843b712341cdb414da4766779d14ff0e
|
|
BLAKE2b-256 checksum How to use checksums |
b0b816433350e2c4d7dae4bf9f07cb04b652ae6f5d0cbc32cde07c4c0ed7357f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.
Transparency logRelease files / isodec-2.0.2-py3-none-manylinux_2_31_x86_64.whl
| Download URL | isodec-2.0.2-py3-none-manylinux_2_31_x86_64.whl |
|---|---|
| Size | 25.2 MB |
| Tags | Linux glibc 2.31+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
f6a2bc23bf584a5adf10ca06bea12e3520a43ae83a67d624ef2345a2d4dde3ed
|
|
BLAKE2b-256 checksum How to use checksums |
bd1a3c36d41982ff75d97158729519e1824cd03f97f9a8e9773311fe659c72ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.
Transparency logRelease files / isodec-2.0.2-py3-none-macosx_15_0_x86_64.whl
| Download URL | isodec-2.0.2-py3-none-macosx_15_0_x86_64.whl |
|---|---|
| Size | 25.4 MB |
| Tags | Python 3 macOS 15.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
46440aac2c8ce7537c91c59a51151d73c4095233b50fa1a916330f6bc9b14460
|
|
BLAKE2b-256 checksum How to use checksums |
ebd0d5b5b1fb6067664044d6f540f7826b1f2e00509d5b0a7c08f2c6828a1131
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.
Transparency logRelease files / isodec-2.0.2-py3-none-macosx_14_0_arm64.whl
| Download URL | isodec-2.0.2-py3-none-macosx_14_0_arm64.whl |
|---|---|
| Size | 24.6 MB |
| Tags | Python 3 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
cb148f06b7edb92b56e38f6e7e0f4b6207215e0adfe7b16b7e2919de12043aa2
|
|
BLAKE2b-256 checksum How to use checksums |
077c783a5082d90dfcf1c0c6976f7c1891e3a4f984fafb5f644e960e9c070fbb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.
Transparency log