Release Notes

v1.0.0

  • Upgrade to Julia v1.10.5.

JuliaSimBatteries

  • Upgrade to ModelingToolkit@9.

JuliaSimControl

  • Upgrade to ModelingToolkit@9.

JuliaSimModelOptimizer

Breaking Changes

  • Upgrade to ModelingToolkit@9.
  • Remove passing of model in InverseProblem constructor.
  • Remove wrapper of GlobalSensitivity in favour of using simulate wrapped in a reduction function.
  • autocomplete is no longer available. It will be added back in a future release.
  • FMU wrapper is no longer available. It will be added back in a future release.

Features

  • Add support to use Prediction Error Method with observed data if the equations for it is linear and invertible.
  • Deprecation of PredictionErrorMethod in favour of DiscreteFixedGainPEM.
  • Add support of using JuliaHub.dataset for passing in Experiment.
  • Add constructor of Experiment with SimulationSpec from JuliaSimBase.
  • Add zscore_meansquaredl2loss which normalizes with zscore before computing mean squared loss.
  • Add initial_conditions keyword argument to Experiment constructor which passes it to the construction of the ODEProblem.
  • Improve documentation and add tutorial for using Prediction Error Method with observed data.

Bug fixes

  • Fix normalization in meansquaredl2loss, norm_meansquaredl2loss.

JuliaSimSurrogates

Features

  • Allow out-of-batch training for large datasets (Lazy Dataloading).
  • Use EnsembleProblem to simulate embeddings for training DigitalEcho.
  • Update FMU recipe for latest changes in FMUGeneration.
  • Add scientific notations for show methods for ED.
  • Use test_ed and valid_ed with DigitalEcho workflow.

Bug Fixes

  • Fix JSHVACDataGenExt for DAE systems from HVAC.jl.
  • Fix validation and test loss computed by callbacks.
  • Fix bug in train_valid_split that allows shuffling.
  • Fix bugs in LayerMonitor callback.

Breaking Changes

  • Remove ModelingToolkit as a dependency from Deployment.
  • Remove FMI and DataGeneration as dependencies from DataGeneration.
  • Remove DataGeneration as dependency from Surrogatize.
  • Move ExperimentData show methods to JSSBase from DataGeneration.

v0.33.0

JuliaSimBatteries

…

JuliaSimControl

Bug fixes

  • Improved compatibility with the wider SciML ecosystem for Julia v1.10.

JuliaSimModelOptimizer

Features

  • Add the ability to launch JuliaHub batch jobs for calibrate and parametric_uq.
  • Add support for specifying parameters by description in the search space.
  • Add support for specifying the initial guess in the search space.
  • Add support for constraints.
  • Add different Multiple Shooting initializations.
  • Add Design Configuration API.
  • Use Ipopt instead of LBFGS by default.

Bug fixes

  • Fix MultipleShooting with 1 trajectory.
  • Fix MultipleShooting with multiple experiments.
  • Avoid catching all exceptions

v0.32.0

JuliaSim

Features

  • Remove BuildingModelLibrary from JuliaSim.
  • Remove CatalystGUI from JuliaSim.
  • Remove CellMLPhysiome from JuliaSim.
  • (Temporarily) remove HVAC from JuliaSim due to compatibility issues.
  • Remove SBMLBioModels from JuliaSim.
  • Remove ThermalThermofluid from JuliaSim.

JuliaSimControl

Bug fixes

  • Improved compatibility with the wider SciML ecosystem.

v0.31.0

FMUGeneration

Features

  • Optimize the size and the speed of the FMUs.
  • Add support for generating base sysimage for FMU deployment on JuliaHub.

JuliaSimBatteries

Features

  • Improved stability of the DAE solver.

JuliaSimModelOptimizer

Features

  • Improve documentation and add tutorials for Prediction Error Method and Collocation methods.

JuliaSimSurrogates

