OpenPH - Open-source Passive House energy modeling and calculation engine
Project description
OpenPH
Core PHPP data models and table view generation
Part of the openph UV workspace - a Python implementation of Passive House Planning Package (PHPP) calculations with exact numerical fidelity to Excel PHPP.
Purpose
OpenPH provides:
- Data Models: Python classes representing PHPP building components (areas, constructions, rooms, climate, HVAC systems)
- Table Rendering: Generate formatted output tables (.txt, .html) matching PHPP worksheet layouts for validation
- Plugin Architecture: Extensible table system with auto-discovery via entry points
- HBJSON Import: Convert Honeybee-PH JSON models to OpenPH data structures
Structure
openph/
├── src/
│ └── openph/ # Main package module
│ ├── model/ # PHPP data classes
│ ├── to_table/ # Table rendering system (plugin-based)
│ ├── from_HBJSON/# Honeybee-PH JSON import
│ └── phpp.py # Main PHPP container class
├── tests/
└── pyproject.toml
Usage
Basic Model Creation
from openph.phpp import OpPhPHPP
# Create PHPP model
phpp = OpPhPHPP()
# Access model components
phpp.climate
phpp.areas
phpp.rooms
phpp.hvac
Table Rendering (Single Tables)
from openph.to_table import TableDisplayManager, TableNames
# Initialize table display manager
display = TableDisplayManager(phpp)
# Render individual tables
climate_table = display.get_table(TableNames.CLIMATE_ANNUAL)
climate_table.render(format="console")
climate_table.render(format="html", output_path="climate.html")
Table Grouping (Recommended)
Group related tables and render to a single file:
from openph.to_table import TableDisplayManager, TableNames
display = TableDisplayManager(phpp)
# Create logical groups
climate_group = display.create_group([
TableNames.CLIMATE_ANNUAL,
TableNames.CLIMATE_PEAK_LOAD,
TableNames.CLIMATE_RADIATION_FACTORS,
])
# Render entire group to one file
climate_group.render(format="html", output_path="./climate_report.html")
climate_group.render(format="txt", output_path="./climate_report.txt")
Available Core Tables
Climate: CLIMATE_ANNUAL, CLIMATE_PEAK_LOAD, CLIMATE_RADIATION_FACTORS
Areas: AREAS_SUMMARY, AREAS_OPAQUE_SURFACE_*, AREAS_APERTURE_*, AREAS_SOLAR_REDUCTION_*
Rooms: ROOMS_VENTILATION_PROPERTIES, ROOMS_VENTILATION_SCHEDULE
Ventilation: VENTILATION_DUCT_INPUTS, VENTILATION_DUCT_RESULTS, VENTILATION_DUCT_*
See TableNames class for complete list.
Development
Part of UV workspace - see root context/ENVIRONMENT.md:
uv sync # Install all workspace packages
uv run pytest openph/tests/ # Run tests
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 openph-0.2.0.tar.gz.
File metadata
- Download URL: openph-0.2.0.tar.gz
- Upload date:
- Size: 82.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61228c822ae330ef501f08e4637ca71cd79702c1734ad6e62c3bb44006c5ba39
|
|
| MD5 |
d76d8b334677ed7ece5b7e71d939a462
|
|
| BLAKE2b-256 |
36525b20b3b58e2a7ed3e72e6113de76b30426d8815c433dd4006b12c592be9d
|
Provenance
The following attestation bundles were made for openph-0.2.0.tar.gz:
Publisher:
publish.yml on Open-PH/openph
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openph-0.2.0.tar.gz -
Subject digest:
61228c822ae330ef501f08e4637ca71cd79702c1734ad6e62c3bb44006c5ba39 - Sigstore transparency entry: 656604299
- Sigstore integration time:
-
Permalink:
Open-PH/openph@658ff40ebc16c64f61e3de984d6d90eb572e1a6d -
Branch / Tag:
refs/tags/v0.2.00 - Owner: https://github.com/Open-PH
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@658ff40ebc16c64f61e3de984d6d90eb572e1a6d -
Trigger Event:
release
-
Statement type:
File details
Details for the file openph-0.2.0-py3-none-any.whl.
File metadata
- Download URL: openph-0.2.0-py3-none-any.whl
- Upload date:
- Size: 89.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
652d0aa6e1facf2f3e6320a068d917decf344d9d7770c78399d9f113376e105c
|
|
| MD5 |
6c1714cfa3a2da13aa155883437c4f31
|
|
| BLAKE2b-256 |
5ee7f41525e4092ac031b8ba32afa683d80067d14853719b880c153112cdc803
|
Provenance
The following attestation bundles were made for openph-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on Open-PH/openph
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openph-0.2.0-py3-none-any.whl -
Subject digest:
652d0aa6e1facf2f3e6320a068d917decf344d9d7770c78399d9f113376e105c - Sigstore transparency entry: 656604306
- Sigstore integration time:
-
Permalink:
Open-PH/openph@658ff40ebc16c64f61e3de984d6d90eb572e1a6d -
Branch / Tag:
refs/tags/v0.2.00 - Owner: https://github.com/Open-PH
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@658ff40ebc16c64f61e3de984d6d90eb572e1a6d -
Trigger Event:
release
-
Statement type: