About this tool
A browser-based dashboard for processing single-sided NMR relaxometry data from Kea and Tecmag spectrometers: T₂ decays (CPMG), T₁ saturation recovery and T₂–D (SSE-T₂) experiments, with uncertainty estimates, saved figures and tables, and a record of exactly how every result was produced.
Build: 7988056203, built 2026-10-20.
Your data stay on your computer
Everything is computed inside your browser tab. The files you open are read by the page and handed to a Python program running in the browser itself; nothing is uploaded, and the page has no analytics. Everything the page needs, including the Python runtime and the plotting library, is served from this site, and a content-security policy built into the page forbids it from connecting to anywhere else, so it cannot send your data out even by mistake.
Use at your own risk
- No warranty, no liability. This software is provided “as is”, without warranty of any kind, and the authors are not liable for any damages arising from its use, as set out in sections 7 and 8 of the Apache License below.
- Check results independently. Fits, inversions and uncertainty estimates depend on the model, the settings and the noise. They are estimates, not measurements, and the tool can produce a confident-looking answer from data that do not support it. Read the warnings, look at the residuals, and compare with another method before relying on a number.
- Known limits. The T₂–D inversion is regularised and ill-conditioned: signal outside the range of diffusion coefficients your b-values can resolve is extrapolation, not measurement (the page shades that range). Components that the data cannot determine are flagged but can still appear in a fit.
- Diffusion weighting. For T₂–D data the b-values are calculated here from the gradient you set (default 23.67 T/m for the Kea magnet, 6.59 T/m for the Tecmag magnet), the storage time Δ and the delays τ in acqu.par (Kea) or the pulse sequence (Tecmag), as b = (γG)² τ² (Δ + 2τ/3), not read from the spectrometer; its own axis files are only used as a cross-check. A wrong gradient rescales every diffusion coefficient by the square of the error.
- Not for clinical, safety-critical or regulatory use. It is research software under development.
Licence
Copyright 2026 Tyler Meldrum and the nmr-dashboard contributors. Released under the Apache License, Version 2.0: you may use, copy, modify and redistribute it, including in your own projects, provided you keep the licence and the notices in the NOTICE file. The source is at github.com/tkmeldrum/nmr-dashboard.
The physics in this tool
The models and relations the analysis assumes, each with its equation, what it describes and a link to the lines of code that implement it, are on their own page: The physics in this tool. In short: exponential T₂ decay; multi-exponential decay; saturation recovery (T₁); diffusion attenuation; diffusion weighting b of the stimulated echo; T₂–D signal; inversion kernels; range of D the b-values can resolve; position along the gradient; phasing and integrating the echoes; noise level from the imaginary channel; fit quality; choosing the number of components; confidence intervals from least squares; regularisation of the inversions.
Software this tool is built on
It runs on, and could not exist without, these open-source packages. Please cite them where you use results from this tool.
| Software | Version | Licence | Used for |
|---|---|---|---|
| Pyodide (with CPython) | 0.27.7 | MPL-2.0 (CPython: PSF-2.0) | Runs the Python analysis in the browser |
| NumPy | 2.0.2 | BSD-3-Clause | Arrays and linear algebra |
| SciPy | 1.14.1 | BSD-3-Clause | Fitting, optimisation, signal processing |
| Matplotlib | 3.8.4 | Matplotlib licence (PSF-based) | Saved figures |
| emcee | 3.1.6 | MIT | MCMC sampling |
| Plotly.js | 2.35.2 | MIT | Interactive plots on the page |
| Pillow, kiwisolver, fonttools, contourpy, cycler, pyparsing, python-dateutil, packaging, six, OpenBLAS, micropip and others | as in Pyodide 0.27.7 | BSD, MIT, Apache-2.0, HPND, MPL-2.0 | Dependencies of the above |
Where the code comes from
The inverse-Laplace code was developed by the author, iterated from MATLAB to Python to this tool. The MCMC uses the emcee sampler. The licences and notices of the software it runs on are in the third-party notices.
Reproducing and citing results
Every save includes provenance.json (a fingerprint of the input files, every setting, the software versions and the build above) and params_used.toml, which the command-line script reads to repeat the analysis. If you publish results from this tool, please give the build shown at the top of this page.
Feedback
There is a feedback box at the bottom of the dashboard. It opens your own mail program with a message for you to read, edit and send; the page itself sends nothing.