Skip to main content

msfiddle

License PyPI Documentation

msfiddle is the PyPI package for FIDDLE, a deep learning method for chemical formula prediction from tandem mass spectra (MS/MS).

Highlights

  • Predict molecular formulas from MS/MS spectra with pre-trained FIDDLE models.
  • Use the package from the command line, from native Python arrays, or from MGF files.
  • Reuse loaded models for efficient batched prediction in Python applications.
  • Incorporate BUDDY and SIRIUS candidate outputs in file-based workflows.

Paper: https://www.nature.com/articles/s41467-025-66060-9

Documentation: https://msfiddle.readthedocs.io

For the full experimental codebase, see https://github.com/JosieHong/FIDDLE.

Installation

pip install msfiddle              # base install, no PyTorch
pip install "msfiddle[inference]" # base install + PyTorch (needed for predictions and the CLI)

For a custom PyTorch build (CUDA, ROCm, Apple Silicon, etc.), install torch first via the official guide, then pip install msfiddle.

Usage

Command-line interface

Download the pre-trained checkpoints before running predictions:

# Download models to the default location (~/.msfiddle/check_point)
msfiddle-download-models

# Or specify a custom location and models
msfiddle-download-models --destination /path/to/models \
                          --models fiddle_tcn_qtof fiddle_rescore_qtof

All msfiddle 2.x releases reuse the FIDDLE v2.0.0 checkpoint assets.

Run the packaged demo:

msfiddle --demo --result_path ./output_demo.csv --device 0

Run the demo on CPU:

msfiddle --demo --result_path ./output_demo.csv --device 0 --no_cuda

Run prediction on your own MGF file:

msfiddle --test_data /path/to/data.mgf \
         --instrument_type orbitrap \
         --result_path /path/to/results.csv \
         --device 0

--instrument_type accepts orbitrap (default) or qtof. If checkpoints are missing, the CLI exits with instructions to run msfiddle-download-models.

Python API

Use predict_from_spectrum for one-off prediction from native MS/MS arrays:

from msfiddle import predict_from_spectrum

candidates = predict_from_spectrum(
    mz_array=[60.0, 85.0, 100.0, 125.0, 150.0],
    intensity_array=[10.0, 50.0, 20.0, 35.0, 15.0],
    precursor_mz=180.063,
    adduct="[M+H]+",
    top_k=5,
    instrument_type="orbitrap",
    collision_energy="Unknown",
    device="cpu",
)

For repeated or batched prediction, reuse MsFiddlePredictor so checkpoints are loaded once:

from msfiddle import MsFiddlePredictor

predictor = MsFiddlePredictor(instrument_type="orbitrap", device="cpu")

results = predictor.predict_batch(
    [
        {
            "id": "sample-1",
            "mz_array": [60.0, 85.0, 100.0, 125.0, 150.0],
            "intensity_array": [10.0, 50.0, 20.0, 35.0, 15.0],
            "precursor_mz": 180.063,
            "adduct": "[M+H]+",
            "collision_energy": "Unknown",
        }
    ]
)

Python APIs do not download model checkpoints unless download_models=True is passed.

Input and output formats

CSV output

The CLI writes a CSV file with one row per spectrum. Key columns include:

Column Description
ID Spectrum title from the MGF file.
Mass Neutral mass calculated from precursor m/z and adduct.
Pred Formula Initial formula predicted by the neural model.
Pred Mass Model-predicted mass.
Pred Atom Num Model-predicted atom count.
Pred H/C Num Model-predicted H/C count.
Refined Formula (0..4) Ranked refined formula candidates for the default top-5 output.
Refined Mass (0..4) Masses for the default top-5 refined candidates.
Rescore (0..4) Confidence scores for the default top-5 refined candidates.

API output

The Python predict_from_spectrum() API returns a list of candidate dictionaries:

[
    {
        "formula": "C8H10O",
        "score": 0.94,
        "mass": 122.073,
        "metadata": {...},
    }
]

predict_batch() returns one record per input spectrum with id, candidates, and metadata.

Native/original BUDDY and SIRIUS outputs

