diff --git a/.github/workflows/update-sources-docs.yaml b/.github/workflows/update-sources-docs.yaml new file mode 100644 index 00000000..c993a72f --- /dev/null +++ b/.github/workflows/update-sources-docs.yaml @@ -0,0 +1,51 @@ +# This workflow will install and set up conda and gams, run ReEDS, and run tests +name: Update sources documentation + +on: + pull_request: + paths: + - 'docs/sources.csv' + - 'docs/source/documentation_tools/generate_markdown.py' + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + update-sources-docs: + name: update sources-documentation.md + runs-on: ubuntu-latest + permissions: + contents: write # needs write permissions to push updated sources_documentation.md back to the PR branch + env: + REEDS_PATH: ${{ github.workspace }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 1 + # for PRs, we need to check out the actual PR branch so we can push back to it + ref: ${{ github.event.pull_request.head.ref }} + + - name: Set up Python 3.12 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: "3.12" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install argparse + + - name: Generate & commit sources_documentation.md + run: | + python docs/source/documentation_tools/generate_markdown.py -r "$REEDS_PATH" + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add docs/sources_documentation.md + git diff --cached --quiet && echo "No changes to commit" || \ + git commit -m "docs: regenerate sources_documentation.md [skip ci]" && git push \ No newline at end of file diff --git a/docs/source/documentation_tools/README.md b/docs/source/documentation_tools/README.md deleted file mode 100644 index e3c98732..00000000 --- a/docs/source/documentation_tools/README.md +++ /dev/null @@ -1,15 +0,0 @@ -### How to Use Sources Documentation - -1. Before running the .bat script, please ensure the sources.csv file is closed. If open, the script will be unable to replace the file and will throw an error. -2. Run **generate_sources_md_file.bat** script (for Mac and Linux users **generate_sources_md_file.sh**)located within the documentation_tools folder (ReEDS/docs/source/documentation_tools). You will need navigate to that directory prior to running. -3. This will run the first script **generate_new_sources.py**. generating a new **sources.csv** file at the top directory of the repository, please note,the existing sources.csv in your Repository root will be renamed to sources_{timestamp}.csv format. This can be deleted manually if no longer required; or can be held on to if required for comparison. Tree change files are generated in the documentations_tools folder to indicate files not included in the prior sources file (**sources_files_added.csv**), files removed from the prior sources file (**sources_files_deleted.csv**), and files not included in the sources file because they aren't committed (**sources_untracked_files.csv**). These change files should not be committed and can be deleted when no longer needed. -4. Once this has finished running, please proceed to update relevant fields in the *sources.csv* file -5. Once relevant fields have been updated, please save sources.csv and close it. -6. Run **generate_markdown.bat** (for Mac and Linux users **generate_markdown.sh**)located within the documentation_tools folder. This will generate a README file *sources_documentation.md* with all the Source files and their details for the Repository by running the script **generate_markdown.py**. The markdown file will be generated in the ReEDS/docs/source/ location. -7. Commit and push the updated **sources.csv** and **sources_documentation.md** files. ---- - -#### How to Update Relevant Fields in sources.csv -1. Once prompted by the .bat script, open **sources.csv** (found at the Repository root). -2. Using the Added Files List, **sources_files_added.csv** (found within the documentation_tools folder) which displays all the input files added by the user, enter relevant details in corresponding columns of **sources.csv**. Fields that do not apply can be left blank. Do not add new columns to sources.csv without also updating the scripts to support the expanded fields. -3. Save the sources.csv and close the file. diff --git a/docs/source/documentation_tools/generate_markdown.bat b/docs/source/documentation_tools/generate_markdown.bat deleted file mode 100644 index 4941604d..00000000 --- a/docs/source/documentation_tools/generate_markdown.bat +++ /dev/null @@ -1 +0,0 @@ -python generate_markdown.py \ No newline at end of file diff --git a/docs/source/documentation_tools/generate_markdown.py b/docs/source/documentation_tools/generate_markdown.py index 8bbcf9ab..4eb9e185 100644 --- a/docs/source/documentation_tools/generate_markdown.py +++ b/docs/source/documentation_tools/generate_markdown.py @@ -1,6 +1,17 @@ #!/usr/bin/env python # coding: utf-8 +# Note: this script does not need to be run manually, +# sources_documentation.md is updated automatically as part of the update-sources-docs.yaml workflow + +# How to use this script to get an updated sources_documentation.md file: +# 1. update docs/sources.csv +# 2. from the docs/source/documentation_tools folder, run: python generate_markdown.py +# optional args: +# -g/--githubURL Base URL prepended to file links in markdown. +# -r/--reedsPath Path used to find sources.csv and write output. + + # In[1]: import os @@ -10,7 +21,7 @@ def slugify(text: str) -> str: """ - Convert a string to a stable anchor id for markdow. + Convert a string to a stable anchor id for markdown. Lowercase, replace spaces and slashes with hyphens, remove special characters except hyphens, and collapse multiple hyphens into one. Args: @@ -180,8 +191,9 @@ def main(): reeds_path = os.path.dirname(os.path.dirname(os.path.dirname(current_path))) reeds_path = reeds_path.replace("\\","/") + reeds_docs_path = os.path.join(reeds_path, "docs") - desc_file_path = os.path.join(reeds_path, desc_holder).replace("\\","/") + desc_file_path = os.path.join(reeds_docs_path, desc_holder).replace("\\","/") #Dataframe to store the newly generated sources.csv data @@ -220,7 +232,7 @@ def main(): #Generate separate readme for ReEDS 2.0 Sources files main_readme_file = "sources_documentation.md" - main_readme_file_path = os.path.join(reeds_path, main_readme_file).replace("\\","/") + main_readme_file_path = os.path.join(reeds_docs_path, main_readme_file).replace("\\","/") #Open markdown file for entries with open(main_readme_file_path, "w") as main_file: diff --git a/docs/source/documentation_tools/generate_markdown.sh b/docs/source/documentation_tools/generate_markdown.sh deleted file mode 100644 index f7f7fb2d..00000000 --- a/docs/source/documentation_tools/generate_markdown.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -python generate_markdown.py \ No newline at end of file diff --git a/docs/source/documentation_tools/generate_new_sources.py b/docs/source/documentation_tools/generate_new_sources.py deleted file mode 100644 index b2552cf9..00000000 --- a/docs/source/documentation_tools/generate_new_sources.py +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 - -# In[1]: - - -#author: akarmaka -#This file processes the existing sources.csv file from the repo to check for any changes -# and generates a new version of sources.csv containing details about each input and script files - -import os -import csv -import pandas as pd -from datetime import datetime -import re - -timestamp = datetime.now().strftime("%Y%m%d%H%M") - - -# Description holder file -desc_holder = 'sources.csv' -desc_holder = desc_holder.replace("\\","/") - - -#Setting correct path to main ReEDS folder -current_path = os.getcwd() -reeds_path = os.path.dirname(os.path.dirname(os.path.dirname(current_path))) -reeds_path = reeds_path.replace("\\","/") -#current_path = current_path.replace("/postprocessing/documentation_tools","") - - -#dir_path = current_path.replace("\\","/") -#Descriptor file path -desc_file_path = os.path.join(reeds_path, desc_holder).replace("\\","/") - - - -#file extensions dictionary to filter for -extensions = ['.csv', '.h5', '.xlsx', 'csv.gz'] #['.csv', '.py', 'csv.gz', '.gms', '.h5', '.r'] - -#folders to be excluded for source.csv population -omit_folders = ['.git', '.github', 'runs'] - -#Temp files to be ignored -ignore_files = ['sources_interim', 'sources_{timestamp}', 'sources_files_added', 'sources_files_deleted', 'sources_untracked_files', 'local_sources_files_added'] -timestamp_pattern = re.compile(r'^sources_\d{12}$') - - - -descriptions = {} -indices = {} -citations = {} -dollar_year = {} -filetypes = {} -units = {} - - -#Use for reading sources.csv if re-running the script! -with open(desc_file_path, "r") as csv_file: - read = csv.DictReader(csv_file) - for row in read: - file_loc = row["FileName_new"] - ext = row["FileExtension"] - rel_path = row["RelativeFilePath"] - #full_path = row["FullFilePath"] - description = row["Description_new"] - index = row["Indices"] - dollar_yr = row["DollarYear"] - citation = row["Citation"] - filetype = row["Filetype"] - unit = row["Units"] - - descriptions[rel_path] = description - indices[rel_path] = index - citations[rel_path] = citation - dollar_year[rel_path] = dollar_yr - filetypes[rel_path] = filetype - units[rel_path] = unit - - - -#Saving the latest sources.csv for the interim -interim_sources_csv = "sources_interim.csv" -interim_sources_csv_path = os.path.join(reeds_path, interim_sources_csv).replace("\\","/") - - -#Open csv file to store new sources.csv data -with open(interim_sources_csv_path, "w", newline="") as csv_file: - writer = csv.writer(csv_file) - - #Specifying headers - writer.writerow(["RelativeFilePath", "RelativeFolderPath", "FileName_new", "FileExtension", "Description_new", "Indices", "DollarYear", "Citation", "Filetype", "Units"]) - - data = [] - #To navigate entire directory and subdirectories within it - for root, dirs, files in os.walk(reeds_path, topdown=True): - - dirs[:] = [d for d in dirs if d not in omit_folders] - - files.sort(key=str.casefold) - - for file_name in files: - - #Store file paths - file_path = os.path.join(root, file_name) - file_path = file_path.replace("\\", "/") - - #Store relative paths - relative_path = os.path.relpath(file_path, reeds_path) - relative_path = "\\"+ relative_path - relative_path = relative_path.replace("\\", "/") - - rel_folder_path = os.path.dirname(relative_path).replace("\\", "/") - - #Store file names and their respective extensions - file_name, file_ext = os.path.splitext(file_name) - - if file_name in ignore_files or timestamp_pattern.match(file_name): - continue - - #Filter files based on extensions present in our dictionary - if file_ext in extensions: - - description = descriptions.get(relative_path, '') - index = indices.get(relative_path, '') - - citation = citations.get(relative_path, '') - dollar_yr = dollar_year.get(relative_path, '') - filetype = filetypes.get(relative_path, '') - unit = units.get(relative_path, '') - - data.append({"RelativeFilePath" : relative_path, "RelativeFolderPath": rel_folder_path, "FileName_new": file_name, "FileExtension": file_ext, "Description_new": description, "Index": index, "DollarYear": dollar_yr, "Citation": citation, "Filetype": filetype, "Units": unit}) - - sorted_data = sorted(data, key=lambda x: x["RelativeFilePath"].casefold()) - - for row in sorted_data: - relative_file_path = row["RelativeFilePath"] - relative_folder_path = row["RelativeFolderPath"] - file_name = row["FileName_new"] - file_ext = row["FileExtension"] - description = row["Description_new"] - index = row["Index"] - dollar_yr = row["DollarYear"] - citation = row["Citation"] - filetype = row["Filetype"] - unit = row["Units"] - - writer.writerow([relative_file_path, relative_folder_path, file_name, file_ext, description, index, dollar_yr, citation, filetype, unit]) - - - -#Function to compare the 2 csv files to generate an added and deleted files list -def compare_sources_csv(old_csv_file, new_csv_file): #, tracking_file): - with open(old_csv_file, 'r') as file: - old_csv = csv.DictReader(file) - old_files = [row['RelativeFilePath'] for row in old_csv] - - with open(new_csv_file, 'r') as file: - new_csv = csv.DictReader(file) - new_files = [row['RelativeFilePath'] for row in new_csv] - - - added_files = set(new_files) - set(old_files) - # tracked_and_added_files = added_files.intersection(tracked_files) - - - deleted_files = set(old_files) - set(new_files) - # tracked_and_deleted_files = set(deleted_files) - set(tracked_files) - - with open('local_sources_files_added.csv', 'w', newline='') as file: - writer = csv.writer(file) - writer.writerow(['RelativeFilePath']) - writer.writerows([[file_path] for file_path in added_files]) - - with open('sources_files_deleted.csv', 'w', newline='') as file: - writer = csv.writer(file) - writer.writerow(['RelativeFilePath']) - writer.writerows([[file_path] for file_path in deleted_files]) - -#Call the compare function which compares local versions of old vs new sources.csv -compare_sources_csv(desc_file_path, interim_sources_csv_path) - - -#Read the tracked files list which contains all the files committed to the branch -tracked_file = "tracked_files_list.txt" -tracked_file_path = os.path.join(reeds_path, tracked_file).replace("\\","/") - -df_tracked_file_list = pd.read_csv(tracked_file_path, header=None, names=['RelativeFilePath']) -df_tracked_file_list['RelativeFilePath'] = df_tracked_file_list['RelativeFilePath'].str.replace('\\', '/', regex=False) -df_tracked_file_list['RelativeFilePath'] = "/" + df_tracked_file_list['RelativeFilePath'] - -df_sources_added_file = pd.read_csv("local_sources_files_added.csv", header=0) - -#Function to compare local version of files added and the files committed -def compare_commited_files(tracked_sources_added, tracked_list): - - #Comparison to generate added and tracked files (tracked = committed) - df_added_tracked_files = pd.merge(tracked_sources_added, tracked_list, on='RelativeFilePath', how='inner') - df_added_tracked_files.to_csv('sources_files_added.csv', sep=',', encoding='utf-8', index=False) - - #Comparison to generate untracked files - df_untracked_files = tracked_sources_added[~tracked_sources_added['RelativeFilePath'].isin(tracked_list['RelativeFilePath'])] - df_untracked_files.to_csv('sources_untracked_files.csv', sep=',', encoding='utf-8', index=False) - - -#Call function to compare local vs committed versions of files -compare_commited_files(df_sources_added_file, df_tracked_file_list) - - - -#Function to rename files -def rename_file(reeds_path, old_sources_csv, new_sources_csv): - old_file_path = os.path.join(reeds_path, old_sources_csv).replace("\\", "/") - - new_file_path = os.path.join(reeds_path, new_sources_csv).replace("\\", "/") - - os.rename(old_file_path, new_file_path) - - - -#Old sources csv is the original sources.csv file -old_sources_csv = "sources.csv" -#Adding a timestamp for log purposes and to compare with the latest sources.csv if needed -new_sources_csv = f"sources_{timestamp}.csv" - -#Renaming original sources to sources file with a timestamp; to be kept for comparison if needed -rename_file(reeds_path, old_sources_csv, new_sources_csv) - -#Renaming latest sources.csv to take the place of the original sources.csv -rename_file(reeds_path, interim_sources_csv, old_sources_csv) - - -#Removing the tracked files list generated by git comamnd -os.remove(tracked_file_path) - - - - -print("Added & Deleted Files list generated") - -print("New Sources File list generated") - - -# In[ ]: - - - - diff --git a/docs/source/documentation_tools/generate_sources_md_file.bat b/docs/source/documentation_tools/generate_sources_md_file.bat deleted file mode 100644 index 5245fe80..00000000 --- a/docs/source/documentation_tools/generate_sources_md_file.bat +++ /dev/null @@ -1,7 +0,0 @@ -FOR /F "tokens=*" %%g IN ('git rev-parse --abbrev-ref HEAD') do (SET VAR=%%g) -cd .. -cd .. -cd .. -git ls-tree -r %VAR% --name-only > tracked_files_list.txt -cd docs\source\documentation_tools -python generate_new_sources.py \ No newline at end of file diff --git a/docs/source/documentation_tools/generate_sources_md_file.sh b/docs/source/documentation_tools/generate_sources_md_file.sh deleted file mode 100644 index 2df4b886..00000000 --- a/docs/source/documentation_tools/generate_sources_md_file.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -branch=$(git rev-parse --abbrev-ref HEAD) -cd .. -cd .. -cd .. -git ls-tree -r $branch --name-only > tracked_files_list.txt -cd docs/source/documentation_tools -python generate_new_sources.py \ No newline at end of file diff --git a/docs/sources_documentation.md b/docs/sources_documentation.md index 53254f2e..a5a2811c 100644 --- a/docs/sources_documentation.md +++ b/docs/sources_documentation.md @@ -63,6 +63,7 @@ - [userinput](#inputs-userinput) - [valuestreams](#inputs-valuestreams) - [waterclimate](#inputs-waterclimate) + - [zones](#inputs-zones) - [postprocessing](#postprocessing) - [air_quality](#postprocessing-air-quality) - [rcm_data](#postprocessing-air-quality-rcm-data) @@ -98,9 +99,6 @@ - **Dollar year:** 2004 --- -- [cases_county.csv](/cases_county.csv) ---- - - [cases_examples.csv](/cases_examples.csv) --- @@ -689,9 +687,6 @@ - [hierarchy_agg69.csv](/inputs/hierarchy_agg69.csv) --- - - [hierarchy_offshore.csv](/inputs/zones/hierarchy_offshore.csv) ---- - - [remote_files.csv](/inputs/remote_files.csv) --- @@ -827,13 +822,9 @@ --- - ##### inputs/climate/GFDL-ESM2M_RCP4p5_WM - - [HDDCDD.csv](/inputs/climate/GFDL-ESM2M_RCP4p5_WM/HDDCDD.csv) ---- - - [hydadjann.csv](/inputs/climate/GFDL-ESM2M_RCP4p5_WM/hydadjann.csv) - **Description:** Climate-impact capacity factor multipliers for annual dispatchable hydropower for the GFDL-ESM2M_RCP4p5_WM climate scenario - **Indices:** r,t @@ -873,9 +864,6 @@ ##### inputs/climate/HadGEM2-ES_RCP2p6 - - [HDDCDD.csv](/inputs/climate/HadGEM2-ES_RCP2p6/HDDCDD.csv) ---- - - [UnappWaterMult.csv](/inputs/climate/HadGEM2-ES_RCP2p6/UnappWaterMult.csv) - **Description:** Climate-impact water availability multipliers for annual/monthly unappropriated fresh surface water for the HadGEM2-ES_RCP2p6 climate scenario - **Indices:** wst,r,month,t @@ -901,9 +889,6 @@ ##### inputs/climate/HadGEM2-ES_rcp45_AT - - [HDDCDD.csv](/inputs/climate/HadGEM2-ES_rcp45_AT/HDDCDD.csv) ---- - - [hydadjann.csv](/inputs/climate/HadGEM2-ES_rcp45_AT/hydadjann.csv) - **Description:** Climate-impact capacity factor multipliers for annual dispatchable hydropower for the HadGEM2-ES_rcp45_AT climate scenario - **Indices:** r,t @@ -943,9 +928,6 @@ ##### inputs/climate/HadGEM2-ES_RCP4p5 - - [HDDCDD.csv](/inputs/climate/HadGEM2-ES_RCP4p5/HDDCDD.csv) ---- - - [UnappWaterMult.csv](/inputs/climate/HadGEM2-ES_RCP4p5/UnappWaterMult.csv) - **Description:** Climate-impact water availability multipliers for annual/monthly unappropriated fresh surface water for the HadGEM2-ES_RCP4p5 climate scenario - **Indices:** wst,r,month,t @@ -971,9 +953,6 @@ ##### inputs/climate/HadGEM2-ES_rcp85_AT - - [HDDCDD.csv](/inputs/climate/HadGEM2-ES_rcp85_AT/HDDCDD.csv) ---- - - [hydadjann.csv](/inputs/climate/HadGEM2-ES_rcp85_AT/hydadjann.csv) - **Description:** Climate-impact capacity factor multipliers for annual dispatchable hydropower for the HadGEM2-ES_rcp85_AT climate scenario - **Indices:** r,t @@ -1013,9 +992,6 @@ ##### inputs/climate/HadGEM2-ES_RCP8p5 - - [HDDCDD.csv](/inputs/climate/HadGEM2-ES_RCP8p5/HDDCDD.csv) ---- - - [UnappWaterMult.csv](/inputs/climate/HadGEM2-ES_RCP8p5/UnappWaterMult.csv) - **Description:** Climate-impact water availability multipliers for annual/monthly unappropriated fresh surface water for the HadGEM2-ES_RCP8p5 climate scenario - **Indices:** wst,r,month,t @@ -1041,9 +1017,6 @@ ##### inputs/climate/IPSL-CM5A-LR_RCP8p5_WM - - [HDDCDD.csv](/inputs/climate/IPSL-CM5A-LR_RCP8p5_WM/HDDCDD.csv) ---- - - [hydadjann.csv](/inputs/climate/IPSL-CM5A-LR_RCP8p5_WM/hydadjann.csv) - **Description:** Climate-impact capacity factor multipliers for annual dispatchable hydropower for the IPSL-CM5A-LR_RCP8p5_WM climate scenario - **Indices:** r,t @@ -1204,7 +1177,7 @@ - [dr_shed_avail_scalar.csv](/inputs/demand_response/dr_shed_avail_scalar.csv) --- - - [dr_shed_capacity_scalar_demo_data_IEF_January_2025.csv](/inputs/demand_response/dr_shed_capacity_scalar_demo_data_IEF_January_2025.csv) + - [dr_shed_capacity_scalar_demo_data_January_2025.csv](/inputs/demand_response/dr_shed_capacity_scalar_demo_data_January_2025.csv) --- - [dr_shed_hourly.h5](/inputs/demand_response/dr_shed_hourly.h5) @@ -2925,12 +2898,13 @@ - [cap_existing_psh.csv](/inputs/storage/cap_existing_psh.csv) - **Description:** County-wide PSH operational capacity, pump capacity, and max energy, based on plant-level data from https://www.hydropower.org/hydropower-pumped-storage-tool - **Units:** MW/MWh + --- - [PSH_supply_curves_durations.csv](/inputs/storage/PSH_supply_curves_durations.csv) --- - - [storinmaxfrac.csv](/inputs/storage/storinmaxfrac.csv) + - [storage_duration.csv](/inputs/storage/storage_duration.csv) --- @@ -3339,34 +3313,6 @@ - **Indices:** r,rr --- - - [transmission_capacity_init_AC_ba_NARIS2024.csv](/inputs/transmission/transmission_capacity_init_AC_ba_NARIS2024.csv) - - **Description:** Initial AC transmission capacity from the NARIS 2024 system at the BA resolution - 'NARIS2024' is a better starting point for future-oriented studies, but it becomes increasingly inaccurate for years earlier than 2024 ---- - - - [transmission_capacity_init_AC_ba_REFS2009.csv](/inputs/transmission/transmission_capacity_init_AC_ba_REFS2009.csv) - - **Description:** Initial AC transmission capacity from the 2009 transmission system for ReEDS at the BA resolution - 'REFS2009' does not include direction-dependent capacities or differentiated capacities for energy and PRM trading but it better represents historical additions between 2010-2024 ---- - - - [transmission_capacity_init_AC_county_NARIS2024.csv](/inputs/transmission/transmission_capacity_init_AC_county_NARIS2024.csv) - - **Description:** Initial AC transmission capacity modified from the NARIS 2024 file to eliminate most supply (with county transmission) demand mismatches for the 2024 solve year ---- - - - [transmission_capacity_init_AC_county_NARIS2024_base.csv](/inputs/transmission/transmission_capacity_init_AC_county_NARIS2024_base.csv) - - **Description:** Initial AC transmission capacity from the NARIS 2024 system at the county resolution ---- - - - [transmission_capacity_init_AC_transgrp_NARIS2024.csv](/inputs/transmission/transmission_capacity_init_AC_transgrp_NARIS2024.csv) - - **Description:** Initial AC transmission capacity from the NARIS 2024 system at the transgrp resolution ---- - - - [transmission_capacity_init_nonAC_ba.csv](/inputs/transmission/transmission_capacity_init_nonAC_ba.csv) - - **Description:** Initial non-AC transmission capacity at the BA resolution ---- - - - [transmission_capacity_init_nonAC_county.csv](/inputs/transmission/transmission_capacity_init_nonAC_county.csv) - - **Description:** Initial non-AC transmission capacity at the county resolution ---- - - [transmission_cost_ac_500kv_ba.h5](/inputs/transmission/transmission_cost_ac_500kv_ba.h5) - **Description:** Transmission costs for new 500 kV AC at BA resolution --- @@ -3536,6 +3482,13 @@ --- + +#### inputs/zones + + - [hierarchy_offshore.csv](/inputs/zones/hierarchy_offshore.csv) +--- + + ### postprocessing @@ -3763,12 +3716,15 @@ ##### postprocessing/retail_rate_module/inputs - [Electric O & M Expenses-IOU-1993-2019.csv](/postprocessing/retail_rate_module/inputs/Electric%20O%20&%20M%20Expenses-IOU-1993-2019.csv) + - **Description:** values taken from FERC Form 1 -- see https://docs.nlr.gov/docs/fy22osti/78224.pdf sections 2.2.2 and 2.2.3 --- - [Electric Operating Revenues-IOU-1993-2019.csv](/postprocessing/retail_rate_module/inputs/Electric%20Operating%20Revenues-IOU-1993-2019.csv) + - **Description:** values taken from FERC Form 1 -- see https://docs.nlr.gov/docs/fy22osti/78224.pdf sections 2.2.2 and 2.2.3 --- - [Electric Plant in Service-IOU-1993-2019.csv](/postprocessing/retail_rate_module/inputs/Electric%20Plant%20in%20Service-IOU-1993-2019.csv) + - **Description:** values taken from FERC Form 1 -- see https://docs.nlr.gov/docs/fy22osti/78224.pdf sections 2.2.2 and 2.2.3 --- - [f861_cust_counts.csv](/postprocessing/retail_rate_module/inputs/f861_cust_counts.csv) @@ -3975,7 +3931,6 @@ - **File Type:** Switches file - **Description:** Contains the configuration settings for the ReEDS run(s). - **Dollar year:** 2004 - - **Citation:** [https://github.nrel.gov/ReEDS/ReEDS-2.0/blob/38e6610a8c6a92291804598c95c11b707bf187b9/cases.csv](https://github.nrel.gov/ReEDS/ReEDS-2.0/blob/38e6610a8c6a92291804598c95c11b707bf187b9/cases.csv) --- - [cases_examples.csv](/cases_examples.csv) @@ -4005,3 +3960,4 @@ - [sources.csv](/sources.csv) - **Description:** CSV file containing a list of all input files (csv, h5, csv.gz) --- +