idfkit¶
A fast, modern EnergyPlus IDF/epJSON toolkit for Python — with O(1) lookups, automatic reference tracking, and built-in simulation support.
O(1) lookups Reference tracking IDF + epJSON Schema validation 3-D geometry Simulation Weather data v8.9 -- v25.2
Quick Example¶
from idfkit import load_idf, write_idf
# Load an existing IDF file
doc = load_idf("in.idf")
# Query objects with O(1) lookups
zone = doc["Zone"]["Office"]
print(zone.x_origin, zone.y_origin)
# Modify a field
zone.x_origin = 10.0
# See what references the zone
for obj in doc.get_referencing("Office"):
print(obj.obj_type, obj.name)
# Write back to IDF (or epJSON)
write_idf(doc, "out.idf")
Run Simulations¶
from idfkit.simulation import simulate
result = simulate(doc, "weather.epw", design_day=True)
# Query results
ts = result.sql.get_timeseries(
variable_name="Zone Mean Air Temperature",
key_value="Office",
)
print(f"Max temp: {max(ts.values):.1f}")
Find Weather Stations¶
from idfkit.weather import StationIndex, geocode
index = StationIndex.load()
results = index.nearest(*geocode("Chicago, IL"))
print(results[0].station.display_name)
Explore the Docs¶
-
Get Started
Installation, quick start guide, and interactive tutorial.
-
Concepts
Architecture decisions, caching strategy, and design principles.
-
Simulation
Run EnergyPlus, parse results, batch processing, and caching.
-
Weather
Station search, downloads, design days, and geocoding.
-
Examples
Parametric studies, sizing workflows, and cloud simulations.
-
API Reference
Complete API documentation for all modules.
More Resources¶
| Page | Description |
|---|---|
| Core Tutorial | Interactive notebook covering basic, advanced, and expert usage |
| Migrating from eppy | Side-by-side comparison of eppy and idfkit APIs |
| Benchmarks | Performance comparison against eppy and other tools |
| Troubleshooting | Common errors and solutions |