Skip to main content

Tools for Energy Model Optimization and Analysis

Project description

TEMOA

PyPI CI codecov pre-commit.ci status Documentation Status Python 3.12+ License: MIT Type Checked with mypy Ruff uv

Overview

TEMOA (Tools for Energy Model Optimization and Analysis) is a sophisticated energy systems optimization framework that supports various modeling approaches including perfect foresight, myopic planning, uncertainty analysis, and alternative generation.

Quick Start

Standard Installation

# Install from PyPI in a virtual environment
python -m venv .venv

# Activate virtual environment
# On Linux/Mac:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate

# Install temoa
pip install temoa

Get Started in 30 Seconds

In a virtual env with temoa installed, run:

# Create tutorial files in the current directory
# Creates tutorial_config.toml and tutorial_database.sqlite
temoa tutorial

# Run the model
temoa run tutorial_config.toml

Package Structure

The Temoa package is organized into clear modules:

  • temoa.core - Public API for end users (TemoaModel, TemoaConfig, TemoaMode)
  • temoa.cli - Command-line interface and utilities
  • temoa.components - Model components and constraints
  • temoa.data_io - Data loading and validation
  • temoa.extensions - Optional extensions for different modeling approaches
    • modeling_to_generate_alternatives - MGA analysis
    • method_of_morris - Sensitivity analysis
    • monte_carlo - Uncertainty quantification
    • myopic - Sequential decision making
  • temoa.model_checking - Model validation and integrity checking
  • temoa.data_processing - Output analysis and visualization
  • temoa.utilities - Helper scripts and migration tools

Installation & Setup

Development Installation

For users who want to contribute to or modify Temoa should install in development mode using uv:

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone repository
git clone https://github.com/TemoaProject/temoa.git
cd temoa

# Setup development environment with uv
uv sync --all-extras --dev

# Install pre-commit hooks
uv run pre-commit install

# Run tests
uv run pytest

# Run type checking
uv run mypy

Command Line Interface

Temoa provides a modern, user-friendly CLI built with Typer:

Basic Commands

Run a model:

temoa run tutorial_config.toml
temoa run tutorial_config.toml --output results/
temoa run tutorial_config.toml --build-only  # Build without solving

Validate configuration:

temoa validate tutorial_config.toml
temoa validate tutorial_config.toml --debug

Database migration:

temoa migrate old_database.sql --output new_database.sql
temoa migrate old_database.db --type db
temoa migrate old_database.sqlite --output migrated_v4.sqlite

Generate tutorial files:

temoa tutorial                    # Creates tutorial_config.toml and tutorial_database.sqlite
temoa tutorial my_model my_db     # Custom names

Global Options

temoa --version                   # Show version information
temoa --how-to-cite              # Show citation information
temoa --help                     # Full help

Using with uv

When working with the source code, use uv run to ensure you're using the correct dependencies:

uv run temoa run tutorial_config.toml      # Run with project dependencies
uv run temoa validate tutorial_config.toml # Validate configuration
uv run temoa tutorial             # Create tutorial files

Programmatic Usage

You can use Temoa as a Python library:

import temoa
from pathlib import Path
from temoa import TemoaModel, TemoaConfig, TemoaMode

# Create configuration
config = TemoaConfig(
    scenario="my_scenario",
    scenario_mode=TemoaMode.PERFECT_FORESIGHT,
    input_database=Path("path/to/input.db"),
    output_database=Path("path/to/output.db"),
    output_path=Path("path/to/output"),
    solver_name="appsi_highs"
)

# Build and solve model
model = TemoaModel(config)
result = model.run()  # Equivalent to: temoa run tutorial_config.toml

# Check if run was successful
if result:
    print("Model solved successfully!")
else:
    print("Model failed to solve")

Database Setup

Quick Setup with Tutorial

The fastest way to get started:

temoa tutorial

This creates:

  • tutorial_config.toml - Configuration file with example settings
  • tutorial_database.sqlite - Sample database for learning

Migration from older versions:

# Migrate from v3.1 to v4
temoa migrate old_database_v3.1.sql --output new_database_v4.sql

# or for SQLite databases
temoa migrate old_database_v4.sqlite --output new_database_v4.sqlite

Configuration Files

A configuration file is required to run the model. The tutorial command creates a complete example:

scenario = "tutorial"
scenario_mode = "perfect_foresight"
input_database = "tutorial_database.sqlite"
output_database = "tutorial_database.sqlite"
solver_name = "appsi_highs"

Configuration Options

