Version 1.0#

The 1.0 demregpy release focuses on performance and documentation. The solver is 4–7x faster, and the documentation has been reorganised into focused gallery examples.

Performance#

Typical runs are 4–7x faster than before, depending on input shape and solve settings.

Benchmark figure showing the speedups included in demregpy 1.0.

This makes larger maps, DEMograms, and other batch workflows practical. I get ~100k DEMs per second on my home desktop.

Dependency Updates#

demregpy now targets Python 3.12+, NumPy 2+, and treats Matplotlib as a core dependency.

Solver and API Improvements#

demregpy.dn2dem() now accepts up to three leading axes (channel-last), so stacks such as (ntime, nx, ny, nf) can be inverted directly. Per-filter gloci masks and broadcasting of a single dem_norm0 curve across larger inputs are now supported.

Input validation is stricter: shape mismatches, invalid weighting inputs, and malformed response matrices raise explicit errors instead of failing silently.

New public helpers: demregpy.load_aia_response() (bundled AIA response files), demregpy.plotting.plot_dem() (1-D DEM plots), and demregpy.synthetic.synthesize_counts() (synthetic counts from a response matrix).

Documentation and Examples#

Documentation is now organised as focused gallery examples instead of a limited number of monolithic scripts, covering individual tasks: plotting a DEM curve, inspecting AIA responses, generating synthetic counts, and running inversions on synthetic or real data.