Skip to content

Model Run Config

TOML Example

# lines marked with a *required* are REQUIRED PIECES OF METADATA
# if a header does not have *required* it is not required info, but part of its metadata can be marked as *required* to indicate that this metadata is required when the header is included

name = "model-run-1" # *required* name of model run
description = ["This is model run 1"] # description/purpose of the model run
assumptions = [""] # model specific assumptions for this run
version = "v1" # version of model code
notes = [""]

[source_code] # code associated with run
location = "https://github.com/example-model"
branch = "main"

[config]
# any info on config for model sim

[env_deps]
# any info on environment dependencies for model sim

[[datasets]] # datasets this model run is expected to output that will be handed off
  name = "dsg_rpm_2_v2.1" # ** name of dataset
  dataset_id = "load-profiles"
  description = "this is a general description about the dataset, the actual dataset description will be given in the dataset checkin" # any info about dataset
  scheduled_checkin = "2023-02-28" # estimate of when dataset will be checked in

[[handoffs]]
  id = "handoff_id1"
  description = "8760 system-level load profiles, including T&D losses, before distributed generation, at the RS nodal level, including gap-system level loads but not including load shifting from demand response."
  from_model = "" # Optional get FROM PIPES
  to_model = "rpm" # *required*
  scheduled_start = ""
  scheduled_end = "2023-03-01" # *required*
  notes = ""

[[handoffs]]
  id = "handoff_id2"
    description = "EV Locations."
    from_model = "" # Optional get FROM PIPES
  to_model = "dgen" # *required*
  scheduled_start = ""
  scheduled_end = "2023-05-05" # *required*
  notes = ""

[[tasks]]
  id = "check_solar"    # *required* name to refer to this task, must be unique otherwise PIPES will append integers, spaces are converted to '_'
  type = "QAQC"         # *required* type to refer to this task
  description = ""          # *required*
  inputs = ["load-profiles",]               #
  notes = [""]          # optional
  scheduled_start = ""  # optional, by default this is scheduled according to model run and handoff schedules
  scheduled_end   = ""  # optional, by default this is scheduled according to model run and handoff schedules
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this QAQC task.
  handoff_id = "handoff_id1" # optional, use this field if a task is associated with a handoff id. If not, this line should be deleted.

  [[tasks.acceptance_criteria]] # custom user key/value TOML pairs (possibly nested) to describe what needs to be done with qaqc, we provide some examples below
    bounds = []
    columns = [""] # columns to check
    units = "" # check that units

[[tasks]]
  id = "vis_solar"
  type = "Visualization" # *required* type to refer to this task
  description = ""
  inputs = ["",]
  notes = [""]
  scheduled_start = "" # optional, by default this is scheduled according to model run and handoff schedules
  scheduled_end   = "" # optional, by default this is scheduled according to model run and handoff schedules
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this visualization task.
  handoff_id = "handoff_id1"

  [[tasks.parameters]] # custom user key/value TOML pairs (possibly nested) to describe what needs to be done with vis, we provide some examples below
    type = "line"  #
    columns = []   #
    colors = []

[[tasks]]
  id = "trans_1" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "30% of passenger cars on the road in 2045 are plug-in electric. Residential building equipment and appliance sales are distributed across all efficiency levels. 80% of new & retrofit equipment is 5 years ahead of California's Title 24 commercial building energy-efficiency code-minimum. 75% of residents have access to residential charging; 25% access to workplace charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_moderate" # *required* DO NOT MODIFY
  to_value = "earlynobio_moderate" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_2" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "30% of passenger cars on the road in 2045 are plug-in electric. Residential building equipment and appliance sales are distributed across all efficiency levels. 80% of new & retrofit equipment is 5 years ahead of California's Title 24 commercial building energy-efficiency code-minimum. 75% of residents have access to residential charging; 25% access to workplace charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_moderate" # *required* DO NOT MODIFY
  to_value = "sb100_moderate" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_3" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "30% of passenger cars on the road in 2045 are plug-in electric. Residential building equipment and appliance sales are distributed across all efficiency levels. 80% of new & retrofit equipment is 5 years ahead of California's Title 24 commercial building energy-efficiency code-minimum. 75% of residents have access to residential charging; 25% access to workplace charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_moderate" # *required* DO NOT MODIFY
  to_value = "trans_moderate" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_4" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "30% of passenger cars on the road in 2045 are plug-in electric. Residential building equipment and appliance sales are distributed across all efficiency levels. 80% of new & retrofit equipment is 5 years ahead of California's Title 24 commercial building energy-efficiency code-minimum. 75% of residents have access to residential charging; 25% access to workplace charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_moderate" # *required* DO NOT MODIFY
  to_value = "ltdnewtrans_moderate" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_5" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "Appliances, heating within buildings switch from natural gas to electric. Residential building equipment and appliance sales are at highest efficiency available. 80% of passenger cars on the road in 2045 are plug-in electric. 60% of residents have access to residential charging; 50% access to workplace charging to encourage more daytime charging. Demand is more flexible in its timing."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_high" # *required* DO NOT MODIFY
  to_value = "earlynobio_high" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_6" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "Appliances, heating within buildings switch from natural gas to electric. Residential building equipment and appliance sales are at highest efficiency available. 80% of passenger cars on the road in 2045 are plug-in electric. 60% of residents have access to residential charging; 50% access to workplace charging to encourage more daytime charging. Demand is more flexible in its timing."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_high" # *required* DO NOT MODIFY
  to_value = "sb100_high" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_7" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "Appliances, heating within buildings switch from natural gas to electric. Residential building equipment and appliance sales are at highest efficiency available. 80% of passenger cars on the road in 2045 are plug-in electric. 60% of residents have access to residential charging; 50% access to workplace charging to encourage more daytime charging. Demand is more flexible in its timing."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_high" # *required* DO NOT MODIFY
  to_value = "trans_high" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_8" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "Appliances, heating within buildings switch from natural gas to electric. Residential building equipment and appliance sales are at highest efficiency available. 80% of passenger cars on the road in 2045 are plug-in electric. 60% of residents have access to residential charging; 50% access to workplace charging to encourage more daytime charging. Demand is more flexible in its timing."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_high" # *required* DO NOT MODIFY
  to_value = "ltdnewtrans_high" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_9" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "All the electrification of High, but timing of demand is not aligned with renewable generation. Energy efficiency adoption is lower than Moderate (matches LADWPs 2017 Strategic Long Term Resource Plan 10-year efficiency goals). 90% of residents have access to residential charging; 15% access to workplace charging to restrict daytime charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_stress" # *required* DO NOT MODIFY
  to_value = "sb100_stress" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id1"

