Ercot 60d Utils#
Module Contents#
Classes Summary#
Output format for extracted offer curves. |
Functions#
|
Extract offer curve from dataframe columns. |
|
Like extract_curve() but returns PG array strings directly. |
|
|
|
Match generator and load names |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Process SCED AS Offer Updates in Operating Hour data. |
|
|
|
|
|
|
|
|
Process SCED Resource AS Offers data. |
Attributes Summary#
Contents#
- class gridstatus.ercot_60d_utils.CurveOutputFormat[source]#
Bases:
enum.StrEnumOutput format for extracted offer curves.
LIST: Returns Python list-of-lists per cell (default). PG_ARRAY_AS_STRING: Returns PostgreSQL array strings like ‘{{mw,price},{mw,price}}’
directly, using ~3x less peak memory.
Initialize self. See help(type(self)) for accurate signature.
Attributes
LIST
‘list’
PG_ARRAY_AS_STRING
‘pg_array_as_string’
- gridstatus.ercot_60d_utils.DAM_ENERGY_BID_AWARDS_COLUMNS = ['Interval Start', 'Interval End', 'Settlement Point Name', 'QSE', 'Bid ID', 'Energy Only Bid...[source]#
- gridstatus.ercot_60d_utils.DAM_ENERGY_BIDS_COLUMNS = ['Interval Start', 'Interval End', 'Settlement Point Name', 'QSE', 'Energy Only Bid ID', 'Energy...[source]#
- gridstatus.ercot_60d_utils.DAM_ENERGY_ONLY_OFFER_AWARDS_COLUMNS = ['Interval Start', 'Interval End', 'Settlement Point Name', 'QSE', 'Offer ID', 'Energy Only...[source]#
- gridstatus.ercot_60d_utils.DAM_ENERGY_ONLY_OFFER_AWARDS_KEY = 'dam_energy_only_offer_awards'[source]#
- gridstatus.ercot_60d_utils.DAM_ENERGY_ONLY_OFFERS_COLUMNS = ['Interval Start', 'Interval End', 'Settlement Point Name', 'QSE', 'Energy Only Offer ID',...[source]#
- gridstatus.ercot_60d_utils.DAM_ESR_AS_OFFERS_COLUMNS = ['Interval Start', 'Interval End', 'QSE', 'DME', 'Resource Name', 'Multi-Hour Block Flag',...[source]#
- gridstatus.ercot_60d_utils.DAM_ESR_COLUMNS = ['Interval Start', 'Interval End', 'QSE', 'DME', 'Resource Name', 'Resource Type', 'Settlement...[source]#
- gridstatus.ercot_60d_utils.DAM_GEN_RESOURCE_COLUMNS = ['Interval Start', 'Interval End', 'QSE', 'DME', 'Resource Name', 'Resource Type', 'Settlement...[source]#
- gridstatus.ercot_60d_utils.DAM_LOAD_RESOURCE_COLUMNS = ['Time', 'Interval Start', 'Interval End', 'Resource Name', 'Max Power Consumption for Load...[source]#
- gridstatus.ercot_60d_utils.DAM_PTP_OBLIGATION_BID_AWARDS_COLUMNS = ['Interval Start', 'Interval End', 'QSE', 'Settlement Point Source', 'Settlement Point Sink',...[source]#
- gridstatus.ercot_60d_utils.DAM_PTP_OBLIGATION_BID_AWARDS_KEY = 'dam_ptp_obligation_bid_awards'[source]#
- gridstatus.ercot_60d_utils.DAM_PTP_OBLIGATION_BIDS_COLUMNS = ['Interval Start', 'Interval End', 'QSE', 'Settlement Point Source', 'Settlement Point Sink',...[source]#
- gridstatus.ercot_60d_utils.DAM_PTP_OBLIGATION_OPTION_AWARDS_COLUMNS = ['Interval Start', 'Interval End', 'QSE', 'Settlement Point Source', 'Settlement Point Sink',...[source]#
- gridstatus.ercot_60d_utils.DAM_PTP_OBLIGATION_OPTION_AWARDS_KEY = 'dam_ptp_obligation_option_awards'[source]#
- gridstatus.ercot_60d_utils.DAM_PTP_OBLIGATION_OPTION_COLUMNS = ['Interval Start', 'Interval End', 'QSE', 'Settlement Point Source', 'Settlement Point Sink',...[source]#
- gridstatus.ercot_60d_utils.DAM_RESOURCE_AS_OFFERS_COLUMNS = ['Interval Start', 'Interval End', 'QSE', 'DME', 'Resource Name', 'Multi-Hour Block Flag',...[source]#
- gridstatus.ercot_60d_utils.extract_curve(df, curve_name=None, mw_suffix='-MW', price_suffix='-Price', mw_cols=None, price_cols=None, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
Extract offer curve from dataframe columns.
Supports two modes: 1. Auto-detect columns by curve_name prefix (default):
Looks for columns like “{curve_name}-MW1”, “{curve_name}-Price1”
Explicit column lists: Pass mw_cols and price_cols directly for custom column patterns e.g., mw_cols=[“QUANTITY_MW1”, “QUANTITY_MW2”],
price_cols=[“PRICE1_URS”, “PRICE2_URS”]
- Parameters:
df – DataFrame with curve data columns.
curve_name – Prefix for auto-detecting MW/Price columns.
mw_suffix – Suffix for MW columns in auto-detect mode.
price_suffix – Suffix for price columns in auto-detect mode.
mw_cols – Explicit list of MW column names.
price_cols – Explicit list of price column names.
output_format – CurveOutputFormat.LIST (default) returns Python list-of-lists per cell. CurveOutputFormat.PG_ARRAY_AS_STRING returns PG array strings like ‘{{mw,price},{mw,price}}’ directly, using ~3x less peak memory.
- gridstatus.ercot_60d_utils.extract_curve_as_pg_string(df, mw_cols, price_cols)[source]#
Like extract_curve() but returns PG array strings directly.
Returns pd.Series of strings like ‘{{100.0,25.5},{200.0,60.0}}’ instead of Python list-of-lists. ~3x less peak memory.
- gridstatus.ercot_60d_utils.match_gen_load_names(list1, list2)[source]#
Match generator and load names
- gridstatus.ercot_60d_utils.process_as_offer_curves(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_dam_energy_bids(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_dam_energy_only_offers(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_dam_esr(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_dam_esr_as_offers(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_dam_gen(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_dam_or_gen_load_as_offers(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_sced_as_offer_updates_in_op_hour(df)[source]#
Process SCED AS Offer Updates in Operating Hour data.
This data tracks the count of Ancillary Service offer updates made by resources during operating hours.
Expects df to already have Interval Start/End from parse_doc().
- gridstatus.ercot_60d_utils.process_sced_esr(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_sced_gen(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_sced_load(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
- gridstatus.ercot_60d_utils.process_sced_resource_as_offers(df, output_format: CurveOutputFormat | str = CurveOutputFormat.LIST)[source]#
Process SCED Resource AS Offers data.
This data contains ancillary service offer curves at the SCED timestamp level. Each row has price/quantity pairs for each AS type across 6 blocks.
- Source columns: PRICEn_URS, PRICEn_DRS, PRICEn_RRSPF, PRICEn_RRSUF,
PRICEn_RRSFF, PRICEn_NS, PRICEn_ECRS, QUANTITY_MWn (n=1-6)
Creates offer curves for each AS type. Format depends on output_format: list-of-lists like [[mw, price], …] or PG array strings.
- Parameters:
df – DataFrame with raw SCED resource AS offers data.
output_format – “list” (default) returns Python list-of-lists per cell. “pg_array_as_string” returns PG array strings like ‘{{mw,price},{mw,price}}’ directly, using ~3x less peak memory.
- gridstatus.ercot_60d_utils.SCED_AS_OFFER_UPDATES_IN_OP_HOUR_COLUMNS = ['Interval Start', 'Interval End', 'Resource Name', 'AS Type', 'Count of Updates During...[source]#
- gridstatus.ercot_60d_utils.SCED_AS_OFFER_UPDATES_IN_OP_HOUR_KEY = 'sced_as_offer_updates_in_op_hour'[source]#
- gridstatus.ercot_60d_utils.SCED_ESR_COLUMNS = ['SCED Timestamp', 'QSE', 'DME', 'Resource Name', 'Resource Type', 'SCED1 Offer Curve', 'SCED2...[source]#
- gridstatus.ercot_60d_utils.SCED_GEN_RESOURCE_COLUMNS = ['SCED Timestamp', 'QSE', 'DME', 'Resource Name', 'Resource Type', 'Telemetered Resource...[source]#
- gridstatus.ercot_60d_utils.SCED_LOAD_RESOURCE_COLUMNS = ['SCED Timestamp', 'QSE', 'DME', 'Resource Name', 'Telemetered Resource Status', 'Max Power...[source]#
- gridstatus.ercot_60d_utils.SCED_RESOURCE_AS_OFFERS_COLUMNS = ['SCED Timestamp', 'Resource Name', 'Curve Type', 'URS Offer Curve', 'DRS Offer Curve', 'RRSPFR...[source]#