Skip to main content

Cross-platform Python bindings for Helios 3D plant simulation

Project description



Build Wheels Test Linux Test Windows Test MacOS PyPI version

Getting Started {#GettingStarted}

Cross-platform Python bindings for Helios 3D plant simulation library.

PyHelios provides a Python interface to the powerful Helios C++ library for 3D physical simulation of plant and environmental systems. It enables plant modeling, geometry manipulation, and biophysical simulations including GPU-accelerated radiation transfer, photosynthesis, and plant architecture modeling.

📖 Complete Documentation

⚠️Note that this is a work in progress. Not all Helios functionality has been implemented in PyHelios ⚠️

⚠️Help make PyHelios better by reporting issues: https://github.com/PlantSimulationLab/PyHelios/issues ⚠️

See the Helios C++ documentation for a more in-depth description of Helios: https://baileylab.ucdavis.edu/software/helios

Quick Start

Installation

Requirements: Python 3.10 or later (pre-built wheels available for Python 3.10–3.14)

Easy Install (Recommended):

pip install pyhelios3d

This installs pre-built PyHelios with platform-appropriate plugins:

  • macOS (Apple Silicon): All plugins including radiation via Vulkan backend
  • macOS (Intel): Pre-built wheels not available - please build from source
  • Windows/Linux: All plugins with GPU acceleration via OptiX backend (NVIDIA GPUs)

PyHelios automatically selects the best execution mode:

  • Plugins with GPU backends (radiation): Require GPU - Vulkan (all platforms) or OptiX (NVIDIA)
  • Plugins with CPU/GPU modes (energybalance): Work on all platforms, GPU acceleration optional
  • CPU-only plugins: Work on all platforms without special hardware

Note for Intel Mac Users: Due to GitHub Actions infrastructure limitations, pre-built wheels are only available for Apple Silicon Macs. Intel Mac users must build PyHelios from source following the macOS build instructions below.

Build from Source {#build-from-source}

If you need to customize plugins or build from source:

Windows {#windows}

Prerequisites:

  • Visual Studio 2019+ or Build Tools for Visual Studio
  • Python 3.10+
# Clone repository
git clone --recursive https://github.com/PlantSimulationLab/PyHelios.git
cd PyHelios/

# Build native libraries (optional - pre-built binaries included)
./build_scripts/build_helios

# Install PyHelios dependencies
pip install -e .

macOS {#macos}

Prerequisites:

  • Xcode command line tools
  • Python 3.10+
# Install Xcode command line tools
xcode-select --install

# Clone repository
git clone --recursive https://github.com/PlantSimulationLab/PyHelios.git
cd PyHelios/

# Install c++ dependencies and build native libraries
source helios-core/utilities/dependencies.sh
./build_scripts/build_helios

# Install PyHelios dependencies
pip install -e .

Linux (Ubuntu/Debian) {#linux}

Prerequisites:

  • Build essentials
  • CMake
  • Python 3.10+
# Clone repository
git clone --recursive https://github.com/PlantSimulationLab/PyHelios.git
cd PyHelios/

# Install c++ dependencies and build native libraries
source helios-core/utilities/dependencies.sh
./build_scripts/build_helios

# Install PyHelios dependencies
pip install -e .

GPU Features Setup (Optional)

PyHelios plugins have three types of GPU support:

GPU-Required Plugins:

  • Radiation Model: GPU-accelerated ray tracing via Vulkan (all GPUs) or OptiX (NVIDIA)
  • Aerial LiDAR: GPU-accelerated LiDAR simulation (CUDA)

GPU-Optional Plugins (work with or without GPU):

  • Energy Balance (v1.3.61+): Automatic mode selection - GPU (CUDA) → OpenMP (parallel CPU) → Serial CPU
    • CPU mode recommended for most workloads without GPU

CPU-Only Plugins (no GPU needed):

  • All other plugins (PlantArchitecture, Photosynthesis, SolarPosition, etc.)

For GPU Acceleration (optional), ensure you have at least one:

  • Vulkan loader library (macOS/Linux only; no extra packages on Windows)
  • OR for NVIDIA-optimized path: CUDA 12.0+ with driver >= 560 (OptiX 8.1) or CUDA 9.0+ with driver < 560 (OptiX 6.5)

The radiation plugin auto-detects the best available backend at runtime (OptiX 8 -> OptiX 6 -> Vulkan).

Verification:

vulkaninfo  # Should show Vulkan device information
# OR for NVIDIA:
nvidia-smi  # Should show GPU information

Testing GPU Features:

from pyhelios import Context, RadiationModel, EnergyBalanceModel

context = Context()

# Test GPU-required plugin (radiation)
try:
    radiation = RadiationModel(context)
    print("GPU radiation modeling available!")
except RuntimeError as e:
    print(f"Radiation requires GPU: {e}")

# Test GPU-optional plugin (energybalance)
with EnergyBalanceModel(context) as energy:
    if energy.isGPUAccelerationEnabled():
        print("EnergyBalance using GPU acceleration")
    else:
        print("EnergyBalance using CPU mode (OpenMP or serial)")

First Example

from pyhelios import Context
from pyhelios.types import *

# Create simulation context
context = Context()

# Add a patch primitive
center = vec3(2, 3, 4)
size = vec2(1, 1)
color = RGBcolor(0.25, 0.25, 0.25)
patch_uuid = context.addPatch(center=center, size=size, color=color)

print(f"Created patch: {patch_uuid}")

Documentation

Section Description
Getting Started Installation, setup, and first steps
User Guide Core concepts, API reference, and examples
Cross-Platform Platform-specific usage and deployment
Plugin System Available plugins and configuration

Key Features

  • Cross-platform: Windows, macOS, and Linux support
  • Plant modeling: 20+ plant species models in the plant architecture plug-in
  • GPU acceleration: Radiation simulation via Vulkan or OptiX backends
  • 3D visualization: OpenGL-based real-time rendering

Updating PyHelios

PyPI Installation

If you installed via pip, simply upgrade to the latest version:

pip install --upgrade pyhelios3d

Source Installation

If you built PyHelios from source, update with the latest changes:

# Update main repository and submodules recursively
git pull --recurse-submodules

# Alternative: Update main repo first, then submodules
git pull
git submodule update --init --recursive

# Rebuild native libraries after updates (recommended)
./build_scripts/build_helios --clean

# Reinstall PyHelios
pip install -e .

Important: Always use --recurse-submodules or manually update submodules when pulling updates, as PyHelios depends on the helios-core submodule for C++ functionality.

Quick Commands

# Test installation (uses subprocess isolation for robust testing)
pytest

# Check plugin status  
python -m pyhelios.plugins status

# Interactive plugin selection
./build_scripts/build_helios --interactive

Support


Note: This project is in active development. The API may change quickly - see docs/CHANGELOG.md for updates.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

pyhelios3d-0.1.18-cp314-cp314-win_amd64.whl (52.3 MB view details)

Uploaded CPython 3.14Windows x86-64

pyhelios3d-0.1.18-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.18-cp314-cp314-macosx_14_0_arm64.whl (61.9 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

pyhelios3d-0.1.18-cp313-cp313-win_amd64.whl (52.0 MB view details)

Uploaded CPython 3.13Windows x86-64

pyhelios3d-0.1.18-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.18-cp313-cp313-macosx_14_0_arm64.whl (61.9 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

pyhelios3d-0.1.18-cp312-cp312-win_amd64.whl (52.0 MB view details)

Uploaded CPython 3.12Windows x86-64

pyhelios3d-0.1.18-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.18-cp312-cp312-macosx_14_0_arm64.whl (61.9 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

pyhelios3d-0.1.18-cp311-cp311-win_amd64.whl (52.0 MB view details)

Uploaded CPython 3.11Windows x86-64

pyhelios3d-0.1.18-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.18-cp311-cp311-macosx_14_0_arm64.whl (61.9 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

pyhelios3d-0.1.18-cp310-cp310-win_amd64.whl (52.0 MB view details)

Uploaded CPython 3.10Windows x86-64

pyhelios3d-0.1.18-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.18-cp310-cp310-macosx_14_0_arm64.whl (61.9 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file pyhelios3d-0.1.18-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 446122a7f8dd8a449ca43e46a7ccddd46c5c6af3e3ce6604ab0249e718011dba
MD5 eeba0d17c2b4f4a0dd9bec2504f5bc99
BLAKE2b-256 df2154e0a8b3771a2b9f9bbe21b6df07361d30c506b73b82fcfaa10762a6f0b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp314-cp314-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 299c54f1eb53b4b7e1ee23ee50cf03df4ab04b46dfd9a40f0146d5d4e2365811
MD5 578be3ad42352219dc94a23b4f1362c6
BLAKE2b-256 3ec801ccc0bb4ef4d0c7376146c517c72587baebfd03a6e9ce12812736cc4cee

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 20435070f678326a7276edf50fb5524338208feac10c60a6a376940784b2d9ca
MD5 784acd8b9c411b83826b11dfac7c132e
BLAKE2b-256 356ff03cda4b11c82ff14be950a8608cdd32c99af33174c935957497b9ce7fc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0f5c2992fa9f22e6cb6d3e5aec06e65d2fa491957f686950795e893d1894fd45
MD5 333421efacecfc5ae7b8c60ac11bb705
BLAKE2b-256 b0553eb357fe8510c341645f2b0af0330049f0f9b84c9ca34f972a6459e44710

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp313-cp313-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6cc54662be68d9230e5c5b7b96a737f94a3aca735182bbb871a644137abfdb14
MD5 080a1de392cb16d6f37213d89c20850e
BLAKE2b-256 956d1d33595bf881930582b7ddfb81ccb2cecb22d2663a35a8d91f3d3fd99e03

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 08d372f86400e8e15ae8e144abfb161195d16e68a7b0341c955722f3885af47f
MD5 f6241d20ba0bcf2f01eeb8b560323a53
BLAKE2b-256 63777360022f972b47eb63713671c0d2e0a40100f956a798f3f41511541dcd9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0aad8caffbd60465ada131d67ef0f5ef92c439c211483e8707aa16ae6f7daf27
MD5 0036d894cadc9c9af5ffecff469753d3
BLAKE2b-256 b56af1a0297498c4258e60484d50d3bc8ef8046a8f4b556730cb9ee79895a3ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp312-cp312-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 d045d00a581b61808f7a886845c8f59169a4a9f3949f57ddbbb180a81024fbae
MD5 b003493da5ac86a5b01f25dd8ca3116a
BLAKE2b-256 24997602c598cc6448ac3900e024d16c896156f40b7c94afbb055587c4e295e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e06e56816d5b09d3731a03440ca1730c03630eb3a2f73079724ee249c51d5c59
MD5 9ffd48584591fa4521feecc964916273
BLAKE2b-256 0577f2ff421952dbafce45983fe3ff98fa047d475d3e9266ed4be1de0361c0e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 775917c35fde099f46a9fc8f1a0ab3503db9a69743cef4bb4f827b32f6bea638
MD5 de24c6a7f28a57112bcca5639e335e44
BLAKE2b-256 1813ae8f0dbb77be91a1e349784fa56cb475dfb53470698e5de6ff076cb9e5d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp311-cp311-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 62a52cb4873c3a698a7dc53c5d29e030d91f092bcbbad0536cb847737d43859a
MD5 448a2f2c3ae31d14a10b545ed9abf734
BLAKE2b-256 7546514f7574e6a4f46be9876e60028ce4e7531793a44d5f6a334a021f772642

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bc5f5697e6320aea1f657238224e640781b67dba9c7e9bd6294e8d68070538d2
MD5 0a334b4b29148048e55a702089bd7624
BLAKE2b-256 c45492cb036bfd60c6be7c00f9d7f204daaedc3b318967272e9b4f91542336b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d09668ea6e6a08552bc2a18f7b7cef644b837bcfdaca92bcb06f6822e1661c0a
MD5 b329c26eeae0dab0718b6c863f0ef535
BLAKE2b-256 94bda745571c8f821c0164745946687c00809ae412f2741f7d845349c497ed94

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp310-cp310-win_amd64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 84ab80a86cef510d0158e149a715b0d85b11a923b4a8477019c8bb1a736a72c2
MD5 a2edf0cb6403e5d52cc21ef48e4d6ee1
BLAKE2b-256 82b370337ba65f33edda62db58f76ce1f2631d2758b6899a27881df3604f7a35

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyhelios3d-0.1.18-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.18-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 340f39c7821a212c253d510b84664dc0df6de0f5c9e12614a6771b73e61ff57b
MD5 9e7c24e9b799bf0df541066d8617cd4e
BLAKE2b-256 e0305ff9b08e8c1906ae428d785d3c922fc4b42148b0d1c734e630da093508c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.18-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: build-wheels.yml on PlantSimulationLab/PyHelios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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