CHANGELOG#

v1.1.0 (2026-03-20)#

Bug fixes#

  • fix: dev environment fix (b8ef202)

Code style#

  • style: clearer separation between functionalities, and cleanup of complexity (0337a08)

  • Project: remove unused (+commented) dependencies (655d0a9)

  • docs: sorted imports in docs/conf.py (e8a80dd)

Continuous integration#

  • ci: fix pyproject sem-rel cfg syntax, pt.2 (eee9bc3)

  • ci: fix pyproject sem-rel cfg syntax (6400759)

  • ci: debug sem-rel not matching branch with wildcard option (3175bb2)

  • ci: pyproject syntax fix (34a055d)

  • ci: release fails if a version number could not be determined (a38bbfc)

  • ci: make sure release job checks out a branch name instead of commit (c0f147a)

  • ci: publish shall run on main branch only (4e66a9a)

  • ci: run release job on branches != main only (a8a36ee)

  • ci: typo (a6f7e7f)

  • ci: pypi environment restricts publishing packages from main branch only (cac2da8)

  • ci: allow semantic-release to create a new version if every branch (93575f6)

  • ci: run release job on PRs, new commit for version num should be merged to main eventually (c645a48)

  • PyPI: move from test.pypi.org to pypi.org (8028424)

  • GH Action: install dependencies from pyproject.toml (b023a96)

  • GH Action: allow other branches than main to be tested (cc1133b)

Documentation#

  • docs: updated documentation to reflect state (2fa15fd)

  • Project: remove obsolete files (d516a65)

Enh#

  • enh: server exposes latest error report (010ed6b)

  • enh: server has readiness and health reports (8ff76ab)

Performance improvements#

  • perf: move tests outside package to make it leaner (e85f1fa)

Refactoring#

  • Project: update project config with copier, replaces cookiecutter (17a973c)