Use the same MGF input file to generate native BUDDY/msbuddy and SIRIUS outputs. msfiddle accepts these native/original files directly through --buddy_path and --sirius_path. The older msfiddle-normalized CSV formats documented in docs/formats.rst are deprecated and will be removed in msfiddle 3.0.0; loading them emits a DeprecationWarning.

msbuddy -mgf /path/to/data.mgf \
        -output /path/to/buddy_output \
        -ms orbitrap \
        -p -n_cpu 12 \
        -d -hal

msbuddy writes msbuddy_result_summary.tsv; -d also writes detailed per-query formula_results.tsv files. Pass either the summary file or the output directory to --buddy_path. The full output directory is preferred because it includes per-candidate FDR scores for ranks beyond rank 1.

sirius --input /path/to/data.mgf \
       --project /path/to/sirius_project \
       formulas --profile orbitrap

sirius --project /path/to/sirius_project \
       summaries --top-k-summary=5 \
       --output /path/to/sirius_output

SIRIUS writes a project space and exports summary files such as formula_identifications.tsv. Pass either a formula-identification summary file or the summary output directory to --sirius_path. SIRIUS 6 may require sirius login before formula computation.

MGF input

The required MGF fields are TITLE, PRECURSOR_MZ, PRECURSOR_TYPE, and COLLISION_ENERGY:

BEGIN IONS
TITLE=EMBL_MCF_2_0_HRMS_Library000529
PEPMASS=111.02016
CHARGE=1-
PRECURSOR_TYPE=[M-H]-
PRECURSOR_MZ=111.02016
COLLISION_ENERGY=50.0
SMILES=[H]c1c([H])n([H])c(=O)n([H])c1=O
FORMULA=C4H4N2O2
THEORETICAL_PRECURSOR_MZ=111.019453
PPM=6.368253318682487
SIMULATED_PRECURSOR_MZ=111.01946768634916
41.0148 0.329893 
41.9986 89.226766 
55.8055 0.200544 
56.2625 0.194617 
67.0304 0.330612 
68.0258 0.402906 
111.0203 100.0 
112.0515 1.2809 
END IONS

Advanced Usage

Inspect checkpoint paths:

msfiddle-checkpoint-paths

Use custom config and checkpoint paths:

msfiddle --test_data /path/to/data.mgf \
         --config_path /path/to/config.yml \
         --resume_path /path/to/tcn_model.pt \
         --rescore_resume_path /path/to/rescore_model.pt \
         --result_path /path/to/results.csv \
         --device 0

Citation

@article{hong2025fiddle,
  title={FIDDLE: a deep learning method for chemical formulas prediction from tandem mass spectra},
  author={Hong, Yuhui and Li, Sujun and Ye, Yuzhen and Tang, Haixu},
  journal={Nature Communications},
  volume={16},
  number={1},
  pages={11102},
  year={2025},
  publisher={Nature Publishing Group UK London}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

msfiddle-2.1.0.tar.gz (64.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

msfiddle-2.1.0-py3-none-any.whl (69.1 kB view details)

Uploaded Python 3

File details

Details for the file msfiddle-2.1.0.tar.gz.

File metadata

  • Download URL: msfiddle-2.1.0.tar.gz
  • Upload date:
  • Size: 64.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for msfiddle-2.1.0.tar.gz
Algorithm Hash digest
SHA256 e3a35d14a534795066468a1f5688b25e177a9ca171fc3a28ab3fb236b67c7ca0
MD5 2e7baf8e8def0ddc4716e166ca9115af
BLAKE2b-256 495f7010960e9c807cd88ad213b41f3705bd8a626c36c5386625ba977c7f3b94

See more details on using hashes here.

File details

Details for the file msfiddle-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: msfiddle-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 69.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for msfiddle-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48b6a5af4cb44dc19e2687e302ecb5ce1a70a8cd89b102e4fc2a02220c41dd11
MD5 76240b05f9eaa7304a15ce8d99748c8f
BLAKE2b-256 c4ab88fd66e082c67927d495acaf3c2d35e263aa7f982a861e52460aec946912

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 files

2.0.1

2 files

2.0.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page