reVX.plexos.plexos_plants.PlantProfileAggregation

class PlantProfileAggregation(plexos_table, sc_table, mymean_fpath, cf_fpath, plants=None, dist_percentile=90, dist_thresh_km=None, lcoe_col='total_lcoe', lcoe_thresh=1.3, offshore=False, max_workers=None, plants_per_worker=40, points_per_worker=400, plant_name_col=None, tech_tag=None, dset_tag='', timezone='UTC', bespoke=False)[source]

Bases: object

Aggregate renewable generation profiles to Plexos “plants”

Parameters:
  • plexos_table (str | pandas.DataFrame) – PLEXOS table of bus locations and capacity (MW) provided as a .csv, .json, or pandas DataFrame. Needs columns: latitude, longitude, capacity. Note that capacity needs to be AC for wind and DC for solar.

  • sc_table (str | pandas.DataFrame) – Supply Curve table .csv or pre-loaded pandas DataFrame

  • mymean_fpath (str) – Path to reV multi-year-mean output .h5 file to pull cf_mean-means from - this will be used to determine where plants are built so it does not differ from year to year. The meta must match cf_fpath.

  • cf_fpath (str) – Path to reV annual Generation output .h5 file to pull CF profiles from. Meta must match mymean_fpath.

  • plants (PlexosPlants | None) – Optional PlexosPlants input. If None, PlexosPlants object will be Initialized from the plexos table input.

  • dist_percentile (int, optional) – Percentile to use to compute distance threshold using sc_gid to SubStation distance , by default 90

  • lcoe_col (str, optional) – LCOE column to sort by, by default ‘total_lcoe’

  • lcoe_thresh (float, optional) – LCOE threshold multiplier, exclude sc_gids above threshold, by default 1.3

  • max_workers (int, optional) – Number of workers to use for point and plant creation, 1 == serial, > 1 == parallel, None == parallel using all available cpus, by default None

  • points_per_worker (int, optional) – Number of points to create on each worker, by default 400

  • plants_per_worker (int, optional) – Number of plants to identify on each worker, by default 40

  • offshore (bool, optional) – Include offshore points, by default False

  • plant_name_col (str | None) – Column in plexos_table that has the plant name that should be used in the plexos output csv column headers.

  • tech_tag (str | None) – Optional technology tag to include as a suffix in the plexos output csv column headers.

  • dset_tag (str) – Dataset tag to append to dataset names in cf profile file. e.g. If the cf profile file is a multi year file using dset_tag=”-2008” will enable us to select the corresponding datasets (cf_mean-2008, cf_profile-2008, etc)

  • timezone (str) – Timezone for output generation profiles. This is a string that will be passed to pytz.timezone() e.g. US/Pacific, US/Mountain, US/Central, US/Eastern, or UTC. For a list of all available timezones, see pytz.all_timezones

  • bespoke (bool) – Flag to signify if the cf_fpath file was generated using the reV bespoke wind module. The bespoke output files have generation profiles at the supply curve grid resolution which is different than traditional reV generation outputs that are on the resource grid resolution.

Methods

aggregate(plexos_table, sc_table, ...[, ...])

Aggregate pre-filled plants

aggregate_profiles(out_fpath)

Aggregate plants from capacity factor profiles and save to given output .h5 path

get_gen_gid(res_gid)

Get a generation gid from a resource gid using cf_gid_map.

plants_meta()

Create plants meta data from filled plants DataFrames:

run(plexos_table, sc_table, mymean_fpath, ...)

Find, fill, and save profiles for Plants associated with given PLEXOS buses

Attributes

cf_fpath

reV generation output file path

cf_gid_map

Mapping of res_gid (index) to gen_gid (values)

mymean_fpath

reV multi year mean output file path

plant_builds

PLEXOS Plant builds

plants

Dictionary matching plants to plant ids

plexos_table

PLEXOS table

sc_bus_dist

Compute distance between every Supply Curve gid and every PLEXOS bus

sc_table

Supply Curve Table

tz_alias

Get a short 3-char tz alias if the timezone is common in the US (pst, mst, cst, est)

unique_plant_names

Get a list of ordered unique plant names if plant_name_col was provided.

property plexos_table

PLEXOS table

Returns:

pandas.DataFrame

property mymean_fpath

reV multi year mean output file path

Returns:

str

property cf_fpath

reV generation output file path

Returns:

str

property cf_gid_map

Mapping of res_gid (index) to gen_gid (values)

Returns:

pd.Series

property sc_table

Supply Curve Table

Returns:

pandas.DataFrame

property plants

Dictionary matching plants to plant ids

Returns:

dict

property plant_builds

PLEXOS Plant builds

Returns:

dict

property sc_bus_dist

Compute distance between every Supply Curve gid and every PLEXOS bus

Returns:

ndarray

property unique_plant_names

Get a list of ordered unique plant names if plant_name_col was provided.

Returns:

list | None

property tz_alias

Get a short 3-char tz alias if the timezone is common in the US (pst, mst, cst, est)