Unknown Scope#

  • Last sample endpoint (1384666)

  • added a dry-run option. (6ca935d)

  • reprioritized the remaining upgrades (b211659)

  • added U3: profiles/templates backend with MOUSE/SAXSess examples (b6774da)

  • added U2 (source patch endpoint) and U5 (better run summaries) (30be686)

  • added quick start documentation on the web API (b5e7659)

  • added end-to-end FastAPI tests (39c57de)

  • web api buildout with better partial graph refresh (2d1e023)

  • basic web functionality wired up (dc32c6a)

  • added draft server and API using FastAPI (9c0a821)

  • option to store the entire processingdata in the output hdf5 file (053534b)

  • adding traceability to the output HDF5 files (45a69d2)

  • CLI and ipython entry point, and added to the documentation. (c20b7f4)

  • minifixes (d98aac3)

  • tried to reduce code size by removing unnecessary casts (7002226)

  • Chore: switch off matplotlib setup by pint (730157e)

  • Chore: matplotlib is not a dependency (aa3fb35)

  • adding averaging statistics (SEM and STD) to indexed_averager for Q and Psi (2c31853)

  • improving display of mermaid graphs with optional short_title descriptor (5d27dae)

  • fixing CI-CD error and modifying .gitignore (d0b7e0f)

  • adding mermaid functionatlity to docs (551e746)

  • updating badge targets (1a94b67)

  • re-adding autosummary (575feb0)

  • thoroughly reworked documentation generation (3a6bb67)

  • update generate_module_doc and tests to adapt to new arguments processstepdoc (b41e076)

  • update combine_uncertainties to new arguments documentation (9b02521)

  • generate module doc not in the right branch. (6662da1)

  • draft merge-uncertainties modules for combining BaseData uncertainties (f3c4c12)

  • drafting a tiled IoSource (cde0357)

  • removed duplicate functionality and cleaned up processstepdescriber usage, arguments dictionary is now more comprehensive (8ea3585)

  • documentation syntax updates (f093b6c)

  • draft merge-uncertainties modules for combining BaseData uncertainties (926b263)

  • drafting a tiled IoSource (04443b6)

  • removing standard header from md files, and adding a module documentation generation script. (a75e7f5)

  • change rst to markdown (8300563)

  • early documentation structure draft (8fb5ad3)

  • adding processing_data normallizer and applying it in the correction modules (9e6e99b)

  • adding module template for documentation (935152b)

  • applying parameter schema to all modules (8850997)

  • adding argument_specs schema, better default_configuration, and fixes to validate_required_keys (dace233)

  • simple bitwise or mask to allow adding multiple masks into the main mask (following NeXus uint32 convention) (04fd3d6)

  • test for processing data sinks (167d6aa)

  • adjust pipeline run tests to include iosinks (b3908d3)

  • append-sink tests (1fbd2fa)

  • updated processstep tests (iosinks support) (6955e66)

  • append-processing-step tests (9745688)

  • modifying pipeline to automatically add sinks to process steps (dc75d1b)

  • adding a sink-processing-data process step (like append-processing-data) (b73ca41)

  • adding an append-sink process step (like append-source) (ff16afd)

  • adding helper methods for destination resource string processing for io_sinks (798adc7)

  • making io_sinks and io_sources optional input arguments in process_step (5a1ea10)

  • a small CSV file sink (e4f4574)

  • reorganizing to match project style (a0c88f8)

  • Introducing IO Sinks (b530c50)

  • cleanup of commented-out text (0138863)

  • removing unused uncertainties requirement (335700f)

  • cleanup of unused methods (fd3d38b)

  • adding an explainer on the instrument modules (67e3970)

  • calculating X-ray scattering geometry from pixel and sample coordinates. (28a6ae5)

  • fixing pixel coordinate calculation with multi-frame inputs (ab21e51)

  • cleanup (a6e3710)

  • rethinking the pixel coordinates calculator (7dfb3c0)

  • reorganisation of modules, and start on a split geometry calculator (pixel coordinates, derived matrices calculator(q, psi, etc.)) (7c78c1e)

  • added a to_base_units to BaseData and some more small changes (61c38c8)

  • fix trig units (652010b)

  • fix rank of data of twotheta output (d830183)

  • ensure units are dimensionless before certain unary operations (log and trigionometric operations) (04e73e4)

  • redefine pint units of pixel and px to dimensionless detector pixels (2aa32db)

  • Add summary for MoDaCor library in README (e48565d)

  • Allowing units label update (e.g. for setting scaling factor units) (4221bdf)

  • fixing unit of Omega (solid angle) (bd6f990)

  • fixing unit naming to make it clearer (62e542f)

  • fixing uncertainties handling with multiple keys (a47fe45)

  • correcting logger name (10a0e92)

  • adding calculation time per processing step (cbe599e)

  • adding internal docs and removing unused code (1d60dc2)

  • small improvements (4b735d8)

  • small improvements (a704ff0)

  • Integration tests for the tracing information (e5d5d06)

  • Introducing tracing to make troubleshooting easier. Allows tracking of changes to datasets, units, uncertainties through a processing pipeline (8730984)

  • small refactor for readability in find_scale_factor_1d (d196636)

  • adding multiply to init (16349e0)

  • tiny module for multiplying data with a scale factor (e8e9720)

  • adding a scale factor finder (9b366aa)

  • small bugfix (f41a4f8)

  • using attrs in all iosources (0468798)

  • renaming Loader to Source (7fbca17)

  • added a csv source (51c2815)

  • tests for updated xs_geometry (e53d5ee)

  • bugfix in the geometry calculation - shift half a pixel (aec2976)

  • bugfix in xs_geometry (2a0a3a0)

  • fix for geometry bug (cb5ac1a)

  • added modules for loading (extra or all) io_sources and process_data from configuration (71074af)

  • adding a solid_angle_correction which is really just a divide by a BaseData in a specific databundle.. consider abstracting if we need similar divisions (ff812d0)

  • adding new modules to the init.py registry (19ab2cb)

  • filename change and update on required_arguments (af8c46c)

  • filename change and update on required_arguments (6b1f0e0)

  • added an indexed averager as the second step in the azimuthal/radial averager. Also improved nomenclature of process_step_describer works_on -> modifies (1f46888)

  • added a pixel indexer as the first in a two-step azimuthal/radial averager (6499a5f)

  • added the required_arguments documentation to xs_geometry (700b558)

  • now with MessageHandler messages (d56d32b)

  • forgot tests (1ed3568)

  • combining two methods for conciseness (1c57f16)

  • correcting data dimensions to […, y, x] (fcc8ae2)

  • simplifying xs_geometry (f4d7a67)

  • added an indexer for basedata and associated test (d8a8c66)

  • updated MessageHandler with use and test in reduce_dimensionality process step (e75a65a)

  • fix for non-multiplicative units handling - now raises error (23210ab)

  • simplifying _VarianceDict (dc721fd)

  • validation of the ‘axes’ metadata shape in BaseData (acdf1aa)

  • improving BaseData repr (06aca7b)

  • adding a copy method to BaseData (2dda60a)

  • improving process_step_registry (abbac45)

  • fixing units case of 1d data (e3726ac)

  • updating reduce_dimensionality to also maintain all basedata information (db4092f)

  • fixing basedata to maintain auxiliary properties in math operations (3f6c7de)

  • small fixes to the XS Geometry class (9b21584)

  • adding calculators for X-ray scattering geometry, which add Q, Q0, Q1, Q2, Theta (scattering angle), Psi (azimuthal angle) and Omega (solid angle) (d98b7f8)

  • adding _prepared_data to ProcessStep that does not get reset after run completion (b24e967)

  • removed auto-uncertainties requirement (8694f73)

  • updated edit dates (5a3b13b)

  • added to the pipeline the option of round-tripping yaml -> spec -> visual web editor (e.g. React) -> spec -> yaml (fa0a8f5)

  • adding support for dot/graphviz and mermaid (markdown) flowchart output of the pipeline (5e96306)

  • making administrative updates to ensure all files have the correct headers (d548a06)

  • adding a process step registry with tests (86c2683)

  • Sorting pipeline by ID (to avoid overwriting identical keys), allowing step_id to be string or int, and adding tests. (95dd12c)

  • adding some internal tests (9daae76)

  • small fixes to pipeline (da24b7d)

  • Generic fixes to pipeline (d82bada)

  • expanded test for divide. working on pipeline now (a239c39)

  • add pipeline integration test (c4fb93f)

  • fix pipeline test: using the correct keyword (091c273)

  • fix pipeline test - config keys actually checked now (b9c5240)

  • pipeline: import MoDaCor module by its name in the config (8ed5a9c)

  • renaming to improve usability (453a15a)

  • added test cases for the basic math operations (03a6fa1)

  • reduce_dim_weighted can average or sum, weighted (default) or unweighted (0b713a0)

  • added a weighted averaging operation for reducing dimensionality (151093d)

  • cleanup of maths (174004c)

  • added maths to basedata. might split sections off later for manageability. (d3c1cd1)

  • extended test for poisson_uncertainties (9b66591)

  • add test for processstep call (4e69144)

  • added a call method to ProcessStep that refers to .execute() (bc276ca)

  • add configuration to ProcessSteps (in Yaml loader) (0739750)

  • change call signature of pipeline: graph as first argument (5fe8245)

  • added auto_uncertainties to the base packages, a fast uncertainties propagator with units (c509713)

  • subtract_databundles can be used for background subtraction (3be9ed5)

  • added basic operations between DataBundles and IoSource elements (f5a4ae4)

  • remove unused imports (899e31f)

  • tests match modifications to modify_config_* methods (8ffd470)

  • process_step now adds default keys to self.configuration, and has more specific modify_config* methods (11fa741)

  • helper added to construct basedata from iosources location keys (e5c29c2)

  • modify_config now takes a dict or kwargs (e5a9745)

  • adding the ability to extract an attribute value using get_static_metadata (26b4e8f)

  • adding basic operations - WIP (48bfc17)

  • cleaning duplicate (ff4e399)

  • using repr instead for more convenient operation (21540aa)

  • adding more helpful str representation in ProcessingData (b73f53c)

  • cleanup of IoRegistry (a07a18b)

  • minifix (b2e61ff)

  • fixed HDFLoader tests (2c27407)

  • automatic preload to make the IoSources more useful off the bat (782047a)

  • fix source_reference setting in IoSource instances (1a0b0d8)

  • removed outdated ‘index’ from iosources, done through slicing as far as I remember (81676c4)

  • addressed tests (b39932b)

  • work with source’s reference if needed (f4bec11)

  • fix header (a1e39f2)

  • filling out the HDFLoader and YAMLLoader methods to match IoSource (09206a5)

  • better naming: resouce_location (17b52fd)

  • unifying names between iosources: YAMLLoader (d7d6752)

  • unifying names between iosources: HDFLoader (057589a)

  • unifying names between iosources: YAMLLoader (3193454)

  • added all to YAMLLoader (5e34526)

  • final changes to YAMLLoader (537f311)

  • updating BaseData tests to deal with the simplified BaseData (59a4b65)

  • cleaning up BaseData (798dc84)

  • simplifying BaseData, uncertainty handling should be done in processing steps (d9eab76)

  • slight cleanup of now-simplified BaseData (97b38ec)

  • slight cleanup of now-simplified BaseData (17d3bd6)

  • define an arbitrary intensity unit (019a7e4)

  • Simplifying BaseData to make it workable (1eebce4)

  • small fix (787df35)

  • added a convenience method to BaseData (65deec6)

  • updated basedata tests (6096c85)

  • updated poisson uncertainty module tests. (d6aa36b)

  • fixing tests (7702fbe)

  • adjusted BaseData to match the discussed requirements (79b91f8)

  • applying the modifications, but in the wrong branch. will redo. (34a88ed)

  • there is a practical use for the to_units method (f6bc7d9)

