A Julia framework for processing, simulating, and denoising NMR data
NMRflux.jl - Overview
Package Features
- Vendor-neutral loading of NMR data (e.g. Bruker, JEOL) into a unified
SpectDataformat. - Well-structured
SpectDatatype that subtypesAbstractArrayand carries axes and metadata. - Classical NMR processing tools: Fourier transform, apodization, baseline and phase correction, slicing, etc.
- Spin dynamics simulations based on sparse matrix representations of the spin Hamiltonian and density operator (
SpinSim.jl). - Synthetic FID generation pipeline for method development and machine learning.
- Integrated machine learning workflows for spectral denoising using Flux based models.
Contents
- 1. Loading NMR Data
- 1. Classical Processing Pipeline
- User Manual
- 1. Installation
- 2. Loading NMR Data
- 3. Working with SpectData
- 4. Classical Processing Pipeline
- 5. Spin Dynamics Simulation and Synthetic FIDs (GenerateFIDs / SpinSim)
- 6. Deep Learning Spectral Denoiser
- 6.1 Overview
- 6.2 Data representation
- Dataset Format and Loaders
- Required keys in the .jld2 file
- Shape and type of each SpectData
- 6.3 TOML Configuration for Training
- 6.4 Running the training script & checkpoints
- 6.5 Inference and Plotting
- 6.5.1 Simulated datasets (paired clean/dirty)
- 6.5.2 Optional PPM configuration
- 6.6 Key Features
- 6.7 Building train/validation sets from synthetic FIDs (convenience script)
- 6.8 Building test only sets from synthetic FIDs (convenience script)
- End of Manual
- Roadmap to NMRflux.jl 1.0
- QuickStart
- 1. Installation
- 2. Load a dataset into SpectData
- 3. Classical 1D processing pipeline
- 4. Synthetic data (SpinSim / GenerateFIDs)
- 5. Toy deep learning example (SpectData + Flux)
- End of Manual
- 1. Deep Learning Spectral Denoiser
- 1.1 Overview
- 1.2 Data representation
- Dataset Format and Loaders
- Required keys in the .jld2 file
- Shape and type of each SpectData
- 1.3 TOML Configuration for Training
- 1.4 Running the training script & checkpoints
- 1.5 Inference and Plotting
- 1.5.1 Simulated datasets (paired clean/dirty)
- 1.5.2 Optional PPM configuration
- 1.6 Key Features
- 1.7 Building train/validation sets from synthetic FIDs (convenience script)
- 1.8 Building test only sets from synthetic FIDs (convenience script)
- Reference
- 1. Working with SpectData
- 1. Spin Dynamics Simulation and Synthetic FIDs (GenerateFIDs / SpinSim)
- NMRflux.jl - Overview
NMRflux.jl is a library for the processing, simulation, and interpretation of NMR data. It is the successor of an earlier toolkit (NMR.jl) developed in the Utz group and is intended to provide a more coherent, extensible, and well-documented framework.
The package grew out of concrete research needs in NMR spectroscopy, including robust data handling, flexible processing pipelines, spin simulations, and Deep learning based denoising. It is designed as a general NMR framework that can serve as a foundation for higher-level workflows, including applications where NMR data are used in quantitative studies. Many of these tools have already been used in ongoing projects, and the goal of NMRflux.jl is to collect them in a single, consistent interface that can be used both inside and outside the group.
NMRflux.jl is designed to be applicable to a wide range of NMR experiments. It aims to support standard NMR data processing workflows, spin dynamics simulations, synthetic data generation, and automated spectra cleaning. The package is intended as a flexible foundation that can be integrated into larger analysis pipelines, including applications where NMR data contribute to quantitative or multivariate studies.Everyday tasks should be straightforward with sensible defaults, while power users can access lower-level routines for fine-grained control.
Manual Outline
If you would like to get started quickly, begin with the Getting Started section in the Manual, which explains how to install the package, load data, and perform basic processing steps.
For a more complete description of the available tools, refer to the Manual and the Roadmap to 1.0, which describe the design of the data structures, processing and simulation modules, and the planned evolution towards a stable 1.0 release.
A complete list of functions, types, and modules - together with their docstrings - can be found in the API Reference.
Feedback
NMRflux.jl is under active development, and feedback is very welcome. Bug reports, feature requests, and suggestions can be submitted via the project's GitHub repository or contact marcel.utz@kit.edu by email.
Citing NMRflux.jl
If you use NMRflux.jl in published work, we would appreciate an acknowledge this by citing our work. A formal reference for NMRflux.jl is planned and will be added here once available.