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.10 and newer on 64-bit Windows, Linux, and macOS, including Windows ARM64 and Apple silicon. Native builds are also tested on ARM64 Linux; the Windows ARM64 wheel is tested with Python 3.14. 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. IsoDec pins IsoGen and the pyisogen package to version 1.1.3:

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)

Mass groups use peak insertion order by default. To evaluate descending matched intensity order, set engine.config.mass_group_order = "matched_intensity" before processing. Intensity order applies within each incoming spectrum. Native grouping handles new collections; appending scans uses the Python incremental merge rules, with the same double-precision group summaries. The ETD example and frozen grouping reference are in tests/ca_etd.dat and tests/ca_etd_unidecfiles/.

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.

Plotting Sequence

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

  • Updated to IsoGen 1.1.3 for improved fragment matching.
  • Require Python 3.10 or newer.
  • Moved mass grouping and merging into the native core for improved performance and reduced memory usage.
  • Fixed the intensity-weighted average of monoisotopic mass candidates during mass grouping and prevented merges from modifying the first peak's candidates.
  • Fixed isotope-distribution mass-axis fitting to shift toward observed centroids in either direction, preventing accumulated positive mass drift.
  • Use matched centroids when merging neutral-mass groups, so unrelated peaks in a local isotope window do not distort the fitted distribution.

2.0.4

  • Added Windows and Linux ARM64 wheels built and tested on native ARM hardware.

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.

Metadata

Release files for isodec 2.0.5

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.5
File Size Uploaded
isodec-2.0.5.tar.gz 59.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for isodec 2.0.5
File
isodec-2.0.5-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
isodec-2.0.5-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
isodec-2.0.5-py3-none-manylinux_2_31_x86_64.whl Python 3 none Linux glibc 2.31+ x86-64 Details
isodec-2.0.5-py3-none-manylinux_2_31_aarch64.whl Python 3 none Linux glibc 2.31+ ARM64 Details
isodec-2.0.5-py3-none-macosx_15_0_x86_64.whl Python 3 none macOS 15.0+ x86-64 Details
isodec-2.0.5-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

Total release size: 205.7 MB

Release files / isodec-2.0.5.tar.gz

Download URL isodec-2.0.5.tar.gz
Size 59.7 MB
Tags Source
SHA-256 checksum
How to use checksums
d3a5d3c57fc9494f52d409576a9c3c607248c7c88a4a72e4c00c0207be7a9ff0
BLAKE2b-256 checksum
How to use checksums
3266fe35be225e62d678d9f699275ec5422c89cbf53dbc3abb3fc2603ee861b6
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 Oct 1, 2026.

Transparency log

Release files / isodec-2.0.5-py3-none-win_arm64.whl

Download URL isodec-2.0.5-py3-none-win_arm64.whl
Size 22.9 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
559020bb5011a5e1f4dfdd55f5385ef6a9d59b43003de62c106c65496bb8dfaa
BLAKE2b-256 checksum
How to use checksums
ea9ad7b5b7d6a99d77cd3690434ce01d3d431fa0bbf93aa62f206d96150cb35d
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 Oct 1, 2026.

Transparency log

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

Download URL isodec-2.0.5-py3-none-win_amd64.whl
Size 23.3 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
76fd38002d9bbd7586df002597042243734606596daf4622546e9039c81a68f2
BLAKE2b-256 checksum
How to use checksums
09c5a28e04e29de18aec45f6a93127d0d39ed2f62488d922861ca4d2cfd731e1
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 Oct 1, 2026.

Transparency log

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

Download URL isodec-2.0.5-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
58a0c3f4c00db48d2a69206535b27f9b59d3229992b411080dc476a743f114a6
BLAKE2b-256 checksum
How to use checksums
a12078b60a9f9082e07f9d81b3e177a29243b4d881eb0c399ec0088738344a0f
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 Oct 1, 2026.

Transparency log

Release files / isodec-2.0.5-py3-none-manylinux_2_31_aarch64.whl

Download URL isodec-2.0.5-py3-none-manylinux_2_31_aarch64.whl
Size 24.6 MB
Tags Linux glibc 2.31+ ARM64 Python 3
SHA-256 checksum
How to use checksums
1a5f29242ca5c469aad5a9982723e6014ede6a98293a1a30589297de2c5595bc
BLAKE2b-256 checksum
How to use checksums
eac25320fb0ffef2f9cd3788705683f5c806149ff31affa11fff0574d1dc7e76
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 Oct 1, 2026.

Transparency log

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

Download URL isodec-2.0.5-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
152b7d1e1fab7492c64bf0adee43a1da6af18049c78f57aaa10f1c44ed903061
BLAKE2b-256 checksum
How to use checksums
93dfd4a351d5e47dd29e0587943042a8ad6bb0d68b4a05d8c8722a8fcac09c36
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 Oct 1, 2026.

Transparency log

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

Download URL isodec-2.0.5-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
82b41392233d6250214e2d153e346573845a9807d7616947457d5714f69a39f3
BLAKE2b-256 checksum
How to use checksums
33c668f29e95e479c662a19ed98edb3429c787b6c322957582054c222db05247
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 Oct 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.5 This release

7 release files

2.0.4

7 release files

2.0.3

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