Skip to main content

ENergy Platform — Automated eXpenditures

Project description

ENPAX

PyPI version PyPI - Python Version License

ENPAX (ENergy Platform — Automated eXpenditures) is an open-source Python library that provides modular, bottom-up capital and operating expenditure (CAPEX/OPEX) models for energy technologies. Cost estimates are derived using system design, characteristics, site specific details, power system considerations and infrastructure assumptions.

Software Requirements

  • Python 3.10+

Installing ENPAX

PyPI

pip install enpax

Source Installation

  1. Using Git, navigate to a local target directory and clone the repository:

    git clone https://github.com/NatLabRockies/ENPAX.git
    
  2. Navigate to ENPAX:

    cd ENPAX
    
  3. Create a new virtual environment and activate it. Using Conda and naming it enpax:

    conda create --name enpax python=3.11 -y
    conda activate enpax
    
  4. Install ENPAX and its dependencies:

    • To use ENPAX only:
      pip install .
      
    • To install in editable mode with development dependencies:
      pip install -e ".[develop]"
      
    • To install with example/notebook dependencies:
      pip install -e ".[examples]"
      
    • To install all optional dependencies at once:
      pip install -e ".[all]"
      

Usage

ENPAX models can be configured and run either via YAML config files or Python dictionaries. Example notebooks are provided in the examples/ directory:

  • examples_using_yaml_config_files.ipynb — configure and run models using .yaml files from the configs/ directory
  • examples_using_dictionaries.ipynb — configure and run models programmatically in Python

Quick Start

from enpax.runner import CentralRunner
 
runner = CentralRunner(config="configs/solar_bess.yaml")
results = runner.run()
print(results)

Available Models

The library is structured around a shared abstract base class (BaseCostModel) that enforces a consistent interface — run_capex(), run_opex(), and run_design() — across all technology models, and a central runner (CentralRunner) that assembles multi-technology systems from YAML configuration files and returns structured output objects (TechResult, SystemResult). The current release includes two fully detailed technology models as well as the ability for a user to define their own technology cost model, both applicable for CAPEX and O&M cost estimations.

Model Description
solar_bess_2024Q1 Solar PV + BESS hybrid CAPEX/OPEX model
bess_2025 Standalone battery energy storage CAPEX/OPEX model
generic_passthrough Generic passthrough model for custom CAPEX/OPEX inputs

Release Notes

  1. Ensure all tests pass.
  2. Ensure this README is up to date.
  3. Ensure dependency and Python versions are current.
  4. Ensure CHANGELOG.md is up to date.
  5. Bump the version in pyproject.toml using semantic versioning (https://semver.org/).
  6. Make a pull request into main from develop or a patch release branch.
    1. Merge main back into develop if develop was not the base branch.
  7. Tag the new release and push it:
    git tag -a v0.1.0 -m "message for v0.1.0"
    git push origin v0.1.0
    
    1. This will trigger the Deploy to Test PyPI GitHub Action. If it passes, proceed to step 8. If it fails, continue below.
    2. Delete the tag locally and on remote:
      git tag -d v0.1.0
      git push --delete origin v0.1.0
      
    3. Create a new branch off main, fix the build issue, and return to step 5.
  8. Create a new release at https://github.com/NatLabRockies/ENPAX/releases, ensuring that:
    1. The newly created tag is selected, and
    2. Generate release notes is selected. This will trigger the Deploy to PyPI GitHub Action.

Contributing

Contributions are welcome. Please open an issue or submit a pull request against the develop branch.

Authors

License

This project is licensed under the BSD 3-Clause License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

enpax-0.1.0.tar.gz (28.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

enpax-0.1.0-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file enpax-0.1.0.tar.gz.

File metadata

  • Download URL: enpax-0.1.0.tar.gz
  • Upload date:
  • Size: 28.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for enpax-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b6fe5e0b287686291f553bf5b8ab9f4e67387f89d49e3a09c151732f5d141df8
MD5 ad179a454234ab5636764adf561bcff4
BLAKE2b-256 b6f4f883639fe25257359fb95b9fd2f45a07fd6fef76b996c4ad18a4ea64e43b

See more details on using hashes here.

File details

Details for the file enpax-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: enpax-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 27.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for enpax-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ce515a9368bac9f5c2c106befa2144dfb3dd2bf66abb8b17d693e5df719d2716
MD5 d57f674f11132a649f0c2374d0508b24
BLAKE2b-256 8f883eca19c0b31e688f9f302b9b19e6d9f1fec234908863734d8c745f25e252

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page