Ieso#
Module Contents#
Classes Summary#
Independent Electricity System Operator (IESO) |
|
Enum for surplus baseload generation states. |
Functions#
Attributes Summary#
Contents#
- class gridstatus.ieso.IESO[source]#
Bases:
gridstatus.base.ISOBaseIndependent Electricity System Operator (IESO)
Attributes
default_timezone
‘EST’
iso_id
‘ieso’
name
‘Independent Electricity System Operator’
status_homepage
Methods
Get forecast surplus baseload generation.
get_fuel_mix(date[, end, verbose])Hourly output and capability for each fuel type (summed over all generators)
get_generator_report_hourly(date[, end, verbose])Hourly output for each generator for a given date or from date to end.
get_hoep_historical_hourly(date[, end, verbose])get_hoep_real_time_hourly(→ pandas.DataFrame)get_in_service_transmission_limits(date[, end, verbose])get_intertie_flow_5_min(→ pandas.DataFrame)get_intertie_limits_day_ahead_hourly(→ pandas.DataFrame)Get day-ahead intertie scheduling limits.
get_intertie_limits_real_time_5_min(→ pandas.DataFrame)Get real-time intertie scheduling limits.
get_lmp_day_ahead_hourly(→ pandas.DataFrame)Get day-ahead LMP data.
get_lmp_day_ahead_hourly_intertie(→ pandas.DataFrame)get_lmp_day_ahead_hourly_ontario_zonal(date[, end, ...])get_lmp_day_ahead_hourly_virtual_zonal(→ pandas.DataFrame)Get day-ahead zonal virtual LMP data.
get_lmp_day_ahead_operating_reserves(→ pandas.DataFrame)Get day-ahead operating reserves LMP data.
get_lmp_predispatch_hourly(→ pandas.DataFrame)get_lmp_predispatch_hourly_intertie(→ pandas.DataFrame)get_lmp_predispatch_hourly_ontario_zonal(date[, end, ...])get_lmp_predispatch_hourly_virtual_zonal(date[, end, ...])get_lmp_real_time_5_min(date[, end, verbose])get_lmp_real_time_5_min_intertie(date[, end, verbose])get_lmp_real_time_5_min_ontario_zonal(date[, end, verbose])get_lmp_real_time_5_min_virtual_zonal(date[, end, verbose])get_lmp_real_time_operating_reserves(date[, end, verbose])get_load(date[, end, verbose])Get 5-minute load for the Market and Ontario for a given date or from
get_load_forecast(date[, verbose])Get forecasted load for Ontario. Supports only "latest" and "today" because
get_load_zonal_5_min(→ pandas.DataFrame)get_load_zonal_hourly(→ pandas.DataFrame)get_mcp_historical_5_min(date[, end, verbose])get_outage_transmission_limits(date[, end, verbose])get_real_time_totals(→ pandas.DataFrame)get_resource_adequacy_report(→ pandas.DataFrame)Retrieve and parse the Resource Adequacy Report for a given date.
Retrieve and parse Resource Adequacy Reports modified after last_modified time.
get_shadow_prices_day_ahead_hourly(→ pandas.DataFrame)get_shadow_prices_real_time_5_min(→ pandas.DataFrame)get_solar_embedded_forecast(→ pandas.DataFrame)get_solar_market_participant_forecast(→ pandas.DataFrame)get_transmission_outages_planned(date[, end, verbose])get_wind_embedded_forecast(→ pandas.DataFrame)get_wind_market_participant_forecast(→ pandas.DataFrame)Get yearly intertie actual schedule flow hourly. Since this is a yearly file
get_zonal_load_forecast(date[, end, verbose])Get forecasted load by forecast zone (Ontario, East, West) for a given date
- get_forecast_surplus_baseload_generation(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get forecast surplus baseload generation.
- Parameters:
date – The publish date to get data for. The forecast will be for the day after this date.
end – The end date to get data for. If None, only get data for the start date.
verbose – Whether to print verbose output.
- Returns:
Interval Start: The start of the interval
Interval End: The end of the interval
Publish Time: The time the forecast was published
Surplus Baseload MW: The forecast surplus baseload generation in MW
Surplus State: The state of the surplus baseload generation
Action: The action taken for the surplus baseload generation
Export Forecast MW: The forecast export in MW
Minimum Generation Status: The minimum generation status
- Return type:
DataFrame with columns
- get_fuel_mix(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#
Hourly output and capability for each fuel type (summed over all generators) for a given date or from date to end. Variable generators (solar and wind) have a forecast.
- Parameters:
date (datetime.date | datetime.datetime | str) – The date to get the load for Can be a datetime.date or datetime.datetime object, or a string with the values “today” or “latest”. If end is None, returns only data for this date.
end (datetime.date | datetime.datetime, optional) – End date. Defaults None If provided, returns data from date to end date. The end can be a datetime.date or datetime.datetime object.
verbose (bool, optional) – Print verbose output. Defaults to False.
- Returns:
fuel mix
- Return type:
pd.DataFrame
- get_generator_report_hourly(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#
Hourly output for each generator for a given date or from date to end. Variable generators (solar and wind) have a forecast and available capacity. Non-variable generators have a capability.
- Parameters:
date (datetime.date | datetime.datetime | str) – The date to get the load for Can be a datetime.date or datetime.datetime object, or a string with the values “today” or “latest”. If end is None, returns only data for this date.
end (datetime.date | datetime.datetime, optional) – End date. Defaults None If provided, returns data from date to end date. The end can be a datetime.date or datetime.datetime object.
verbose (bool, optional) – Print verbose output. Defaults to False.
- Returns:
generator output and capability/available capacity
- Return type:
pd.DataFrame
- get_hoep_historical_hourly(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#
- get_hoep_real_time_hourly(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_in_service_transmission_limits(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_intertie_actual_schedule_flow_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_intertie_flow_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_intertie_limits_day_ahead_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get day-ahead intertie scheduling limits.
This returns hourly data showing import and export limits for each of Ontario’s intertie zones used in the day-ahead market.
- Parameters:
date – Date or date range to get data for, or “latest”
end – End date for date range (optional)
verbose – Whether to print verbose output
- Returns:
DataFrame with columns for interval start/end and import/export limits for each intertie zone
- get_intertie_limits_real_time_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get real-time intertie scheduling limits.
This returns 5-minute interval data showing import and export limits for each of Ontario’s intertie zones.
- Parameters:
date – Date or date range to get data for, or “latest”
end – End date for date range (optional)
verbose – Whether to print verbose output
- Returns:
DataFrame with columns for interval start/end and import/export limits for each intertie zone
- get_lmp_day_ahead_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get day-ahead LMP data. :param date: The date to get the data for. :param end: The end date to get the data for. :param verbose: Whether to print verbose output.
- Returns:
DataFrame with LMP data.
- get_lmp_day_ahead_hourly_intertie(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_lmp_day_ahead_hourly_ontario_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_lmp_day_ahead_hourly_virtual_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get day-ahead zonal virtual LMP data. :param date: The date to get the data for. :param end: The end date to get the data for. :param verbose: Whether to print verbose output.
- Returns:
DataFrame with LMP data.
- get_lmp_day_ahead_operating_reserves(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Get day-ahead operating reserves LMP data.
- Parameters:
date – The date to get the data for.
end – The end date to get the data for.
verbose – Whether to print verbose output.
- Returns:
DataFrame with operating reserves LMP data.
- get_lmp_predispatch_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_lmp_predispatch_hourly_intertie(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_lmp_predispatch_hourly_ontario_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_lmp_predispatch_hourly_virtual_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_lmp_real_time_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_lmp_real_time_5_min_intertie(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_lmp_real_time_5_min_ontario_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_lmp_real_time_5_min_virtual_zonal(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_lmp_real_time_operating_reserves(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_load(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#
Get 5-minute load for the Market and Ontario for a given date or from date to end date.
- Parameters:
date (datetime.date | datetime.datetime | str) – The date to get the load for Can be a datetime.date or datetime.datetime object, or a string with the values “today” or “latest”. If end is None, returns only data for this date.
end (datetime.date | datetime.datetime, optional) – End date. Defaults None If provided, returns data from date to end date. The end can be a datetime.date or datetime.datetime object.
verbose (bool, optional) – Print verbose output. Defaults to False.
frequency (str, optional) – Frequency of data. Defaults to “5min”.
- Returns:
zonal load as a wide table with columns for each zone
- Return type:
pd.DataFrame
- get_load_forecast(date: str, verbose: bool = False)[source]#
Get forecasted load for Ontario. Supports only “latest” and “today” because there is only one load forecast.
- Parameters:
date (str) – Either “today” or “latest”
verbose (bool, optional) – Print verbose output. Defaults to False.
- Returns:
Ontario load forecast
- Return type:
pd.DataFrame
- get_load_zonal_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_load_zonal_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_mcp_historical_5_min(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#
- get_outage_transmission_limits(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_real_time_totals(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
- get_resource_adequacy_report(date: str | datetime.date | datetime.datetime, end: datetime.date | datetime.datetime | None = None, vintage: Literal['all', 'latest'] = 'latest', last_modified: str | datetime.date | datetime.datetime | None = None) pandas.DataFrame[source]#
Retrieve and parse the Resource Adequacy Report for a given date.
- Parameters:
date (str | datetime.date | datetime.datetime) – The date for which to get the report
end (datetime.date | datetime.datetime | None) – The end date for the range of reports to get
vintage (Literal["all", "latest"]) – The version of the report to get
last_modified (str | datetime.date | datetime.datetime | None) – The last modified time after which to get report(s)
- Returns:
The Resource Adequacy Report df for the given date
- Return type:
pd.DataFrame
- get_resource_adequacy_report_by_last_modified(last_modified: str | datetime.date | datetime.datetime) pandas.DataFrame[source]#
Retrieve and parse Resource Adequacy Reports modified after last_modified time. This method bypasses date iteration and gets all files across all dates. This is useful for ETL systems that want to get all new files at once.
- Parameters:
last_modified – The last modified time after which to get report(s)
vintage – The version of the report to get
- Returns:
The Resource Adequacy Report df with all files modified after last_modified
- Return type:
pd.DataFrame
- get_shadow_prices_day_ahead_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False, last_modified: str | pandas.Timestamp | None = None) pandas.DataFrame[source]#
- get_shadow_prices_real_time_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False, last_modified: str | pandas.Timestamp | None = None) pandas.DataFrame[source]#
- get_solar_embedded_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, vintage: Literal['latest', 'all'] = 'latest', verbose: bool = False) pandas.DataFrame[source]#
- get_solar_market_participant_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, vintage: Literal['latest', 'all'] = 'latest', verbose: bool = False) pandas.DataFrame[source]#
- get_transmission_outages_planned(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False)[source]#
- get_wind_embedded_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, vintage: Literal['latest', 'all'] = 'latest', verbose: bool = False) pandas.DataFrame[source]#
- get_wind_market_participant_forecast(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, vintage: Literal['latest', 'all'] = 'latest', verbose: bool = False) pandas.DataFrame[source]#
- get_yearly_intertie_actual_schedule_flow_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: pandas.Timestamp | None = None, verbose: bool = False, vintage: Literal['all', 'latest'] = 'latest', last_modified: str | datetime.date | datetime.datetime | None = None) pandas.DataFrame[source]#
Get yearly intertie actual schedule flow hourly. Since this is a yearly file it is updated less frequency than the daily files. These can be retrieved via the get_intertie_schedule_flow_hourly method. :param date: The date to get the data for. :param end: The end date to get the data for. :param verbose: Whether to print verbose output. :param vintage: Whether to get the latest version or all versions of the report. :param last_modified: Only return reports modified after this date.
- Returns:
DataFrame with hourly intertie schedule flow data.
- get_zonal_load_forecast(date: str | datetime.date | tuple[datetime.date, datetime.date], end: datetime.date | datetime.datetime | None = None, verbose: bool = False)[source]#
Get forecasted load by forecast zone (Ontario, East, West) for a given date or from date to end date. This method supports future dates.
Supports data 90 days into the past and up to 34 days into the future.
- Parameters:
date (datetime.date | datetime.datetime | str) – The date to get the load for Can be a datetime.date or datetime.datetime object, or a string with the values “today” or “latest”. If end is None, returns only data for this date.
end (datetime.date | datetime.datetime, optional) – End date. Defaults None If provided, returns data from date to end date. The end can be a datetime.date or datetime.datetime object.
verbose (bool, optional) – Print verbose output. Defaults to False.
- Returns:
forecasted load as a wide table with columns for each zone
- Return type:
pd.DataFrame
- class gridstatus.ieso.SurplusState[source]#
Bases:
str,enum.EnumEnum for surplus baseload generation states.
The state is determined by the Action field in the report: - No Action (empty/null) -> No Surplus (white) - Other -> Managed with exports/curtailments/VG dispatch (green) - Manoeuvre -> Potential to dispatch nuclear units (yellow) - Shutdown -> Potential to shutdown nuclear units (red)
Initialize self. See help(type(self)) for accurate signature.
Attributes
MANAGED_WITH_EXPORTS
‘Managed with Exports’
NO_SURPLUS
‘No Surplus’
NUCLEAR_DISPATCH
‘Nuclear Dispatch’
NUCLEAR_SHUTDOWN
‘Nuclear Shutdown’