[[tasks]]
  id = "trans_10" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "30% of passenger cars on the road in 2045 are plug-in electric. Residential building equipment and appliance sales are distributed across all efficiency levels. 80% of new & retrofit equipment is 5 years ahead of California's Title 24 commercial building energy-efficiency code-minimum. 75% of residents have access to residential charging; 25% access to workplace charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_moderate" # *required* DO NOT MODIFY
  to_value = "earlynobio_moderate" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "trans_11" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "30% of passenger cars on the road in 2045 are plug-in electric. Residential building equipment and appliance sales are distributed across all efficiency levels. 80% of new & retrofit equipment is 5 years ahead of California's Title 24 commercial building energy-efficiency code-minimum. 75% of residents have access to residential charging; 25% access to workplace charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_moderate" # *required* DO NOT MODIFY
  to_value = "sb100_moderate" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "trans_12" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "30% of passenger cars on the road in 2045 are plug-in electric. Residential building equipment and appliance sales are distributed across all efficiency levels. 80% of new & retrofit equipment is 5 years ahead of California's Title 24 commercial building energy-efficiency code-minimum. 75% of residents have access to residential charging; 25% access to workplace charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_moderate" # *required* DO NOT MODIFY
  to_value = "trans_moderate" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "trans_13" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "30% of passenger cars on the road in 2045 are plug-in electric. Residential building equipment and appliance sales are distributed across all efficiency levels. 80% of new & retrofit equipment is 5 years ahead of California's Title 24 commercial building energy-efficiency code-minimum. 75% of residents have access to residential charging; 25% access to workplace charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_moderate" # *required* DO NOT MODIFY
  to_value = "ltdnewtrans_moderate" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "trans_14" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "Appliances, heating within buildings switch from natural gas to electric. Residential building equipment and appliance sales are at highest efficiency available. 80% of passenger cars on the road in 2045 are plug-in electric. 60% of residents have access to residential charging; 50% access to workplace charging to encourage more daytime charging. Demand is more flexible in its timing."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_high" # *required* DO NOT MODIFY
  to_value = "earlynobio_high" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "trans_15" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "Appliances, heating within buildings switch from natural gas to electric. Residential building equipment and appliance sales are at highest efficiency available. 80% of passenger cars on the road in 2045 are plug-in electric. 60% of residents have access to residential charging; 50% access to workplace charging to encourage more daytime charging. Demand is more flexible in its timing."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_high" # *required* DO NOT MODIFY
  to_value = "sb100_high" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "trans_16" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "Appliances, heating within buildings switch from natural gas to electric. Residential building equipment and appliance sales are at highest efficiency available. 80% of passenger cars on the road in 2045 are plug-in electric. 60% of residents have access to residential charging; 50% access to workplace charging to encourage more daytime charging. Demand is more flexible in its timing."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_high" # *required* DO NOT MODIFY
  to_value = "trans_high" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "trans_17" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "Appliances, heating within buildings switch from natural gas to electric. Residential building equipment and appliance sales are at highest efficiency available. 80% of passenger cars on the road in 2045 are plug-in electric. 60% of residents have access to residential charging; 50% access to workplace charging to encourage more daytime charging. Demand is more flexible in its timing."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_high" # *required* DO NOT MODIFY
  to_value = "ltdnewtrans_high" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "trans_18" # *required* can be any tag, must be unique. if not unique PIPES will make unique. PIPES replaces spaces with '_'
  type = "Transformation" # *required* type to refer to this task
  description = "All the electrification of High, but timing of demand is not aligned with renewable generation. Energy efficiency adoption is lower than Moderate (matches LADWPs 2017 Strategic Long Term Resource Plan 10-year efficiency goals). 90% of residents have access to residential charging; 15% access to workplace charging to restrict daytime charging."
  key = "scenario" # *required* DO NOT MODIFY
  from_value = "demand_stress" # *required* DO NOT MODIFY
  to_value = "sb100_stress" # *required* DO NOT MODIFY
  inputs = [ "",] # what handoff datasets this transformation applies to, if empty applies to all handoff datasets going to 'to_model'.
  assignee = "smolnar" # *required* who (assignee's username) will be responsible for performing this transformation.
  handoff_id = "handoff_id2"

