What’s New

v3.8.0 (2022/11/03)

New Features

  • Adds ncfile.py module with helper functions to export a subset or all of the data_vars in netCDF files generated with PySD to pandas.DataFrame, csv or tab files. (@rogersamso)

  • Adds possibility to initialize and export a subset or all external objects to netCDF, and then initialize the external objects from the file. (@rogersamso)

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

  • Initializing external objects from netCDF file is much faster than reading from spreadsheet files.(@rogersamso)

Internal Changes

v3.7.1 (2022/09/19)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.7.0 (2022/09/19)

New Features

  • Simulation results can now be stored as netCDF4 files. (@rogersamso)

  • The CLI also accepts netCDF4 file paths after the -o argument. (@rogersamso)

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

  • Exporting outputs as netCDF4 is much faster than exporting a pandas DataFrame, especially for large models. (@rogersamso)

Internal Changes

v3.6.1 (2022/09/05)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

  • Set parsimonius requirement to 0.9.0 to avoid a breaking-change in the newest version. Pending to update PySD to run it with parsimonious 0.10.0. (@enekomartinmartinez)

v3.6.0 (2022/08/31)

New Features

  • Include warning messages when a variable is defined in more than one view, when a control variable appears in a view or when a variable doesn’t appear in any view as a workbench variable (issue #357). (@enekomartinmartinez)

  • Force variables in a module to be saved alphabetically for being able to compare differences between versions (only for the models that are split by views). (@enekomartinmartinez)

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.5.2 (2022/08/15)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

  • Correct typos.

Performance

Internal Changes

v3.5.1 (2022/08/11)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

  • Improve the performance of reading pysd.py_backend.external.External data with cellrange names by loading the data in memory with pandas. As recommended by openpyxl developers, this is a possible way of improving performance to avoid parsing all rows up each time for getting the data (issue 1867 in openpyxl). (@enekomartinmartinez)

Internal Changes

v3.5.0 (2022/07/25)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

  • Ignore ‘distutils Version classes are deprecated. Use packaging.version instead’ error in tests as it is an internal error of xarray. (@enekomartinmartinez)

  • Add a warning message when a subscript range is duplicated in a variable reference. (@enekomartinmartinez)

v3.4.0 (2022/06/29)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.3.0 (2022/06/22)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.2.0 (2022/06/10)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

v3.1.0 (2022/06/02)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

Performance

Internal Changes

  • Include a template for PR.

v3.0.1 (2022/05/26)

New Features

Breaking changes

Deprecations

Bug fixes

Documentation

  • Improve tests/README.md.

  • Minor improvements in the documentation.

Performance

Internal Changes

v3.0.0 (2022/05/23)

New Features

  • The new Abstract Model Representation translation and building workflow will allow to add new output languages in the future. (@enekomartinmartinez)

  • Added new properties to the pysd.py_backend.model.Macro to make more accessible some information: namespace, subscripts, dependencies, modules, doc. (@enekomartinmartinez)

  • Cleaner Python models: (@enekomartinmartinez)
    • _namespace and _dependencies dictionaries have been removed from the file.

    • Variables original names, dependencies metadata now are given through pysd.py_backend.components.Component.add() decorator, instead of having them in the docstring.

    • Merging of variable equations is now done using the coordinates to a pre-allocated array, instead of using the magic function pysd.py_backend.utils.xrmerge().

    • Arranging and subseting arrays are now done inplace instead of using the magic function pysd.py_backend.utils.rearrange().

Breaking changes

Deprecations

  • Remove pysd.py_backend.utils.xrmerge(), pysd.py_backend.functions.pulse_train(), pysd.py_backend.functions.pulse_magnitude(), pysd.py_backend.functions.lookup(), pysd.py_backend.functions.lookup_discrete(), pysd.py_backend.functions.lookup_extrapolation(), pysd.py_backend.functions.logical_and(), pysd.py_backend.functions.logical_or(), pysd.py_backend.functions.bounded_normal(), pysd.py_backend.functions.log(). (@enekomartinmartinez)

  • Remove old translation and building files (pysd.translation). (@enekomartinmartinez)

Bug fixes

Documentation

Performance

  • The variables defined in several equations are now assigned to a pre-allocated array instead of using pysd.py_backend.utils.xrmerge(). (@enekomartinmartinez)

  • The arranging and subseting of arrays is now done inplace instead of using the magic function pysd.py_backend.utils.rearrange(). (@enekomartinmartinez)

  • The grammars for Parsimonious are only compiled once per translation. (@enekomartinmartinez)

Internal Changes