Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Add ability to instantiate a Scenario object via paths to relevant files

Abierto
#438 0 comentarios 0 reacciones 3 asignados Ver en GitHub

@jenhagg ya está trabajando en esto.

Desde el 2/4/2021.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

feature request
Motivation/Description

As discussed over Slack, a Scenario in Analyze state is mostly read-only (with the exception of being able to delete the Scenario), providing access to:

  • scenario metadata that's retrieved from the ScenarioList
  • a Grid object that's parsed from a .mat file
  • input profiles
  • output time series
  • a change table

Instantiating a Scenario in Analyze state currently relies on using the ScenarioList on the 'compute server' to grab the metadata, locate the grid.mat file, locate the output files, and calculate the input profiles from the base profiles and the change table. However, if we can instantiate a Scenario object in an alternate way that still provides the user with access to all of the relevant data, then we can pass this Scenario object to the many analysis and plotting functions in PostREISE without depending on an external machine that has a ScenarioList and organizes the input/output files in a particular way. This could allow alternate organization of the input/output files to suit a user's needs, e.g. all files for one scenario in the same folder rather than named in a particular way in a raw folder, a data/input folder, a data/output folder.

One design idea

We could create a new AnalyzeFromFilepaths class, as a child class of the existing Analyze class (so that all of our existing checks on isinstance(foo, Analyze) still pass. This new class would overwrite all existing get_x() methods.

Similarly, we could create a new ScenarioFromFilepaths class as a child class of the existing Scenario class. We could instantiate this new ScenarioFromFilepaths class in the following pattern:

class Scenario:
    ...
    @staticmethod
    def from_filepaths(
        *,
        grid_model,
        interconnect,
        grid_filepath,
        pg_filepath,
        pf_filepath,
        lmp_filepath,
        congu_filepath,
        congl_filepath,
        averaged_cong_filepath,
        dcline_pf_filepath=None,
        storage_pg_filepath=None,
        storage_e_filepath=None,
        load_shed_filepath=None,
        demand_filepath=None,
        hydro_filepath=None,
        solar_filepath=None,
        wind_filepath=None,
        base_demand_filepath=None,
        base_hydro_filepath=None,
        base_solar_filepath=None,
        base_wind_filepath=None,
        ct=None,
    )

Then, a Scenario which behaves virtually-identically identically to the current Scenario in Analyze state (with the exception of being able to access certain ScenarioList entries) could be instantiated with:

  • All required inputs, plus
  • either:
    • paths to scaled/appended input profiles, or
    • paths to base input profiles, plus a change table

with the call signature scenario = Scenario.from_filepaths(**kwargs).

This could also provide the base for functions which could be given one or more folders (e.g. outputs_folder, inputs_folder or base_profiles_folder + ct) and would determine the filepaths automatically and return a ScenarioFromFilepaths.

Lenguaje dominante
Python
Estrellas
63
Forks
48
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Breakthrough-Energy/PowerSimData

Todos los issues de Breakthrough-Energy/PowerSimData

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.