Skip to content

Releases: glotaran/pyglotaran

v0.7.2

06 Dec 23:02
1fb14bb
Compare
Choose a tag to compare

pyglotaran 0.7.2 Release Notes

Minor maintenance release adding support for numpy < 1.27.

With this version 0.7.2 pyglotaran continues its tradition to become more battle tested with each release, specifically this release has been employed in the rigorous analysis of time-resolved fluorescence and absorption spectroscopy data of Photosystem I in the following projects:

What's Changed

✨ Features

  • ✨ Official numpy 1.26 support (#1374)

🚧 Maintenance

  • 🧹 Remove unused dependency: 'rich' (#1345)

New Contributors

Full Changelog: v0.7.1...v0.7.2

v0.7.1

28 Jul 13:12
535acaa
Compare
Choose a tag to compare

pyglotaran 0.7.1 Release Notes

This updated version was used to generate the results for the paper "pyglotaran: a lego-like Python framework for global and target analysis of time resolved spectra" introducing pyglotaran to the broader scientific community.

✨ Features

👌 Minor Improvements:

  • 🚀🚇 Add pipeline to release examples and validation on release by @s-weigand in #1303

🩹 Bug fixes

  • 🩹 Fix coherent artifact clp label duplication by @s-weigand in #1292
  • 🩹 Transform standard error if parameter has non_negative constraint by @jsnel in #1320

🚧 Maintenance

  • 🧰 Stale bot by @jsnel in #1172
  • 👌🚇 Rename release-validataion.yml to release-validation.yml by @jsnel in #1333

Full Changelog: v0.7.0...v0.7.1

v0.7.0

27 Mar 21:14
9adf4a4
Compare
Choose a tag to compare

pyglotaran 0.7.0 Release Notes

Code name: "Theofelix"

This version was used to generate the results for the paper "pyglotaran: a lego-like Python framework for global and target analysis of time resolved spectra" introducing pyglotaran to the broader scientific community.

💥 BREAKING CHANGE

  • 💥🚧 Dropped support for Python 3.8 and 3.9 and only support 3.10 (#1135)

✨ Features

  • ✨ Add optimization history to result and iteration column to parameter history (#1134)
  • ♻️ Complete refactor of model and parameter packages using attrs (#1135)
  • ♻️ Move index dependent calculation to megacomplexes for speed-up (#1175)
  • ✨ Add PreProcessingPipeline (#1256, #1263)

👌 Minor Improvements:

  • 👌🎨 Wrap model section in result markdown in details tag for notebooks (#1098)
  • 👌 Allow more natural column names in pandas parameters file reading (#1174)
  • ✨ Integrate plugin system into Project (#1229)
  • 👌 Make yaml the default plugin when passing a folder to save_result and load_result (#1230)
  • ✨ Allow usage of subfolders in project API for parameters, models and data (#1232)
  • ✨ Allow import of xarray objects in project API import_data (#1235)
  • 🩹 Add number_of_clps to result and correct degrees_of_freedom calculation (#1249)
  • 👌 Improve Project API data handling (#1257)
  • 🗑️ Deprecate Result.number_of_parameters in favor of Result.number_of_free_parameters (#1262)

🩹 Bug fixes

  • 🩹 Fix result data overwritten when using multiple dataset_groups (#1147)
  • 🩹 Fix for normalization issue described in #1157 (multi-gaussian irfs and multiple time ranges (streak))
  • 🩹 Fix for crash described in #1183 when doing an optimization using more than 30 datasets (#1184)
  • 🩹 Fix pretty_format_numerical for negative values (#1192)
  • 🩹 Fix yaml result saving with relative paths (#1199)
  • 🩹 Fix model markdown render for items without label (#1213)
  • 🩹 Fix wrong file loading due to partial filename matching in Project (#1212)
  • 🩹 Fix Project.import_data path resolving for different script and cwd (#1214)
  • 👌 Refine project API (#1240)
  • 🩹📚 Fix search in docs (#1268)

📚 Documentation

  • 📚 Update quickstart guide to use Project API (#1241)

🗑️ Deprecations (due in 0.8.0)

  • <model_file>.clp_area_penalties -> <model_file>.clp_penalties
  • glotaran.ParameterGroup -> glotaran.Parameters
  • Command Line Interface (removed without replacement) (#1228)
  • Project.generate_model (removed without replacement)
  • Project.generate_parameters (removed without replacement)
  • glotaran.project.Result.number_of_data_points -> glotaran.project.Result.number_of_residuals
  • glotaran.project.Result.number_of_parameters -> glotaran.project.Result.number_of_free_parameters

🗑️❌ Deprecated functionality removed in this release

  • glotaran.project.Scheme(..., non_negative_least_squares=...)
  • glotaran.project.Scheme(..., group=...)
  • glotaran.project.Scheme(..., group_tolerance=...)
  • <model_file>.non-negative-least-squares: true
  • <model_file>.non-negative-least-squares: false
  • glotaran.parameter.ParameterGroup.to_csv(file_name=parameters.csv)

🚧 Maintenance

  • 🚇🩹 Fix wrong comparison in pr_benchmark workflow (#1097)
  • 🔧 Set sourcery-ai target python version to 3.8 (#1095)
  • 🚇🩹🔧 Fix manifest check (#1099)
  • ♻️ Refactor: optimization (#1060)
  • ♻️🚇 Use GITHUB_OUTPUT instead of set-output in github actions (#1166, #1177)
  • 🚧 Add pinned version of odfpy to requirements_dev.txt (#1164)
  • ♻️ Use validation action and validation as a git submodule (#1165)
  • 🧹 Upgrade syntax to py310 using pyupgrade (#1162)
  • 🧹 Remove unused 'type: ignore' (#1168)
  • 🚧 Raise minimum dependency version to releases that support py310 (#1170)
  • 🔧 Make mypy and doc string linters opt out instead of opt in (#1173)

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.6.0

06 Jun 21:52
6c3c390
Compare
Choose a tag to compare

pyglotaran 0.6.0 Release Notes

Triple code name release: "K.I.S.S." (keep it short and sweet), Keiko (first teaching release), Z.O.E. (happy birthday)

pyglotaran is a library commonly used for the analysis of time-resolved spectroscopy measurements in the study of energy transfer pathways in photosynthesis, or the characterization of energy transfer (in-)efficiencies in photovoltaic systems.

This is the first version of the software used in teaching, specifically the Photosynthesis and Energy 2022 course found here: ism200\PE2022

✨ Features

  • ✨ Python 3.10 support (#977)
  • ✨ Add simple decay megacomplexes (#860)
  • ✨ Feature: Generators (#866)
  • ✨ Project Class (#869)
  • ✨ Add clp guidance megacomplex (#1029)

👌 Minor Improvements:

  • 👌🎨 Add proper repr for DatasetMapping (#957)
  • 👌 Add SavingOptions to save_result API (#966)
  • ✨ Add parameter IO support for more formats supported by pandas (#896)
  • 👌 Apply IRF shift in coherent artifact megacomplex (#992)
  • 👌 Added IRF shift to result dataset (#994)
  • 👌 Improve Result, Parameter and ParameterGroup markdown (#1012)
  • 👌🧹 Add suffix to rate and lifetime and guard for missing datasets (#1022)
  • ♻️ Move simulation to own module (#1041)
  • ♻️ Move optimization to new module glotaran.optimization (#1047)
  • 🩹 Fix missing installation of clp-guide megacomplex as plugin (#1066)

🩹 Bug fixes

  • 🩹 Fix Crash in optimization_group_calculator_linked when using guidance spectra (#950)
  • 🩹 ParameterGroup.get degrades full_label of nested Parameters with nesting over 2 (#1043)
  • 🩹 Show validation problem if parameters are missing values (default: NaN) (#1076)

📚 Documentation

🗑️ Deprecations (due in 0.8.0)

  • glotaran.io.save_result(result, result_path, format_name='legacy') -> glotaran.io.save_result(result, Path(result_path) / 'result.yml')
  • glotaran.analysis.simulation -> glotaran.simulation.simulation
  • glotaran.analysis.optimize -> glotaran.optimization.optimize

🗑️❌ Deprecated functionality removed in this release

  • glotaran.ParameterGroup -> glotaran.parameter.ParameterGroup
  • glotaran.read_model_from_yaml -> glotaran.io.load_model(..., format_name="yaml_str")
  • glotaran.read_model_from_yaml_file -> glotaran.io.load_model(..., format_name="yaml")
  • glotaran.read_parameters_from_csv_file -> glotaran.io.load_parameters(..., format_name="csv")
  • glotaran.read_parameters_from_yaml -> glotaran.io.load_parameters(..., format_name="yaml_str")
  • glotaran.read_parameters_from_yaml_file -> glotaran.io.load_parameters(..., format_name="yaml")
  • glotaran.io.read_data_file -> glotaran.io.load_dataset
  • result.get_dataset("<dataset_name>") -> result.data["<dataset_name>"]
  • glotaran.analysis.result -> glotaran.project.result
  • glotaran.analysis.scheme -> glotaran.project.scheme

🚧 Maintenance

  • 🔧 Improve packaging tooling (#923)
  • 🔧🚇 Exclude test files from duplication checks on sonarcloud (#959)
  • 🔧🚇 Only run check-manifest on the CI (#967)
  • 🚇👌 Exclude dependabot push CI runs (#978)
  • 🚇👌 Exclude sourcery AI push CI runs (#1014)
  • 👌📚🚇 Auto remove notebook written data when building docs (#1019)
  • 👌🚇 Change integration tests to use self managed examples action (#1034)
  • 🚇🧹 Exclude pre-commit bot branch from CI runs on push (#1085)

New Contributors

Full Changelog: v0.5.1...v0.6.0

v0.5.1

31 Dec 22:30
96b4263
Compare
Choose a tag to compare

pyglotaran 0.5.1 Release Notes

Code name: "What You Leave Behind" part deux - exit 2021

This is a minor patch release that fixes two minor bugs found in v0.5.0, detailed below.
For completeness sake the changes for the v0.5.0 release are also listed.

The v0.5.0 release brought some exciting new features, whilst ensuring backwards compatibility (your old models still work) and validation against a large set of examples.

The introduction of dataset groups (#851) and megacomplex models (#736) bring us a lot closer to the dream of building large sophisticated models out of smaller simpler building blocks. Right, much like those colorful bricks we all loved playing with as a child.

0.5.1 (2021-12-31)

🩹 Bug fixes

  • 🩹 Bugfix Use normalized initial_concentrations in result creation for decay megacomplex (#927)
  • 🩹 Fix save_result crashes on Windows if input data are on a different drive than result (#931)

🚧 Maintenance

  • 🚧 Forward port Improve result comparison workflow and v0.4 changelog (#938)
  • 🚧 Forward port of test_result_consistency (#936)

0.5.0 (2021-12-01)

✨ Features

  • ✨ Feature: Megacomplex Models (#736)
  • ✨ Feature: Full Models (#747)
  • ✨ Damped Oscillation Megacomplex (a.k.a. DOAS) (#764)
  • ✨ Add Dataset Groups (#851)
  • ✨ Performance improvements (in some cases up to 5x) (#740)

👌 Minor Improvements:

  • 👌 Add dimensions to megacomplex and dataset_descriptor (#702)
  • 👌 Improve ordering in k_matrix involved_compartments function (#788)
  • 👌 Improvements to application of clp_penalties (equal area) (#801)
  • ♻️ Refactor model.from_dict to parse megacomplex_type from dict and add simple_generator for testing (#807)
  • ♻️ Refactor model spec (#836)
  • ♻️ Refactor Result Saving (#841)
  • ✨ Use ruaml.yaml parser for roundtrip support (#893)
  • ♻️ Refactor Result and Scheme loading/initializing from files (#903)
  • ♻️ Several refactoring in glotaran.Parameter (#910)
  • 👌 Improved Reporting of Parameters (#910, #914, #918)
  • 👌 Scheme now excepts paths to model, parameter and data file without initializing them first (#912)

🩹 Bug fixes

  • 🩹 Fix/cli0.5 (#765)
  • 🩹 Fix compartment ordering randomization due to use of set (#799)
  • 🩹 Fix check_deprecations not showing deprecation warnings (#775)
  • 🩹 Fix and re-enable IRF Dispersion Test (#786)
  • 🩹 Fix coherent artifact crash for index dependent models #808
  • 🩹 False positive model validation fail when combining multiple default megacomplexes (#797)
  • 🩹 Fix ParameterGroup repr when created with 'from_list' (#827)
  • 🩹 Fix for DOAS with reversed oscillations (negative rates) (#839)
  • 🩹 Fix parameter expression parsing (#843)
  • 🩹 Use a context manager when opening a nc dataset (#848)
  • 🚧 Disallow xarray versions breaking plotting in integration tests (#900)
  • 🩹 Fix 'dataset_groups' not shown in model markdown (#906)

📚 Documentation

  • 📚 Moved API documentation from User to Developer Docs (#776)
  • 📚 Add docs for the CLI (#784)
  • 📚 Fix deprecation in model used in quickstart notebook (#834)

🗑️ Deprecations (due in 0.7.0)

  • glotaran.model.Model.model_dimension -> glotaran.project.Scheme.model_dimension
  • glotaran.model.Model.global_dimension -> glotaran.project.Scheme.global_dimension
  • <model_file>.type.kinetic-spectrum -> <model_file>.default_megacomplex.decay
  • <model_file>.type.spectral-model -> <model_file>.default_megacomplex.spectral
  • <model_file>.spectral_relations -> <model_file>.clp_relations
  • <model_file>.spectral_relations.compartment -> <model_file>.clp_relations.source
  • <model_file>.spectral_constraints -> <model_file>.clp_constraints
  • <model_file>.spectral_constraints.compartment -> <model_file>.clp_constraints.target
  • <model_file>.equal_area_penalties -> <model_file>.clp_area_penalties
  • <model_file>.irf.center_dispersion -> <model_file>.irf.center_dispersion_coefficients
  • <model_file>.irf.width_dispersion -> <model_file>.irf.width_dispersion_coefficients
  • glotaran.project.Scheme(..., non_negative_least_squares=...) -> <model_file>dataset_groups.default.residual_function
  • glotaran.project.Scheme(..., group=...) -> <model_file>dataset_groups.default.link_clp
  • glotaran.project.Scheme(..., group_tolerance=...) -> glotaran.project.Scheme(..., clp_link_tolerance=...)
  • <scheme_file>.maximum-number-function-evaluations -> <scheme_file>.maximum_number_function_evaluations
  • <model_file>.non-negative-least-squares: true -> <model_file>dataset_groups.default.residual_function: non_negative_least_squares
  • <model_file>.non-negative-least-squares: false -> <model_file>dataset_groups.default.residual_function: variable_projection
  • glotaran.parameter.ParameterGroup.to_csv(file_name=parameters.csv) -> glotaran.io.save_parameters(parameters, 'file_name=parameters.csv)

🚧 Maintenance

  • 🩹 Fix Performance Regressions (between version) (#740)
  • 🧪🚇 Add integration test result validation (#754)
  • 🔧 Add more QA tools for parts of glotaran (#739)
  • 🔧 Fix interrogate usage (#781)
  • 🚇 Speedup PR benchmark (#785)
  • 🚇🩹 Use pinned versions of dependencies to run integration CI tests (#892)
  • 🧹 Move megacomplex integration tests from root level to megacomplexes (#894)
  • 🩹 Fix artifact download in pr_benchmark_reaction workflow (#907)

v0.4.2

31 Dec 21:08
0cb3b13
Compare
Choose a tag to compare

pyglotaran 0.4.2 Release Notes

Code name: Continue "GTA Save Game"

The v0.4.2 is a minor patch for the v0.4.1 maintenance release which first established a result comparison framework (#760) to benchmark future releases against. This comparison framework is implemented as a github action workflow which can be run on any PR or release branch. The comparison involves running a set of example scripts hosted in the pyglotaran-examples repository using the code in the PR or release-branch and comparing the output against a 'gold standard' reference - initially generated using the v0.4 code base which was manually checked and validated against other sources. This framework guards pyglotaran against future regression, both in terms of performance and accuracy, going forward and gives users the confidence to migrate from one version to the next.

As part of the release v0.4.1 was tested against 'itself' (based on v0.4.0) which revealed some minor consistency bugs (#747 and #791) which were then simultaneously solved for the next release and 'backported' to this version. Further development revealed a minor bug in saving result files (not in the optimization process) which is patched in the v0.4.2 release (#935). In addition the v0.4.2 maintenance branch bring some internal improvement to the test_result_consistency #936, further validating the checking process.

As noted before in the v0.4.1 release, the output (estimates, plots, etc) of example scripts were validated by manual inspection and comparing against pre-existing analysis software packages:

✨ Features

  • Integration test result validation (#760) (introduced in v0.4.1, updated in v0.4.2).

🩹 Bug fixes

New in v0.4.2

  • 🩹🚧 Backport of bugfix #927 discovered in PR #860 related to initial_concentration normalization when saving results (#935).

Part of v0.4.1

  • Fix unintended saving of sub-optimal parameters (0ece818, backport from #747).
  • Improve ordering in k_matrix involved_compartments function (#791).

🚧 Maintenance

New in v0.4.2:

  • 🚇🚧 Updated 'gold standard' result comparison reference (old -> new).
  • 🚇 Refine test_result_consistency (#936).

🚀 v0.5.0

01 Dec 23:03
89046e0
Compare
Choose a tag to compare

pyglotaran 0.5.0 Release Notes

Code name: "What You Leave Behind"

This release bring some existing new features, while ensuring backwards compatibility (your old models still work) and validation against a large set of examples.

The introduction of dataset groups (#851) and megacomplex models (#736) bring us a lot closer to the dream of building large sophisticated models out of smaller simpler building blocks. Right, much like those colorful bricks we all loved playing with as a child.

0.5.0 (2021-12-01)

✨ Features

  • ✨ Feature: Megacomplex Models (#736)
  • ✨ Feature: Full Models (#747)
  • ✨ Damped Oscillation Megacomplex (a.k.a. DOAS) (#764)
  • ✨ Add Dataset Groups (#851)
  • ✨ Performance improvements (in some cases up to 5x) (#740)

👌 Minor Improvements:

  • 👌 Add dimensions to megacomplex and dataset_descriptor (#702)
  • 👌 Improve ordering in k_matrix involved_compartments function (#788)
  • 👌 Improvements to application of clp_penalties (equal area) (#801)
  • ♻️ Refactor model.from_dict to parse megacomplex_type from dict and add simple_generator for testing (#807)
  • ♻️ Refactor model spec (#836)
  • ♻️ Refactor Result Saving (#841)
  • ✨ Use ruaml.yaml parser for roundtrip support (#893)
  • ♻️ Refactor Result and Scheme loading/initializing from files (#903)
  • ♻️ Several refactoring in glotaran.Parameter (#910)
  • 👌 Improved Reporting of Parameters (#910, #914, #918)
  • 👌 Scheme now excepts paths to model, parameter and data file without initializing them first (#912)

🩹 Bug fixes

  • 🩹 Fix/cli0.5 (#765)
  • 🩹 Fix compartment ordering randomization due to use of set (#799)
  • 🩹 Fix check_deprecations not showing deprecation warnings (#775)
  • 🩹 Fix and re-enable IRF Dispersion Test (#786)
  • 🩹 Fix coherent artifact crash for index dependent models #808
  • 🩹 False positive model validation fail when combining multiple default megacomplexes (#797)
  • 🩹 Fix ParameterGroup repr when created with 'from_list' (#827)
  • 🩹 Fix for DOAS with reversed oscillations (negative rates) (#839)
  • 🩹 Fix parameter expression parsing (#843)
  • 🩹 Use a context manager when opening a nc dataset (#848)
  • 🚧 Disallow xarray versions breaking plotting in integration tests (#900)
  • 🩹 Fix 'dataset_groups' not shown in model markdown (#906)

📚 Documentation

  • 📚 Moved API documentation from User to Developer Docs (#776)
  • 📚 Add docs for the CLI (#784)
  • 📚 Fix deprecation in model used in quickstart notebook (#834)

🗑️ Deprecations (due in 0.7.0)

  • glotaran.model.Model.model_dimension -> glotaran.project.Scheme.model_dimension
  • glotaran.model.Model.global_dimension -> glotaran.project.Scheme.global_dimension
  • <model_file>.type.kinetic-spectrum -> <model_file>.default_megacomplex.decay
  • <model_file>.type.spectral-model -> <model_file>.default_megacomplex.spectral
  • <model_file>.spectral_relations -> <model_file>.clp_relations
  • <model_file>.spectral_relations.compartment -> <model_file>.clp_relations.source
  • <model_file>.spectral_constraints -> <model_file>.clp_constraints
  • <model_file>.spectral_constraints.compartment -> <model_file>.clp_constraints.target
  • <model_file>.equal_area_penalties -> <model_file>.clp_area_penalties
  • <model_file>.irf.center_dispersion -> <model_file>.irf.center_dispersion_coefficients
  • <model_file>.irf.width_dispersion -> <model_file>.irf.width_dispersion_coefficients
  • glotaran.project.Scheme(..., non_negative_least_squares=...) -> <model_file>dataset_groups.default.residual_function
  • glotaran.project.Scheme(..., group=...) -> <model_file>dataset_groups.default.link_clp
  • glotaran.project.Scheme(..., group_tolerance=...) -> glotaran.project.Scheme(..., clp_link_tolerance=...)
  • <scheme_file>.maximum-number-function-evaluations -> <scheme_file>.maximum_number_function_evaluations
  • <model_file>.non-negative-least-squares: true -> <model_file>dataset_groups.default.residual_function: non_negative_least_squares
  • <model_file>.non-negative-least-squares: false -> <model_file>dataset_groups.default.residual_function: variable_projection
  • glotaran.parameter.ParameterGroup.to_csv(file_name=parameters.csv) -> glotaran.io.save_parameters(parameters, 'file_name=parameters.csv)

🚧 Maintenance

  • 🩹 Fix Performance Regressions (between version) (#740)
  • 🧪🚇 Add integration test result validation (#754)
  • 🔧 Add more QA tools for parts of glotaran (#739)
  • 🔧 Fix interrogate usage (#781)
  • 🚇 Speedup PR benchmark (#785)
  • 🚇🩹 Use pinned versions of dependencies to run integration CI tests (#892)
  • 🧹 Move megacomplex integration tests from root level to megacomplexes (#894)
  • 🩹 Fix artifact download in pr_benchmark_reaction workflow (#907)

v0.5.0rc1

25 Oct 09:51
d05c042
Compare
Choose a tag to compare
v0.5.0rc1 Pre-release
Pre-release

pyglotaran 0.5.0rc1 Release Notes

Code name: "What You Leave Behind (part 1)"

This is a pre-release of the software for the purpose of a live demonstration at the Vrije Universiteit on the 25th of october 2021.

0.5.0 (2021-10-25)

✨ Features

  • ✨ Feature: Megacomplex Models (#736)
  • ✨ Feature: Full Models (#747)
  • ✨ Damped Oscillation Megacomplex (a.k.a. DOAS) (#764)
  • ✨ Add Dataset Groups (#851)
  • ✨ Performance improvements (in some cases up to 5x) (#740)

👌 Minor Improvements:

  • 👌 Add dimensions to megacomplex and dataset_descriptor (#702)
  • 👌 Improve ordering in k_matrix involved_compartments function (#788)
  • 👌 Improvements to application of clp_penalties (equal area) (#801)
  • ♻️ Refactor model.from_dict to parse megacomplex_type from dict and add simple_generator for testing (#807)
  • ♻️ Refactor model spec (#836)
  • ♻️ Refactor Result Saving (#841)

🩹 Bug fixes

  • 🩹 Fix/cli0.5 (#765)
  • 🩹 Fix compartment ordering randomization due to use of set (#799)
  • 🩹 Fix check_deprecations not showing deprecation warnings (#775)
  • 🩹 Fix and re-enable IRF Dispersion Test (#786)
  • 🩹 Fix coherent artifact crash for index dependent models #808
  • 🩹 False positive model validation fail when combining multiple default megacomplexes (#797)
  • 🩹 Fix ParameterGroup repr when created with 'from_list' (#827)
  • 🩹 Fix for DOAS with reversed oscillations (negative rates) (#839)
  • 🩹 Fix parameter expression parsing (#843)
  • 🩹 Use a context manager when opening a nc dataset (#848)

📚 Documentation

  • 📚 Moved API documentation from User to Developer Docs (#776)
  • 📚 Add docs for the CLI (#784)
  • 📚 Fix deprecation in model used in quickstart notebook (#834)

🗑️ Deprecations (due in 0.7.0)

  • glotaran.model.Model.model_dimension -> glotaran.project.Scheme.model_dimension
  • glotaran.model.Model.global_dimension -> glotaran.project.Scheme.global_dimension
  • <model_file>.type.kinetic-spectrum -> <model_file>.default_megacomplex.decay
  • <model_file>.type.spectral-model -> <model_file>.default_megacomplex.spectral
  • <model_file>.spectral_relations -> <model_file>.clp_relations
  • <model_file>.spectral_relations.compartment -> <model_file>.clp_relations.source
  • <model_file>.spectral_constraints -> <model_file>.clp_constraints
  • <model_file>.spectral_constraints.compartment -> <model_file>.clp_constraints.target
  • <model_file>.equal_area_penalties -> <model_file>.clp_area_penalties
  • <model_file>.irf.center_dispersion -> <model_file>.irf.center_dispersion_coefficients
  • <model_file>.irf.width_dispersion -> <model_file>.irf.width_dispersion_coefficients
  • glotaran.project.Scheme(..., non_negative_least_squares=...) -> <model_file>dataset_groups.default.residual_function
  • glotaran.project.Scheme(..., group=...) -> <model_file>dataset_groups.default.link_clp
  • glotaran.project.Scheme(..., group_tolerance=...) -> glotaran.project.Scheme(..., clp_link_tolerance=...)
  • <scheme_file>.maximum-number-function-evaluations -> <scheme_file>.maximum_number_function_evaluations
  • <model_file>.non-negative-least-squares: true -> <model_file>dataset_groups.default.residual_function: non_negative_least_squares
  • <model_file>.non-negative-least-squares: false -> <model_file>dataset_groups.default.residual_function: variable_projection
  • glotaran.parameter.ParameterGroup.to_csv(file_name=parameters.csv) -> glotaran.io.save_parameters(parameters, 'file_name=parameters.csv)

🚧 Maintenance

  • 🩹 Fix Performance Regressions (between version) (#740)
  • 🧪🚇 Add integration test result validation (#754)
  • 🔧 Add more QA tools for parts of glotaran (#739)
  • 🔧 Fix interrogate usage (#781)
  • 🚇 Speedup PR benchmark (#785)

v0.4.1

07 Sep 21:50
21ba272
Compare
Choose a tag to compare

pyglotaran 0.4.1 Release Notes

Code name: "GTA Save Game"

The v0.4.1 is special maintenance release which establishes a result comparison framework (#760) to benchmark future releases against. This comparison framework is implemented as a github action workflow which can be run on any PR or release branch. The comparison involves running a set of example scripts hosted in the pyglotaran-examples repository using the code in the PR or release-branch and comparing the output against a 'gold standard' reference - initially generated using the v0.4 code base which was manually checked and validated against other sources. This framework guards pyglotaran against future regression, both in terms of performance and accuracy, going forward and gives users the confidence to migrate from one version to the next.

As part of this release the v0.4.1 was tested against 'itself' (based on v0.4.0) which revealed some minor consistency bugs (#747 and #791) which were then simultaneously solved for the next release and 'backported' to this version. The output (estimates, plots, etc) of example scripts were validated by manual inspection and comparing against pre-existing analysis software packages:

✨ Features

  • Integration test result validation (#760)

🩹 Bug fixes

  • Fix unintended saving of sub-optimal parameters (0ece818, backport from #747)
  • Improve ordering in k_matrix involved_compartments function (#791)

v0.4.0

25 Jun 21:00
dc00e6d
Compare
Choose a tag to compare

pyglotaran 0.4.0 Release Notes

✨ Features

  • Add basic spectral model (#672)
  • Add Channel/Wavelength dependent shift parameter to irf. (#673)
  • Refactored Problem class into GroupedProblem and UngroupedProblem (#681)
  • Plugin system was rewritten (#600, #665)
  • Deprecation framework (#631)
  • Better notebook integration (#689)

🩹 Bug fixes

  • Fix excessive memory usage in _create_svd (#576)
  • Fix several issues with KineticImage model (#612)
  • Fix exception in sdt reader index calculation (#647)
  • Avoid crash in result markdown printing when optimization fails (#630)
  • ParameterNotFoundException doesn't prepend '.' if path is empty (#688)
  • Ensure Parameter.label is str or None (#678)
  • Properly scale StdError of estimated parameters with RMSE (#704)
  • More robust covariance_matrix calculation (#706)
  • ParameterGroup.markdown() independent parametergroups of order (#592)

🗑️ Deprecations

  • glotaran.ParameterGroup -> glotaran.parameterParameterGroup
  • glotaran.read_model_from_yaml -> glotaran.io.load_model(..., format_name="yaml_str")
  • glotaran.read_model_from_yaml_file -> glotaran.io.load_model(..., format_name="yaml")
  • glotaran.read_parameters_from_csv_file -> glotaran.io.load_parameters(..., format_name="csv")
  • glotaran.read_parameters_from_yaml -> glotaran.io.load_parameters(..., format_name="yaml_str")
  • glotaran.read_parameters_from_yaml_file -> glotaran.io.load_parameters(..., format_name="yaml")
  • glotaran.io.read_data_file -> glotaran.io.load_dataset
  • result.save -> glotaran.io.save_result(result, ..., format_name="legacy")
  • result.get_dataset("<dataset_name>") -> result.data["<dataset_name>"]
  • glotaran.analysis.result -> glotaran.project.result
  • glotaran.analysis.scheme -> glotaran.project.scheme
  • model.simulate -> glotaran.analysis.simulation.simulate(model, ...)

🔌 Plugins

  • ProjectIo 'folder'/'legacy' plugin to save results (#620)
  • Model 'spectral-model' (#672)

📚 Documentation

  • User documentation is written in notebooks (#568)
  • Documentation on how to write a DataIo plugin (#600)