smash 1.1.0 Release Notes#
The smash 1.1.0 release introduces several new solvers and functionalities, while continuing efforts to improve usability, fix bugs, and enrich the documentation. The highlights are:
Hybrid Physics-AI hydrological solvers: spatially distributed neural-augmented algebraic and ODE modelsIn addition to regionalization neural networks, the process-parameterization neural networks are integrated into
smashfor GR-like model structures to refine internal water fluxes, either within algebraic models solving analytical solutions of time-integrated ordinary differential equations (ODEs), or within state-space models that numerically solve the ODEs.
Migration of optimization methods to PythonAll optimization methods have been reimplemented in Python, replacing the previous Fortran-based versions. This change enables the use of various adaptive optimizers for all mappings and supports callback signatures for retrieving intermediate results during the calibration process.
Convolutional neural networks for regionalizationConvolutional neural networks (CNNs) are now supported for the HDA-PR (Hybrid Data Assimilation-Parameters Regionalization) algorithm. The
smash.factory.Netsub-package has been updated to accommodate a generic neural network configuration for regionalization.
Variants of GR-like model structuresNew variants of the GR-like model structures have been introduced, featuring alternative parameterizations of the conceptual reservoirs. These updates also include the incorporation of rainfall intensity and imperviousness.
Fix for active and non-active cellsIssues related to missing physical descriptors on active cells and incorrect handling of boundary conditions outside the calibration domain have been resolved.
Expanded user guideThe user guide has been significantly expanded, now offering step-by-step tutorials ranging from quick-start examples to advanced usage of
smash.
Expanded contributor guideThe Contributor Guide has been significantly expanded, now providing more detailed explanations of the
smashdevelopment process.
Complete mathematical documentationA more complete mathematical description of all methods used in
smashis now available in the Math / Num Documentation.
Contributors#
This release was made possible thanks to the contributions of:
Ngo Nghi Truyen Huynh (nghi-truyen)
François Colleoni (inoelloc)
Apolline El Baz (asjeb)
Pierre-André Garambois (pag13)
Maxime Jay-Allemand (maximejay)
Benjamin Renard (benRenard)
Ahmad Akhtari (ahmad-3100)
Ngoc Bao Nguyen (ngocbao1022)
Pull requests merged#
Maintenance/1.0.x by @inoelloc in DassHydro/smash#208
Maintenance/1.0.x by @inoelloc in DassHydro/smash#229
ENH/MAINT: enhance metric computation method by @nghi-truyen in DassHydro/smash#216
Rebase of MJA pull request on main by @inoelloc in DassHydro/smash#241
MAINT: macos py312 wheels by @inoelloc in DassHydro/smash#242
DOC: Add pypi badge for smash by @nghi-truyen in DassHydro/smash#256
MAINT: Sphinx v7.4 compatibility by @inoelloc in DassHydro/smash#258
MAINT: Add Python3.12 unit tests by @inoelloc in DassHydro/smash#261
FIX: Check descriptor missing values on active cells by @inoelloc in DassHydro/smash#263
DOC: Update contributor guide summary by @inoelloc in DassHydro/smash#264
FIX: Correct the filling of the control vector in case of distributed mapping by @inoelloc in DassHydro/smash#266
FIX: scaling layer for bounded outputs from activation layer by @nghi-truyen in DassHydro/smash#268
FIX: docstring serr_sigma_parameters by @nghi-truyen in DassHydro/smash#274
Internal fluxes by @asjeb in DassHydro/smash#232
DOC: correct control_tfm documentation by @nghi-truyen in DassHydro/smash#277
Fix crash in generate mesh if a well is present at a cell by @maximejay in DassHydro/smash#280
DOC: add note to contributor guide for test-baseline by @nghi-truyen in DassHydro/smash#283
Exponential store gr6 by @asjeb in DassHydro/smash#210
ENH: set parameters condition outside active cell by @inoelloc in DassHydro/smash#287
MAINT/ENH: move Fortran optimizers, smash.multiple_optimize() is deprecated by @nghi-truyen in DassHydro/smash#250
MAINT: v1.0.2 release note by @inoelloc in DassHydro/smash#289
ENH/MAINT: CNN regionalization, smash.Net.add() is deprecated by @nghi-truyen in DassHydro/smash#255
manage kernel pip by @asjeb in DassHydro/smash#293
DOC: Update getting started installation by @inoelloc in DassHydro/smash#296
MAINT: Update release note by @inoelloc in DassHydro/smash#299
ENH: new hybrid hydrological models using neural network and ODE-based system by @nghi-truyen in DassHydro/smash#294
Check well in flwdir by @maximejay in DassHydro/smash#298
FIX: fix baseline and add minor corrections to previous PRs by @nghi-truyen in DassHydro/smash#308
FIX PR: apply suggestion changes from FC review regarding to hybird model branch by @nghi-truyen in DassHydro/smash#311
ENH: new methods added to
smash.factory.Netby @nghi-truyen in DassHydro/smash#312ENH: Add grc structure based on MJA dev by @inoelloc in DassHydro/smash#313
ENH: add adaptive optimizers for all mappings by @nghi-truyen in DassHydro/smash#315
MAINT: remove also dataset directories when using make doc-clean by @nghi-truyen in DassHydro/smash#319
ENH: add callback signature for optimize method by @nghi-truyen in DassHydro/smash#318
MAINT: remove cost options control info by @nghi-truyen in DassHydro/smash#320
MAINT: change the default NN for ANN-based regionalization by @nghi-truyen in DassHydro/smash#321
FIX: Rounding error with array slice with lat-lon raster by @inoelloc in DassHydro/smash#323
FIX: Fix the exchange term in gr6/grc svg structure by @inoelloc in DassHydro/smash#324
ENH: retrieve model parameters from control vector value by @nghi-truyen in DassHydro/smash#322
Gr rainfall intensity by @asjeb in DassHydro/smash#325
MAINT: Sparse optimize on only one structure by @inoelloc in DassHydro/smash#328
FIX: reset random seed after setting random_state by @nghi-truyen in DassHydro/smash#331
FIX: Update sink detection by @inoelloc in DassHydro/smash#326
ENH: add n_iter key for callback and return_options optimize by @nghi-truyen in DassHydro/smash#332
ENH: Add hybrid models for gr and loieau structures by @nghi-truyen in DassHydro/smash#327
update internal fluxes by @asjeb in DassHydro/smash#333
MAINT/FIX: add ps/es returns for gr4_ri and gr5_ri by @asjeb in DassHydro/smash#335
MAINT/FIX: fix expressions for ps, es and gr in gr production by @nghi-truyen in DassHydro/smash#337
ENH: Contour-based meshing with shapefiles by @inoelloc in DassHydro/smash#338
FIX: checking control size in case of ANN by @nghi-truyen in DassHydro/smash#342
MAINT: Switch to macOS-13 env by @inoelloc in DassHydro/smash#346
Fix missing return lcurve pnd by @maximejay in DassHydro/smash#344
Fix grc structure (model for reunion) by @maximejay in DassHydro/smash#343
Fix: Initialise wjreg by @maximejay in DassHydro/smash#348
FIX: update grc_mlp structure following the change on grc structure by @nghi-truyen in DassHydro/smash#347
Fix: initialise wjreg_fast before return the result by @maximejay in DassHydro/smash#350
ENH: add test to check the forward pass of default hybrid structures by @nghi-truyen in DassHydro/smash#352
MAINT: Developer guide and pyproject.toml by @inoelloc in DassHydro/smash#354
Fix wrong slice size on model.response_data.q when checking available discharges by @maximejay in DassHydro/smash#361
GR with imperviousness by @asjeb in DassHydro/smash#349
ENH: add implcit neural ode solver for gr4 model by @nghi-truyen in DassHydro/smash#358
MAINT: Upgrade Python version to 3.12 for docker and workflow by @nghi-truyen in DassHydro/smash#362
ENH: add multiple peaks info to hydrograph segmentation algo by @nghi-truyen in DassHydro/smash#365
Doc rainfall intensity by @asjeb in DassHydro/smash#364
DOC: new user guide structure by @nghi-truyen in DassHydro/smash#366
DOC: imperviousness by @asjeb in DassHydro/smash#368
DOC:rainfall indices by @asjeb in https://github.com/DassHydro/smash/pull/369
Doc segmentation algorithm by @asjeb in DassHydro/smash#367
DOC: fix model initialization for examples in user guide tutorials by @nghi-truyen in DassHydro/smash#370
Doc hydro signatures by @ahmad-3100 in DassHydro/smash#373
DOC: change of user guide order/title and fix tutos in classical uses section by @nghi-truyen in DassHydro/smash#374
MAINT: Fix flux correction and Jaco calculation for hybrid gr4_ode_mlp structure by @nghi-truyen in DassHydro/smash#375
DOC: external tool - sensitivity analysis by @ngocbao1022 in DassHydro/smash#377
DOC: fix normalized states in Math/Num description by @nghi-truyen in DassHydro/smash#380
DOC: Dynamic copyright year by @inoelloc in DassHydro/smash#382
Doc update structure by @asjeb in DassHydro/smash#381
DOC: multi criteria tutorial by @asjeb in DassHydro/smash#379
MAINT: update ruff format with new version by @nghi-truyen in DassHydro/smash#386
ENH/DOC: add automatic output code block generation, improve contributor guide by @nghi-truyen in DassHydro/smash#385
MAINT/ENH: enhance user guide writing method by @nghi-truyen in DassHydro/smash#387
DOC: improve sensitivity analysis doc: by @ngocbao1022 in DassHydro/smash#388
Doc data format description by @asjeb in DassHydro/smash#389
MAINT: directly remove generated files when compiling doc by @nghi-truyen in DassHydro/smash#390
Remove autosummary sphinx extension by @nghi-truyen in DassHydro/smash#394
MAINT: Remove sphinx-autosummary-accessors from smash dependencies by @nghi-truyen in DassHydro/smash#395
ENH: Dynamic variables for Python versions in documentation by @nghi-truyen in DassHydro/smash#396
DOC: add user guide retrieving control by @nghi-truyen in DassHydro/smash#392
DOC: Finished Bayesian tutorial by @benRenard in DassHydro/smash#383
DOC: add tuto for large sample simulation by @ahmad-3100 in DassHydro/smash#384
MAINT/ENH: add SiLU activation function by @nghi-truyen in DassHydro/smash#400
MAINT: change the name _bkg in control info to _raw by @nghi-truyen in DassHydro/smash#402
MAINT/BUG: fix Fortran descriptor derived type still initialized while read_descriptor is set to False by @nghi-truyen in DassHydro/smash#405
MAINT/FIX: correct the mahal distance calculation in case of distributed parameters by @nghi-truyen in DassHydro/smash#401
MAINT: minor fix typos for smash doc by @nghi-truyen in DassHydro/smash#408
ENH/DOC: Add dropdown items to go to older smash versions by @nghi-truyen in DassHydro/smash#407
DOC: how to cite smash by @nghi-truyen in DassHydro/smash#410
Add related paper citation + minor fixes by @nghi-truyen in DassHydro/smash#411
DOC/ENH: add math/num descriptions for hybrid flux correction structures by @nghi-truyen in DassHydro/smash#413
DOC/ENH: add tuto for advanced regionalization with NNs by @nghi-truyen in DassHydro/smash#412
Finish tuto and math/num description for hybrid structures and neural ODE by @nghi-truyen in DassHydro/smash#415