[[tasks]]
  id = "misc-task"
  type = "QAQC"
  description = "Misc task"
  inputs = ["load-profiles",]               #
  notes = [""]          # optional
  scheduled_start = ""  # optional, by default this is scheduled according to model run and handoff schedules
  scheduled_end   = ""  # optional, by default this is scheduled according to model run and handoff schedules
  assignee = "jgu2" # *required* who (assignee's username) will be responsible for performing this QAQC task.
  handoff_id = "handoff_id2"

Schema Reference

schemas

ModelRunCreate

Model Run Schema

Attributes:

Name Type Description
assumptions list[str]
config dict
datasets list[DatasetSchedule]
description list[str]
env_deps dict
name str
notes str
source_code SourceCode | None
version str

assumptions = Field(title='assumptions', description='List of model run assumptions', default=[])

config = Field(title='config', description='Model run config', default={})

datasets = Field(title='datasets', default=[], description='Output datasets for handoff')

description = Field(title='description', default='The description of the model run')

env_deps = Field(title='env_deps', description='Model run environment dependencies', default={})

name = Field(title='name', min_length=1, description='Model run name')

notes = Field(title='notes', description='Model run notes', default='')

source_code = Field(title='source_code', default=None, description='The source code of the model run')

version = Field(title='version', description='The version of model code')

SourceCode

Source Model Schema

Attributes:

Name Type Description
branch str | None
image str | None
location str
tag str | None

branch = Field(title='branch', default='', description='The git branch of source code')

image = Field(title='image', default='', description='The location of container image')

location = Field(title='location', description='The location of the source code')

tag = Field(title='tag', default='', description='The git tag of source code')

schemas

DatasetSchedule

The expected dataset output from model run

Attributes:

Name Type Description
description str
display_name str | None
name str
scheduled_checkin datetime | None

description = Field(title='description', description='The description of the scheduled dataset', default='')

display_name = Field(title='display_name', default=None, description='The dataset display name')

name = Field(title='name', description='A short dataset name')

scheduled_checkin = Field(title='scheduled_checkin', default=None, description='Scheduled checkin date in YYYY-MM-DD format')

schemas

SourceCode

Source Model Schema

Attributes:

Name Type Description
branch str | None
image str | None
location str
tag str | None

branch = Field(title='branch', default='', description='The git branch of source code')

image = Field(title='image', default='', description='The location of container image')

location = Field(title='location', description='The location of the source code')

tag = Field(title='tag', default='', description='The git tag of source code')

schemas

TaskCreate

Attributes:

Name Type Description
assignee UserCreate | EmailStr | None
completion_date datetime | None
description str
input_datasets list[str]
input_parameters dict
logs str
name str
notes str
output_datasets list[str]
output_values dict
scheduled_end datetime | None
scheduled_start datetime | None
source_code SourceCode | None
status ExecutionStatus
subtasks list[SubTask]
type str

assignee = Field(title='assignee', default=None, description='The user who conducts this task')

completion_date = Field(title='completion_date', description='task completion date', default=None)

description = Field(title='description', default='', description='description of task process')

input_datasets = Field(title='input_datasets', description='List of datasets that the task applies to.', default=[])

input_parameters = Field(title='input_parameters', description='Non-dataset inputs, i.e. parameters in dictionary', default={})

logs = Field(title='logs', description='task log location', default='')

name = Field(title='name', description='task name, must be unique to this model run.')

notes = Field(title='notes', description='notes and additional information', default='')

output_datasets = Field(title='output_datasts', description='List of datasets produced from this task', default=[])

output_values = Field(title='output_values', description='non-dataset outputs, i.e. values in dictionary', default={})

scheduled_end = Field(title='scheduled_end', description='scheduled end date', defualt=None)

scheduled_start = Field(title='scheduled_start', description='scheduled start date', default=None)

source_code = Field(title='script', description='Scripts used to perform the task process', default=None)

status = Field(title='status', default=ExecutionStatus.PENDING, description='The task status - PENDING, RUNNING, SUCCESS, or FAILURE')

subtasks = Field(title='subtasks', description='List of actions under this task')

type = Field(title='type', description='task type, like be QAQC, Transformation, or Visualization')