-
Notifications
You must be signed in to change notification settings - Fork 10
Roadmap
Benoit Bovy edited this page Jun 10, 2017
·
9 revisions
-
Provide a small framework for creating computational models (
Modelobjects) from re-usable model components (Processsubclasses). EachProcesssubclass:- has a declarative interface that defines a set of variables (
Variable,ForeignVariable,VariableList,VariableGroupobjects) 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 defines a set of variables (
-
Provide an xarray extension (
Dataset.simlabaccessor) that allows:- Creating new data variables and/or coordinates for the inputs and time steps of a given
Model; - Run the model using the
ds.simlab.run()method that returns a new Dataset with both model inputs and outputs.
- Creating new data variables and/or coordinates for the inputs and time steps of a given
-
Write tests and documentation.
- For large simulations, save model outputs (snapshots) to disk as the simulation proceed and then return
the new
Datasetas an open file (currently all snapshots are kept in memory). - Logging and progress status of a simulation. Maybe use the
loggingmodule (add a logger that can be used in each process). - Allow the processes in a
Modelto 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 aModeland their inter-dependencies together form a Directed Acyclic Graph (DAG). - Run multiple models in parallel (using dask?) with different input values, using a single
Datasetobject. This may be simply achieved using a new method that might look likeds.simlab.run_multi('input_values_dim')whereinput_values_dimis 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).