ReEDS → Sienna
This content is for v2.2.0. Switch to the latest version for up-to-date documentation.
Cloning the necessary packages for each translation is important.
uv sync --upgradeuv add --editable /path/to/r2x-reedsuv add --editable /path/to/r2x-siennaExample Script
Section titled “Example Script”import jsonfrom importlib.resources import filesfrom pathlib import Pathfrom typing import cast
from infrasys.time_series_manager import TimeSeriesManagerfrom infrasys.time_series_models import TimeSeriesStorageTypefrom infrasys.utils.sqlite import create_in_memory_dbfrom r2x_reeds import ReEDSConfig, ReEDSParserfrom r2x_reeds_to_sienna.getter_utils import add_generator_emissionsfrom r2x_sienna.exporter import SiennaExporterfrom r2x_sienna.plugin_config import SiennaConfig
from r2x_core import DataStore, PluginContext, Rule, System, apply_rules_to_context # type: ignorefrom r2x_core.logger import setup_logging # type: ignore
setup_logging(verbosity=2)
case_name = "reeds_run_folder_name"base_path = "/path/to/reeds/runs"run_path = Path(base_path) / case_name
# =====================================# ReEDS PARSER# =====================================solve_year = 2035weather_year = 2012scenario = "base"reeds_config = ReEDSConfig( solve_year=solve_year, weather_year=weather_year, case_name=case_name, scenario=scenario, models=("r2x_reeds.models", "r2x_sienna.models"),)
store = DataStore.from_plugin_config(reeds_config, path=run_path)context = PluginContext(config=reeds_config, store=store)
parser = cast(ReEDSParser, ReEDSParser.from_context(context))reeds_sys = parser.run()reeds_sys = reeds_sys.systemcontext.source_system = reeds_sys# breakpoint()tmp_dir = reeds_sys.get_time_series_directory()
reeds_sys.convert_storage( time_series_directory=tmp_dir, time_series_storage_type=TimeSeriesStorageType.ARROW, permanent=True,)
# =====================================# Rules Definition# =====================================rules_path = files("r2x_reeds_to_sienna.config") / "rules.json"rules = Rule.from_records(json.loads(rules_path.read_text()))context.rules = rules
# =====================================# ReEDS to Sienna (TRANSLATION)# =====================================connection = create_in_memory_db()ts_manager = TimeSeriesManager( connection, time_series_directory=tmp_dir, time_series_storage_type=TimeSeriesStorageType.ARROW, permanent=True)
sienna_sys = System( name="Sienna", auto_add_composed_components=True, time_series_manager=ts_manager, system_base=100.0,)context.target_system = sienna_sysapply_rules_to_context(context)add_generator_emissions(context)
# =====================================# Sienna Exporter# =====================================results_dir = Path(base_path) / f"{case_name}_results"results_dir.mkdir(exist_ok=True)
exported_system = f"{case_name}.json"output_file = results_dir / exported_systemsienna_config = SiennaConfig( model_year=solve_year, system_name=exported_system, output_path=str(output_file), system_base_power=100.0, scenario=scenario,)
exporter_context = PluginContext( config=sienna_config, system=sienna_sys,)exporter = SiennaExporter.from_context(exporter_context)exporter.on_export()