v1.0.0 (2025-06-16)#

Unknown Scope#

  • updated classes diagram (5d3daa7)

  • extending IoSources to match IoSource for getting data attributes, shape and dtype (7f992ef)

  • updated iosource header (c179688)

  • updated iosource with results from 20250613 discussion (2dccf03)

  • header update (38b8b14)

  • header update (f2a5596)

  • header update (c46fe7b)

  • renaming to match hdf_loader naming (2afcad7)

  • static_data IoSource now loads defaults from yaml with path-like interface and tests (99b837f)

  • slowly figuring out how to realise operations (81c2daf)

  • making variances behave even more like a dict (0b8f18f)

  • better poisson uncertainties test (885b6db)

  • fixed poisson_uncertainties test (db0523c)

  • updated basedata _VarianceDict class to make item assignment behave as expected (ecc26fb)

  • updated basedata _VarianceDict class to make item assignment behave as expected (c1f5fda)

  • fixed flake8 error (eef3aac)

  • fix pytest warning: rename TestProcessingStep -> TESTProcessingStep (b19e701)

  • adding to basedata test (32b66ed)

  • fixing stuff for tests (33185d3)

  • to_units should be a processing module for clear separation of functionality (164579d)

  • updated docstring and minor fixes (808cd57)

  • making uncertainties (std) and variances available (f6ce279)

  • added to_units converter to BaseData (694c0b5)

  • BaseData adjustment for ease-of-use and generality (e0276a7)

  • adapt PoissonUncertainties unit test to use processing data (bf20968)

  • modification of the poisson uncertainties module for pipeline use (ee3e940)

  • pipeline with PoissonUncertainties step is now running (663fee6)

  • adjust names of bundles and BaseData keys to contain “signal” (ff9a21a)

  • begin adapting the calculate function (cc5f122)

  • update pipeline integration test to use new ProcessStep (aec63ce)

  • update to new BaseData unit handling (ebdceeb)

  • use modacor’s unit registry (5fe0eda)

  • arithmetic: data is divided by normalization (98f9389)

  • BaseData no longer has a .data property (5a53260)

  • remove test of display_data property: display_units not defined (19d0a66)

  • basedata: use simplified call signature (619368a)

  • import uncertainties.unumpy for variance calculation tests (7a55d68)

  • adapt PoissonUncertainties unit test to use processing data (86c719b)

  • modification of the poisson uncertainties module for pipeline use (ce86eae)

  • pipeline with PoissonUncertainties step is now running (594315b)

  • adjust names of bundles and BaseData keys to contain “signal” (e8c342f)

  • add license text to license.py (fdd7ddf)

  • add to last commit (648cb25)

  • adding a central license to shorten headers (2f88d39)

  • add license text to license.py (0f5cfb9)

  • renaming for clarity (da2bf41)

  • small improvement to .gitignore (769a67d)

  • example static metadata IoSource (555cc83)

  • consistency between loaded data values and arrays, enforcing metadata (2655daf)

  • add to last commit (441068d)

  • adding a central license to shorten headers (939516c)

  • begin adapting the calculate function (7cf56a1)

  • update pipeline integration test to use new ProcessStep (61724fd)

  • update to new BaseData unit handling (06f8763)

  • use modacor’s unit registry (540ce4a)

  • Delete src/modacor/modules/base_modules/poisson_uncertainty.py (09def97)

  • add note to self: need ProcessStep registry to populate pipeline (b8ba70b)

  • Updating the ProcessStep definition (#34) (605c3f6)

  • test and draft config format for pipeline import from yaml (4a40871)

  • initial yaml loader for pipelines (a12d58e)

  • add hash function to make test run (already in draft PR #33) (4e03a00)

  • add pyyaml to requirements for yaml definition of pipelines (0f76ece)

  • changing unit handling to central pint unit registry (ee3f2f5)

  • minor polishing (e9f9083)

  • adding a multiply by variable processing step (fa04cd7)

  • provide azimuthal variance (93d0dae)

  • import central unit registry (cfdd867)

  • fix PoissonUncertainties module: needs to return outputs (4e4eeea)

  • change internal_units to signal_units and removing ingest and display units (adfa551)

  • use smaller array for testing (2b57000)

  • implement the test, still broken (2b787b7)

  • test runs until PoissonUncertainties are actually calculated (7c91102)

  • First uncertainties commit, test is broken (29bec04)

  • Starting on Poisson Testing (04eaa24)

  • prepare test running PoissonUncertainties module in a pipeline (537ccdf)

  • adapt: DataBundle no longer has a data attribute (7a33677)

  • first integration test: run pipeline with dummy processsteps (58e1c5d)

  • add hash function to ProcessStep (15125a9)

  • remove DataBundle from the arguments for running the pipeline (def0dba)

  • fixing error (986f10b)

  • fixing file reference in documentation (5d337fd)

  • polish import_tester (683a0f8)

  • removing unused fields (4b12b8f)

  • make an integrated dataset behave like a normal one (49e8412)

  • Tidy up (312cb82)

  • HDF Loader Tests Now Passing (d17e05d)

  • fix a bunch of tests (503d1e0)

  • adding a new poisson uncertainties estimator (22c2233)

  • flake8 config file (2d34c5d)

  • Delete src/modacor/dataclasses/pipelinedata.py (5045ae9)

  • renaming pipelinedata to processingdata (be76a32)

  • feed-back of flake8 (07cdc34)

  • Allow longer lines (5b74de3)

  • Updated formatting with black, flake8 and isort (c89718b)

  • Removing an outdated module (cbd7f87)

  • configuration for flake8 (dc45d13)

  • increase line length (d56fc36)

  • add init.py in runner submodule (d995aff)

  • modify branch addition methods to operate on another Pipeline (3dcdce7)

  • use the same syntax for incoming and outgoing branch addition (ee8ada7)

  • cleanup of databundle and adding pipelinedata (2015907)

  • adding a header and cleanung up datbundle. (7c4e7e3)

  • add separate methods for adding in- and outgoing branches (a635247)

  • renaming raw_data to signal in BaseData (2f6429f)

  • fix importing BaseData (a104dce)

  • fix reference to self (06c2173)

  • HDF Testing (d874571)

  • HDF IO Test Commit (920b02f)

  • work on integration (125dacd)

  • prepare running the pipeline - not yet tested (f544fea)

  • Update pyproject.toml (7f8d1c7)

  • add functionality for branching the pipeline, with simple tests (e8093f8)

  • Update pyproject.toml (acf17b9)

  • Update pyproject.toml (70eed8a)

  • updating the pre-commit config (6e247b4)

  • updated BaseData (72912e7)

  • Attempt to fix tox.ini (9a25376)

  • Removed unused imports (c5bf606)

  • modifications to basedata and databundle (a50204c)

  • updating databundle (f56265a)

  • Updating package metadata (eb4b8c8)

  • test addition of a simple hashable object (e9bdcbf)

  • initial pipeline draft based on graphlibs TopologicalSorter (7c5cfc5)

  • Added tests for io sub-package (e0f3218)

  • Modified HDF Loader (1fa7fd0)

  • Start of HDF5 Loader (3397b14)

  • clean-up (5435da4)

  • put back scalers are normalization factor (8ad59ff)

  • Error Propagation (9e17100)

  • Error Propagation (6f2854c)

  • Error Propagation (d0b87f2)

  • WIP on azimuthal integration (ca15a97)

  • Requirements Changes (d7041d5)

  • Adding units to normalization (1ef17ef)

  • Updates to init files (663ede2)

  • Error Propagation (d0a040b)

  • Updated requirements (1c2b91c)

  • Missed comma (09fecf1)

  • Updates to the logger (f09b5df)

  • Added file headers to io and updated definitions (fa7996b)

  • Fixing linting (6bd4918)

  • fix renaming of ProcessStep (0de2352)

  • fix relative import error (6fa77f4)

  • dynamic requirements.txt (90b233b)

  • Populated io (4faa1db)

  • fix imports (886002c)

  • fix scatteringdata duplicate and databundle import (0a02cbd)

  • Tox modifications (b8ee1aa)

  • Modified imports (7993f93)

  • One step further (c9e0fd0)

  • Modifed ProcessStep (22d05d1)

  • fix import all modules (5561826)

  • fix all relative imports in tests (675e504)

  • move test into project … (ad171a4)

  • Changes for tox (142582e)

  • databundle (1d18bca)

  • typos (fb85395)

  • License modification (5d331e4)

  • Small updates (d176c49)

  • migrate dask array to numpy (62fd3b2)

  • ScatteringData to DataBundle (108e8a4)

  • implement base dataclass (8049030)

  • implement normalization and variances in dict (f41c0ab)

  • Updated processstep naming and content (7ae6ca7)

  • adding the flow charts (e07cb55)

  • modified to use the actual datapoint in basedata now. (d9bd951)

  • Getting towards a working concept (0772d80)

  • something like this (dfd97bf)

  • Getting towards a proof-of-principle (2a77207)

  • more experimentation to explore delayed execution (5f365a1)

  • Making changes to classes based on experimentation… (1710f40)

  • Added some flow diagrams to help clarify… (b17ff22)

  • Update README.rst (1e658e2)

  • Changed name of note to step_note (accd141)

  • fixed tests and validator. (4b768e6)

  • Changed naming slightly, and added a message handler placeholder (0880270)

  • changes broke tests (e81e369)

  • test implementation of basedata and processstep dataclasses (eb6dcc4)

v0.0.0 (2025-02-13)#

Unknown Scope#