ENergy Platform — Automated eXpenditures
Project description
ENPAX
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
-
Using Git, navigate to a local target directory and clone the repository:
git clone https://github.com/NatLabRockies/ENPAX.git
-
Navigate to
ENPAX:cd ENPAX
-
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
-
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]"
- To use ENPAX only:
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.yamlfiles from theconfigs/directoryexamples_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
- Ensure all tests pass.
- Ensure this README is up to date.
- Ensure dependency and Python versions are current.
- Ensure
CHANGELOG.mdis up to date. - Bump the version in
pyproject.tomlusing semantic versioning (https://semver.org/). - Make a pull request into
mainfromdevelopor a patch release branch.- Merge
mainback intodevelopifdevelopwas not the base branch.
- Merge
- 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
- This will trigger the Deploy to Test PyPI GitHub Action. If it passes, proceed to step 8. If it fails, continue below.
- Delete the tag locally and on remote:
git tag -d v0.1.0 git push --delete origin v0.1.0
- Create a new branch off
main, fix the build issue, and return to step 5.
- Create a new release at https://github.com/NatLabRockies/ENPAX/releases, ensuring that:
- The newly created tag is selected, and
- 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
- Daniel Mulas Hernando — National Laboratory of the Rockies
- Kaitlin Brunik — National Laboratory of the Rockies
- Elenya Grant — National Laboratory of the Rockies
License
This project is licensed under the BSD 3-Clause License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6fe5e0b287686291f553bf5b8ab9f4e67387f89d49e3a09c151732f5d141df8
|
|
| MD5 |
ad179a454234ab5636764adf561bcff4
|
|
| BLAKE2b-256 |
b6f4f883639fe25257359fb95b9fd2f45a07fd6fef76b996c4ad18a4ea64e43b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce515a9368bac9f5c2c106befa2144dfb3dd2bf66abb8b17d693e5df719d2716
|
|
| MD5 |
d57f674f11132a649f0c2374d0508b24
|
|
| BLAKE2b-256 |
8f883eca19c0b31e688f9f302b9b19e6d9f1fec234908863734d8c745f25e252
|