-
Notifications
You must be signed in to change notification settings - Fork 10
Roadmap
Benoit Bovy edited this page Jun 11, 2017
·
9 revisions
-
Provide a small framework for creating computational models (
Model
objects) that are built from collections of re-usable model components (Process
subclasses). EachProcess
subclass:- has a declarative interface that consists of a set of variables (
Variable
,ForeignVariable
,VariableList
,VariableGroup
objects) as class attributes ; - implements specific methods like
.initialize()
,.run_step()
,.finalize_step()
and/orfinalize()
, which use/set values for the variables declared in the Process.
- has a declarative interface that consists of a set of variables (
-
Provide an xarray extension (
Dataset.simlab
accessor) that allows:- Adding new data variables and/or coordinates to a xarray
Dataset
as inputs and time steps of a givenModel
; - Running the model with the
ds.simlab.run()
method, which returns a new Dataset with both model input and output data.
- Adding new data variables and/or coordinates to a xarray
-
Write tests and documentation.
- For large simulations, save model outputs (snapshots) to disk as the simulation proceed and then return
the new
Dataset
as an open file (currently all snapshots are kept in memory). - Add logging and progress status of a simulation. Maybe use the
logging
module (add a logger that can be used in each process). - Allow the processes in a
Model
to be run in parallel (using Dask?) at each time step during a simulation, and also during initialization and finalization. This should be quite straightforward as the processes in aModel
and their inter-dependencies together form a Directed Acyclic Graph (DAG). - Run multiple models in parallel (using dask?) with different model input values, using a single
Dataset
object (model inputs have dimensions). This may be simply achieved using a new method that might look likeds.simlab.run_multi('input_values_dim')
whereinput_values_dim
is a multi-index dimension that represents all combinations of model input values. - Provide a command-line interface to run models and also to automatically generate input files (use YAML, toml or other formats).
- Add a settings system, e.g., to enable/disable logging or display a progress bar, to enable/disable setting default value when input is not provided, etc. Also provide a context manager.