Features

  • Add support for multiple initial conditions with DigitalEcho.
  • Add recipe for deploying FMUs for DigitalEcho.
  • Add support for launching DigitalEcho FMU generation jobs to JuliaHub
  • Add support for datageneration for HVAC models.

v0.30.0

JuliaSim

Features

  • Accept environment path for info.
  • Drop PDESurrogates from JuliaSim.
  • Upgrade to Julia v1.9.3.
  • When creating new Pluto notebooks on JuliaHub with JuliaSim, the cells necessary to make a notebook work with JuliaSim are automatically added to the notebook.

JuliaSimBatteries

  • Add support for time- and state-varying experimental control inputs.
  • Reduce the package compilation times.
  • Improve documentation landing page and model comparisons.

JuliaSimControl

  • Improve fixed step integrator providing additional features.
  • Improve documentation structure, including video tutorials.
  • Reduce complexity of various APIs.

JuliaSimModelOptimizer

  • Add support for multiple models in the same InverseProblem.
  • Add support for Prediction Error Method which is very useful for unstable systems.
  • Improvements in performance, stability and correctness of Collocation Methods.
  • Overall stability in the API for generic use cases.

v0.29.0

JuliaSimControl

Features

Tutorials

JuliaSimModelOptimizer

Features

  • Add support for DataSets as input data
  • Add symbolic regression interface for automated model discovery
  • Add support for log transformed search space
  • Add parallelization support for multiple shooting

JuliaSimSurrogates

Features

  • Add support for custom callbacks in training loop
  • Add support for external simulators like JuliaSimBatteries
  • Add support for plotting ExperimentData objects directly
  • Add support to spawn data generation and training jobs on JuliaHub
  • Added a Datagen app for tuning controllers
  • DigitalEcho now supports deploying to MTK
  • Generically handle constant values during normalization for the DigitalEcho
  • Implemented Controller which has a fixed value at t=0
  • Improved documentation
  • Improves the performance of DigitalEcho
  • Scalable storage format for data generation
  • Support for training with GPUs

PumasQSP

Features

  • Add support for DataSets as input data
  • Add model autocomplete
    • You can now add a neural network to your model and train it as a calibration problem
    • The symbolic regression interface can be used to interpret the results from the neural network
  • Add support for log transformed search space
  • Add parallelization support for multiple shooting
  • Add support for dosing tables

v0.28.0

JuliaSim

Features

  • Upgrade to Julia v1.8.5.

JuliaSimControl

Features

  • Add sliding mode controllers.
  • Add support for integer and binary variables in Model Predictive Controllers (MPC).
  • Introduce Linear Quadratic Regulator (LQR) design method for uncertain systems.
  • Introduce robust Model Predictive Control (MPC) for systems with uncertain parameters.

JuliaSimModelOptimizer

Features

  • Add model autocomplete
    • You can now add a neural network to your model and train it as a calibration problem
    • This can be used for automatic model discovery
  • Experimental Import FMUs into inverse problems
    • Having an MTK model as a starting point is no longer required as we can now import both model exchange and co-simulation FMUs.

v0.27.0

JuliaSimModelOptimizer

