smif.data_layer.abstract_data_store module

A data store holds the bulk of model setup, intermediate and output data: - scenario variant and narrative data (including parameter defaults) - model interventions, initial conditions and state - conversion coefficients - results

Summary

Data:

DataStore A DataStore must implement each of the abstract methods defined in this interface

Reference

class smif.data_layer.abstract_data_store.DataStore[source]

Bases: object

A DataStore must implement each of the abstract methods defined in this interface

read_scenario_variant_data(key, spec, timestep=None, timesteps=None) → smif.data_layer.data_array.DataArray[source]

Read scenario variant data array.

If a single timestep is specified, the spec MAY include ‘timestep’ as a dimension, which should match the timestep specified.

If multiple timesteps are specified, the spec MUST include ‘timestep’ as a dimension, which should match the timesteps specified.

If timestep and timesteps are None, read all available timesteps. Whether or not the spec includes ‘timestep’ as a dimension, the returned DataArray will include a ‘timestep’ dimension with all available timesteps included.

Parameters:
  • key (str) –
  • spec (Spec) –
  • timestep (int (optional)) – If set, read data for single timestep
  • timesteps (list[int] (optional)) – If set, read data for specified timesteps
Returns:

data_array

Return type:

DataArray

scenario_variant_data_exists(key) → bool[source]

Test if scenario variant data exists

Parameters:key (str) –
Returns:
Return type:bool
write_scenario_variant_data(key, data_array)[source]

Write data array

Parameters:
read_narrative_variant_data(key, spec, timestep=None)[source]

Read data array

Parameters:
  • key (str) –
  • spec (Spec) –
  • timestep (int (optional)) – If None, read data for all timesteps
Returns:

data_array

Return type:

DataArray

write_narrative_variant_data(key, data_array)[source]

Write data array

Parameters:
read_model_parameter_default(key, spec)[source]

Read data array

Parameters:
Returns:

data_array

Return type:

DataArray

write_model_parameter_default(key, data_array)[source]

Read data array

Parameters:
Returns:

data_array

Return type:

DataArray

read_interventions(key)[source]

Read interventions data for key

Parameters:key (str) –
Returns:A dict of intervention dictionaries containing intervention attributes keyed by intervention name
Return type:dict[str, dict]
write_interventions(key, interventions)[source]

Write interventions data for key

Parameters:
read_initial_conditions(key) → List[Dict[KT, VT]][source]

Read historical interventions for key

Parameters:key (str) –
Returns:
Return type:list[dict]
write_initial_conditions(key, initial_conditions)[source]

Write historical interventions for key

Parameters:
read_state(modelrun_name, timestep, decision_iteration=None) → List[Dict[KT, VT]][source]

Read list of (name, build_year) for a given model_run, timestep, decision

Parameters:
  • model_run_name (str) –
  • timestep (int) –
  • decision_iteration (int, optional) –
Returns:

Return type:

list[dict]

write_state(state: List[Dict[KT, VT]], modelrun_name: str, timestep: int, decision_iteration=None)[source]

State is a list of decisions with name and build_year.

State is output from the DecisionManager

Parameters:
  • state (list[dict]) –
  • model_run_name (str) –
  • timestep (int) –
  • decision_iteration (int, optional) –
read_coefficients(source_dim, destination_dim)[source]

Reads coefficients from the store

Coefficients are uniquely identified by their source/destination dimensions. This method and write_coefficients implement caching of conversion coefficients between a single pair of dimensions.

Parameters:
  • source_dim (str) – dimension name
  • destination_dim (str) – dimension name
Returns:

Return type:

numpy.ndarray

Notes

To be called from Adaptor implementations.

write_coefficients(source_dim, destination_dim, data)[source]

Writes coefficients to the store

Coefficients are uniquely identified by their source/destination dimensions. This method and read_coefficients implement caching of conversion coefficients between a single pair of dimensions.

Parameters:
  • source_dim (str) – dimension name
  • destination_dim (str) – dimension name
  • data (numpy.ndarray) –

Notes

To be called from Adaptor implementations.

read_results(modelrun_name, model_name, output_spec, timestep=None, decision_iteration=None) → smif.data_layer.data_array.DataArray[source]

Return results of a model from a model_run for a given output at a timestep and decision iteration

Parameters:
  • model_run_id (str) –
  • model_name (str) –
  • output_spec (Spec) –
  • timestep (int, default=None) –
  • decision_iteration (int, default=None) –
Returns:

Return type:

DataArray

write_results(data, modelrun_name, model_name, timestep=None, decision_iteration=None)[source]

Write results of a model_name in model_run_name for a given output_name

Parameters:
  • data_array (DataArray) –
  • model_run_id (str) –
  • model_name (str) –
  • timestep (int, optional) –
  • decision_iteration (int, optional) –
delete_results(model_run_name, model_name, output_name, timestep=None, decision_iteration=None)[source]

Delete results for a single timestep/iteration of a model output in a model run

Parameters:
  • model_run_name (str) –
  • model_name (str) –
  • output_name (str) –
  • timestep (int, default=None) –
  • decision_iteration (int, default=None) –
available_results(modelrun_name)[source]

List available results from a model run

Returns:Each tuple is (timestep, decision_iteration, model_name, output_name)
Return type:list[tuple]
classmethod filter_on_timesteps(dataframe, spec, path, timestep=None, timesteps=None)[source]

Filter dataframe by timestep

The ‘timestep’ dimension is treated as follows:

If a single timestep is specified, the spec MAY include ‘timestep’ as a dimension. If so, the returned DataArray’s spec will match the timestep requested. Otherwise, the DataArray will not include timestep as a dimension.

If multiple timesteps are specified, the returned DataArray’s spec will include a ‘timestep’ dimension to match the timesteps requested.

If timestep and timesteps are None, and the stored data has a timestep column, read all available timesteps. The returned DataArray’s spec ‘timestep’ dimension will match the timesteps requested. If the stored data does not have a timestep column, ignore and pass through unchanged.

static dataframe_to_data_array(dataframe, spec, path)[source]