Returns:

str

get_gen_gid(res_gid)[source]

Get a generation gid from a resource gid using cf_gid_map. Accounts for a many-to-one resource-to-gen_gid mapping.

Parameters:

res_gid (int)

Returns:

gen_gid

plants_meta()[source]

Create plants meta data from filled plants DataFrames:

  • Location (lat, lon)

  • final capacity (MW)

  • sc_gids

  • res_gids

  • res gid_counts

Parameters:
  • plants (list) – List of filled plant DataFrames

  • out_fpath (str) – .csv path to save plant meta data too

Returns:

plants_meta (pandas.DataFrame) – Location (lat, lon), final capacity, and associated sc_gids, res_gids, and res gid_counts for all plants

aggregate_profiles(out_fpath)[source]

Aggregate plants from capacity factor profiles and save to given output .h5 path

Parameters:

out_fpath (str) – .h5 path to save aggregated plant profiles to A companion .csv with be saved at the same location for plexos.

classmethod aggregate(plexos_table, sc_table, mymean_fpath, cf_fpath, plants_fpath, out_fpath, offshore=False)[source]

Aggregate pre-filled plants

Parameters:
  • plexos_table (str | pandas.DataFrame) – PLEXOS table of bus locations and capacity (MW) provided as a .csv, .json, or pandas DataFrame

  • sc_table (str | pandas.DataFrame) – Supply Curve table .csv or pre-loaded pandas DataFrame

  • mymean_fpath (str) – Path to reV multi-year-mean output .h5 file to pull cf_mean-means from - this will be used to determine where plants are built so it does not differ from year to year. The meta must match cf_fpath.

  • cf_fpath (str) – Path to reV annual Generation output .h5 file to pull CF profiles from. Meta must match mymean_fpath.

  • plants_fpath (str) – Path to .csv containing pre-filled plants

  • out_fpath (str) – .h5 path to save aggregated plant profiles to

  • offshore (bool, optional) – Include offshore points, by default False

classmethod run(plexos_table, sc_table, mymean_fpath, cf_fpath, out_fpath, dist_percentile=90, dist_thresh_km=None, lcoe_col='total_lcoe', lcoe_thresh=1.3, max_workers=None, points_per_worker=400, plants_per_worker=40, offshore=False, plant_name_col=None, tech_tag=None, dset_tag='', timezone='UTC', bespoke=False)[source]

Find, fill, and save profiles for Plants associated with given PLEXOS buses

Parameters:
  • plexos_table (str | pandas.DataFrame) – PLEXOS table of bus locations and capacity (MW) provided as a .csv, .json, or pandas DataFrame. Needs columns: latitude, longitude, capacity. Note that capacity needs to be AC for wind and DC for solar.

  • sc_table (str | pandas.DataFrame) – Supply Curve table .csv or pre-loaded pandas DataFrame

  • mymean_fpath (str) – Path to reV multi-year-mean output .h5 file to pull cf_mean-means from - this will be used to determine where plants are built so it does not differ from year to year. The meta must match cf_fpath.

  • cf_fpath (str) – Path to reV annual Generation output .h5 file to pull CF profiles from. Meta must match mymean_fpath.

  • out_fpath (str) – .h5 path to save aggregated plant profiles to A companion .csv with be saved at the same location for plexos.

  • dist_percentile (int, optional) – Percentile to use to compute distance threshold using sc_gid to SubStation distance , by default 90

  • dist_thresh_km (float | None) – Optional absolute distance threshold in km that will override the dist_percentile input.

  • lcoe_col (str, optional) – LCOE column to sort by, by default ‘total_lcoe’

  • lcoe_thresh (float, optional) – LCOE threshold multiplier, exclude sc_gids above threshold, by default 1.3

  • max_workers (int, optional) – Number of workers to use for point and plant creation, 1 == serial, > 1 == parallel, None == parallel using all available cpus, by default None

  • points_per_worker (int, optional) – Number of points to create on each worker, by default 400

  • plants_per_worker (int, optional) – Number of plants to identify on each worker, by default 40

  • offshore (bool, optional) – Include offshore points, by default False

  • plant_name_col (str | None) – Column in plexos_table that has the plant name that should be used in the plexos output csv column headers.

  • tech_tag (str | None) – Optional technology tag to include as a suffix in the plexos output csv column headers.

  • dset_tag (str) – Dataset tag to append to dataset names in cf profile file. e.g. If the cf profile file is a multi year file using dset_tag=”-2008” will enable us to select the corresponding datasets (cf_mean-2008, cf_profile-2008, etc)

  • timezone (str) – Timezone for output generation profiles. This is a string that will be passed to pytz.timezone() e.g. US/Pacific, US/Mountain, US/Central, US/Eastern, or UTC. For a list of all available timezones, see pytz.all_timezones

  • bespoke (bool) – Flag to signify if the cf_fpath file was generated using the reV bespoke wind module. The bespoke output files have generation profiles at the supply curve grid resolution which is different than traditional reV generation outputs that are on the resource grid resolution.