Breaking changes

  • Renamed structures to better fit the engineering domain.
    • Trial -> `Experiment
    • SteadyStateTrial -> SteadyStateExperiment
    • ComparisonTrial -> ExperimentComparison
    • Renamed trial collections to experiment collections
      • IndependentTrials -> IndependentExperiments
      • SteadyStateTrials -> SteadyStateExperiments
      • TrialChains -> ChainedExperiments

Features

  • Add support for parameter priors.
  • Add parametrization support to the initial conditions.
  • Add ReplicateData. This allows one to use multiple datasets for one experiment.
  • Add experiment chains. Experiments can now have arbitrarily deep dependencies on any other previously defined experiments.

PumasQSP

Features

  • Add support for parameter priors.
  • Add parametrization support to the initial conditions.
  • Add the possibility to import PEtab files.
  • Add MAPEL.
  • Add ReplicateData. This allows one to use multiple datasets for one trial.
  • Add trial chains. Trials can now have arbitrarily deep dependencies on any other previously defined trials.

v0.26.0

JuliaSim

Breaking Change

  • Requires at least JuliaHub v6.0.0 as the deployment platform.

v0.25.1

JuliaSimModelOptimizer

  • Add error handling in calibration.
  • Decreased overhead for small problems.
  • Fix a bug in how parameters and initial conditions were computed, when ForwardDiff was used, which could have lead to wrong results.
  • Fix MultipleShooting bugs that could lead to wrong results.

BuildingModelLibrary

  • Bumps the CSV version to v0.10 (from earlier v0.9)

ThermalThermofluid

  • Adds LICENSE
  • Fixes room iteration order

v0.25.0

JuliaSimModelOptimizer

Features

  • Hierarchical Bayesian inference is now available as a virtual population generation method.

    This method assumes that the parameters of each Trial subject are sampled from the same population distribution. It then calculates the posterior distribution all parameters, subject-specific and population ones, given the available data. Finally, it uses the posterior distribution of population-level parameters to generate a virtual population.

    When using a Bayesian method to generate a virtual population with MCMCOpt, if the keyword argument hierarchical = true, then this hierarchical method will be used.

  • Pathfinder MCMC initialization is now available. This is an alternative to the standard warmup phase that sampling methods such as No-U-Turn-Sampler use to find regions of high probability mass and tune some internal parameters before sampling. In many cases Pathfinder is able to find regions of more probable parameter values more efficiently.

    Users can choose this method by setting the keyword argument warmup_method = PathfinderWarmUp() in MCMCOpt, before passing it to the vpop function, otherwise the default warmup_method = StandardWarmUp() will be used.

v0.24.1

JuliaSimSurrogates

  • Fix broken surrogates dashboard styling.

v0.24.0

JuliaSimControl

  • The JuliaSimControls package has been renamed to JuliaSimControl. All references to the package should be updated accordingly.
  • Trimming of ModelingToolkit (MTK) models.
  • More general Model-Predictive Control (MPC) problem formulation.

JuliaSimModelOptimizer

  • New calibration feature for robustly fitting data using multiple shooting and collocation methods.

PumasQSP

  • Add support for dosing. The following types of doses can be used:
    • Bolus, increment a state by some amount.
    • PeriodicBolus, same as Bolus periodically.
    • Infusion, increments the rate of change of a state by some amount for a time window of given duration.
    • PeriodicInfusion, same as Infusion periodically, where the period counts from the onset time of the Infusion time window.

v0.23.0

PumasQSP

  • New population subsampling method
    • Users can now set target distributions for any number of model states and our new custom-made method will subsample a virtual population, so that the same model states of virtual patients match the target distributions, as measured by discretized histograms.
  • New plot recipe to plot all trials from a virtual population.
  • Improvements to plotting functionality.

v0.22.0

PumasQSP

The initial release of PumasQSP contains the following features:

  • Bayesian inference is now available when generating virtual populations
    • Each Trial object now contains a likelihood function and noise_priors distributions, which together describe how data was measured in a trial.
  • Timespan optimization is now possible
    • The timespan of a given trial can be fit to data, similarly to how model parameters and initial conditions are optimized to match the data of the trial.
  • New subsampling API
    • Subsampling a virtual population of patients vp for a given trial can now be performed with a simple call to subsample(alg, vp, trial), where alg is one of several available subsampling methods, like MAPEL or Allen-Reiger-Musante 2016 ARM.
  • Accessing the sampler of each subsampling method
    • Users now have access to a Sampler object, which they can call repeatedly to generate new subsampled virtual populations.
    • This way, users can perform subsampling multiple times quickly, without having to wait for the necessary computations of the respective method to finish every time (e.g. solving an optimization problem, like in the case of Allen-Reiger-Musante subsampling).