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.20-cp314-cp314-win_amd64.whl (52.6 MB view details)

Uploaded CPython 3.14Windows x86-64

pyhelios3d-0.1.20-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.20-cp314-cp314-macosx_14_0_arm64.whl (62.2 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

pyhelios3d-0.1.20-cp313-cp313-win_amd64.whl (52.3 MB view details)

Uploaded CPython 3.13Windows x86-64

pyhelios3d-0.1.20-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.20-cp313-cp313-macosx_14_0_arm64.whl (62.2 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

pyhelios3d-0.1.20-cp312-cp312-win_amd64.whl (52.3 MB view details)

Uploaded CPython 3.12Windows x86-64

pyhelios3d-0.1.20-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.20-cp312-cp312-macosx_14_0_arm64.whl (62.2 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

pyhelios3d-0.1.20-cp311-cp311-win_amd64.whl (52.3 MB view details)

Uploaded CPython 3.11Windows x86-64

pyhelios3d-0.1.20-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.20-cp311-cp311-macosx_14_0_arm64.whl (62.2 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

pyhelios3d-0.1.20-cp310-cp310-win_amd64.whl (52.3 MB view details)

Uploaded CPython 3.10Windows x86-64

pyhelios3d-0.1.20-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.20-cp310-cp310-macosx_14_0_arm64.whl (62.2 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 77afd0f3ee01031d5f02621f2b6d5e9de3d8036d642d5de58c63c77b6152e292
MD5 52156443e5ee020d54d42702e9481b00
BLAKE2b-256 313b1876d5582b2d1fd80ef37d7e628824a753008ba56059c037d3b0c427f9b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e0651e5cbf13b730c14eab47b3dd618e4d5c92b499c56144538a4875209d8a63
MD5 c5a722803ec7f36fd4e806504b538315
BLAKE2b-256 3b45c8f7427f7d0e2ed3e2a3dca67f564f978e1d0e2f6a56020afd863f2729b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d81e39cc3a357a6f1d6b37113ef3b463585edd72e12e438eb2c4f0c31a0f5d8f
MD5 38b160e50305a0eb0139a33551550cef
BLAKE2b-256 ec5506fec8ff1842f2892f87d87f6a802cddda686d28a63900453688900650a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1f2082d5a6e8ed0aa2e6657bd1022cee9f66d66dd48f8719932e79ab17ac075a
MD5 7468a8338983391627ac45203848804c
BLAKE2b-256 fe97821805b014876b6e2685365e0685220b8e601a8d8a171c1e966b618c0ac7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0d9a611ef2f288c24b89af2e2981107ba95f066c1e1cbdb68ba566e340051221
MD5 d0c02653517033c1220ae273a3aac58f
BLAKE2b-256 bf414e36969b10fcaa68cdef75ee0d45f1a041e384c2025b61fc46c67cb3cb2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2faed28b90cf72bf82710759985641672e97fb1104c60ed2f8fdeddb0d605791
MD5 54e6df6c083a07b513173201fbb37c67
BLAKE2b-256 db36f87e484c81689d982d7ca11d1a7c5f3acf09f749a9a53654e2e5327b43df

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2a0e1acfbfa8ce9ce59a8e2292898e395fb31d5f6d50d7f4085c77d871775c26
MD5 168bf78ffa4a95206ff177bfc65620b7
BLAKE2b-256 688fab609f7c70c92c30e9883b32c03050209fc00403b9e3a3c1c100badfe333

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6e3ce081e8126aa949afe938ce17b414bae211557361a2bac0ea3737049a5ce8
MD5 12b2b352229edc2a5edf8e88a2a41d4d
BLAKE2b-256 165f06cbab2ffa447bac0ca50ca7031f2908db4cf8352edd63aea0f3d3c1e43c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b72c44da6e78b939e5bdb90802eff9e6e4710be673043e1263edc7b35628febe
MD5 ed2d0172af130640f0500b4a883c771d
BLAKE2b-256 a696ab9112797c93e356c960b5ce143fbd2554ff87c28d21722c803c7503ebd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 13f26c48ce902f51ea254f092c6455b8b762133685f39d518c3d2fc95cf3a7c7
MD5 7dc019b1958444bc634a770ef0c513cf
BLAKE2b-256 f9ff33958dfa5f842167104e799972252858003882d228f354410a3614e2277a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ed8c48dca4aed96d0fd70fdfb85e29e5abe14abe794ba1dc59048d6f387b885c
MD5 5627db079ba3a89605861d7f37617ccc
BLAKE2b-256 87d28affd6e9a7594d78e1134cce34a560431a4b134ec3174c9db1b128d943bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d797d145c3eccc2f3b73ab5d45d357a16a1dd30f355b92912ef26e4f7c977df3
MD5 2adff33caf219f1b0f81f9b5a38eebb1
BLAKE2b-256 f1a51367e26c57f303bc51b4cf9a796affd837dceaf00a3f7da898dfd5ca0145

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1ce5732df0747de2d595886784668167bc7ed32a5010c20b0fef62579e7c2f1d
MD5 c1d8dcafdf18d5a95870e7d060444067
BLAKE2b-256 b77277a359d36b291ec3765b101671b38e9a83289c640d21f214dd72dee75c19

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 a867c5195213348d42fa5cad7a59580c55f13f3ec4458c56a4959b0b22885c90
MD5 13c981b6f9e7b8f5a78b42ea8ae86064
BLAKE2b-256 8929d64e34c84a60ae8f7dbab9e3c62e61219026a026791548f62a06ce4ac824

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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.20-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyhelios3d-0.1.20-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 32a3062e2ab4ea309e67000ae143995abb68e7347cd662a741e740b967b2151e
MD5 5ccf4f6948a2c6f66c9870ed71ca8e18
BLAKE2b-256 13879325575a6033ed71e8f081a13d730d514c270f7ec7b029bbc2838e0858d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhelios3d-0.1.20-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