Field Notes
Scenario Name Name used in output tables (cannot contain '-' symbol)
Temoa Mode Execution mode (PERFECT_FORESIGHT, MYOPIC, MGA, etc.)
Input/Output DB Source and output database paths
Price Checking Run pricing analysis on built model
Source Tracing Verify commodity flow network integrity
Plot Network Generate HTML network visualizations
Solver Solver executable name (appsi_highs, cbc, gurobi, cplex, etc.)
Save Excel Export core output to Excel files
Save LP Save LP model files for external solving

Supported Modes

Perfect Foresight

Solves the entire model at once. Most common mode for optimization.

Myopic

Sequential solving through iterative builds. Required for stepwise decision analysis.

MGA (Modeling to Generate Alternatives)

Explores near cost-optimal solutions for robustness analysis.

SVMGA (Single Vector MGA)

Two-solve process focusing on specific variables in the objective.

Method of Morris

Limited sensitivity analysis of user-selected variables.

Build Only

Builds model without solving. Useful for validation and troubleshooting.

Typical Workflow

  1. Setup: Create configuration and database files:

    temoa tutorial
    
  2. Configure: Edit the configuration file to match your scenario

  3. Validate: Check configuration before running:

    temoa validate tutorial_config.toml
    
  4. Run: Execute the model:

    temoa run tutorial_config.toml
    
  5. Review: Check results in output_files/YYYY-MM-DD_HHMMSS/

  6. Iterate: Modify configuration and run again

Advanced Features

Extensions

Temoa includes optional extensions for advanced analysis:

  • Monte Carlo: Uncertainty quantification
  • Stochastic Programming: Scenario-based optimization
  • Method of Morris: Sensitivity analysis

Data Processing

  • Excel output generation
  • Graphviz network visualization
  • Interactive network diagrams

Model Validation

  • Built-in validation checks
  • Commodity flow verification
  • Price consistency analysis

Solver Dependencies

TEMOA requires at least one optimization solver:

  • Free: HiGHS

    • Included via the highspy Python package (automatically installed with Temoa)
    • Default solver for tutorial and testing
  • Free: CBC

    • Requires separate installation (see CBC documentation)
    • Alternative free solver option
  • Commercial: Gurobi, CPLEX, or Xpress

    • Requires separate license and installation
    • See individual solver documentation

Troubleshooting

Solver Issues

If you encounter solver errors:

# For commercial solvers (Gurobi, CPLEX)
pip install ".[solver]"  # Include specific solver packages

# For free solver
temoa run tutorial_config.toml --debug  # Get detailed error information

Documentation & Support

  • Full Documentation: Built by following docs/README.md
  • API Reference: See temoa.core module for public API
  • GitHub Issues: Report bugs and request features
  • Tutorials: Run temoa tutorial for guided examples

Code Style & Quality

For contributors:

  • Ruff: Code formatting and linting
  • mypy: Type checking
  • pytest: Testing framework
  • Pre-commit: Automated quality checks

See CONTRIBUTING.md for detailed development guidelines.

Citation

If you use Temoa in your research, please cite:

@article{hunter2013modeling,
  title={Modeling for insight using Tools for Energy Model Optimization and Analysis (Temoa)},
  journal={Energy Economics},
  volume={40},
  pages={339--349},
  year={2013},
  doi={10.1016/j.eneco.2013.07.014}
}

Or use: temoa --how-to-cite

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

temoa-4.0.0rc1.tar.gz (4.9 MB view details)

Uploaded Source

Built Distribution

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

temoa-4.0.0rc1-py3-none-any.whl (474.4 kB view details)

Uploaded Python 3

File details

Details for the file temoa-4.0.0rc1.tar.gz.

File metadata

  • Download URL: temoa-4.0.0rc1.tar.gz
  • Upload date:
  • Size: 4.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for temoa-4.0.0rc1.tar.gz
Algorithm Hash digest
SHA256 baa7bb88c8c5f968b4ab52a657c19f3312fce1a1912fac1677439658c8be9250
MD5 8e7ab7fe2ed24a742cf9a87f68b7ffb5
BLAKE2b-256 aed8483a929d9ea8a469f857ac6195f8f67094bd68e7a548f8569649925f6e1d

See more details on using hashes here.

File details

Details for the file temoa-4.0.0rc1-py3-none-any.whl.

File metadata

  • Download URL: temoa-4.0.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 474.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for temoa-4.0.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 38062594a4fb634b62bb5f09ec6b120d9cb19d15e9f9123c4f45babb6332baef
MD5 f426936eae09183af56f656ad86eebfe
BLAKE2b-256 a4887dc620533f1349318fd3c1aa5b7fc2ace2dadbbb26dca411477fc02514f6

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