Skip to content

Roadmap

Benoit Bovy edited this page Jun 11, 2017 · 9 revisions

xarray-simlab's roadmap

v0.1.0

  • Provide a small framework for creating computational models (Model objects) that are built from collections of re-usable model components (Process subclasses). Each Process 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/or finalize(), which use/set values for the variables declared in the Process.
  • 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 given Model ;
    • Running the model with the ds.simlab.run() method, which returns a new Dataset with both model input and output data.
  • Write tests and documentation.

Next

  • 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 a Model 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 like ds.simlab.run_multi('input_values_dim') where input_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.
Clone this wiki locally