Skip to main content

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. Pass match_multiple_monoisotopics=False to match only each peak's monoiso mass instead of all masses in monoisos.

To view matches along a wrapped sequence, run python tests/show_fragment_matches.py from the IsoDec directory. The demo uses IsoGen's carbonic anhydrase ETD masses. For an embedded view, call plot_fragment_matches(ax, sequence, pks) from isodec.fragment_view with an existing Matplotlib axis. Modified residues are shown in red. The standalone view is sized for a two-column figure; save the returned Matplotlib figure as SVG or PDF for publication.

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.3

  • Added fragment matching viewer.

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 isodec package, 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.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for isodec 2.0.3
File Size Uploaded
isodec-2.0.3.tar.gz 58.5 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for isodec 2.0.3
File
isodec-2.0.3-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
isodec-2.0.3-py3-none-manylinux_2_31_x86_64.whl Python 3 none Linux glibc 2.31+ x86-64 Details
isodec-2.0.3-py3-none-macosx_15_0_x86_64.whl Python 3 none macOS 15.0+ x86-64 Details
isodec-2.0.3-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.3.tar.gz

Download URL isodec-2.0.3.tar.gz
Size 58.5 MB
Tags Source
SHA-256 checksum
How to use checksums
7149640646702a183c8ce7d11d8ce58b36fbe2be2f582179dd47fecee9a6c847
BLAKE2b-256 checksum
How to use checksums
1172b8811a8c90e46776d7bc2667cad1df5e6a6a94a40f855c465965e49681bd
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 24, 2026.

Transparency log

Release files / isodec-2.0.3-py3-none-win_amd64.whl

Download URL isodec-2.0.3-py3-none-win_amd64.whl
Size 23.3 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
78aff6d2a33b362302f1d591118a2d9a16e1422baaf1b0fc0ad6ce9ab0d6e175
BLAKE2b-256 checksum
How to use checksums
ee21f372c5359e17988e4e5aad288a026c88e721d22342ec0ded54457b7af528
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 24, 2026.

Transparency log

Release files / isodec-2.0.3-py3-none-manylinux_2_31_x86_64.whl

Download URL isodec-2.0.3-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
ad6522d4f09754a7d3f540d8d37a9fa683a165470b3fa0ed33adf0d782149448
BLAKE2b-256 checksum
How to use checksums
1f69de649213d4d716494026b49708d4cdaefe97ccf0401accd514f6e3f22a24
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 24, 2026.

Transparency log

Release files / isodec-2.0.3-py3-none-macosx_15_0_x86_64.whl

Download URL isodec-2.0.3-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
2dc14b093ed4e4c3dc4f05ab2dc62b9eeeb89911e4a6e887b9b6950126c22a39
BLAKE2b-256 checksum
How to use checksums
a4f11023f6591237b855134ad37255b2b038af819402a30a6014d2e8ce4d404d
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 24, 2026.

Transparency log

Release files / isodec-2.0.3-py3-none-macosx_14_0_arm64.whl

Download URL isodec-2.0.3-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
8b36090820ccfe00a4bf41dec15851be0a78ea3254d6e712ec90c200ad615bf1
BLAKE2b-256 checksum
How to use checksums
180ecf1d9ae191ed9e933957ec6b0403e02f001d3acc6a0b1693deb8fd676701
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 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.3 This release

5 release files

2.0.2

5 release files

2.0.1

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page