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

Uploaded CPython 3.14Windows x86-64

pyhelios3d-0.1.21-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.21-cp314-cp314-macosx_14_0_arm64.whl (62.4 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

pyhelios3d-0.1.21-cp313-cp313-win_amd64.whl (52.5 MB view details)

Uploaded CPython 3.13Windows x86-64

pyhelios3d-0.1.21-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.21-cp313-cp313-macosx_14_0_arm64.whl (62.4 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

pyhelios3d-0.1.21-cp312-cp312-win_amd64.whl (52.5 MB view details)

Uploaded CPython 3.12Windows x86-64

pyhelios3d-0.1.21-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.21-cp312-cp312-macosx_14_0_arm64.whl (62.3 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

pyhelios3d-0.1.21-cp311-cp311-win_amd64.whl (52.5 MB view details)

Uploaded CPython 3.11Windows x86-64

pyhelios3d-0.1.21-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.21-cp311-cp311-macosx_14_0_arm64.whl (62.3 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

pyhelios3d-0.1.21-cp310-cp310-win_amd64.whl (52.5 MB view details)

Uploaded CPython 3.10Windows x86-64

pyhelios3d-0.1.21-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (55.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.21-cp310-cp310-macosx_14_0_arm64.whl (62.3 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 995c700ab4722e17889940661b5c6b38f7c7406361a3a4fdccd5550dbc458772
MD5 5e09c3509e001da93971a93474991ded
BLAKE2b-256 374e399c278c3aa77f3de41a778f62443b5a683bb66541ddc58e8d007f2450ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0999dc02eebbfd09fe4eed38cbdd4b5419eb82a15068bc1af6c599a4e27f3934
MD5 49854dfab5e00635d0cca87370838397
BLAKE2b-256 0e363753fd7059cb49b959e00beb8da0766f6d4e3bdcc48d0c6045654938c583

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3e6ad8ce63cb24e2d2a9bc7ea4568fdfd4698a598ccc0f10b313234dac086bd6
MD5 381432957ca842f42057f3b9a43aa6a7
BLAKE2b-256 f9f8b115219aae16d968c763eb2b217e3a806e68063331964447deea33f1770c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e748dc7eb85606fa04fb11ea2e88550fa81842fbc265061688efcdac5c9e0749
MD5 ea9fe61ab7750f15f8f4528cd9088b61
BLAKE2b-256 bcb3b903b891477bda851c2b5554739be9efe0d156f43961c7a71f858204ee40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 07fd9b55460e018029bb81bb50425b7265c2d0581d88ce05ad41c0827e3e347c
MD5 31d8fadd364eb89fd6c232fa53ae2959
BLAKE2b-256 fcbd4a36243c6be7309c486cc1152a42b3c2e42478c34d75448070e4cc3faa93

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e180256b2e8686a90f7ed9c58edcc22cedba242dc5f2e471033023fab1448150
MD5 4f65cb2eb82f2ade618a88b049502921
BLAKE2b-256 1138c5858ff28cd6a62713fb88a07f37be48997703edb506cd886f75a9366798

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ca883bf2f87a1252662fb2e9a48954056512f51b4234a81b85ae307ad02c8d29
MD5 5261b7f47d7f05fd05ed413cffdf9678
BLAKE2b-256 07bce29de5b72c93cbdb1824a3d20a1dcfc293253b6f2fc213a2fd97de573067

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 54845c2870d02f9258a533d01454f5f450313f7b5854e09bc4e7763da1f8e97b
MD5 7ba076cd3d2e3728393581bb2e520557
BLAKE2b-256 30d8776cb775e8aef370144a1083cee08261b6b16a04b3841e497fe219fc985f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7531452e5adb58cf449c2343fc1aaf541c87457bf64a20d8e7265eeee7379b58
MD5 3f1e933c99277acc5fd21e0d6899405a
BLAKE2b-256 74d567538f496e2e81d58e8fcc9420f905b7138ca8abe9d7ac37252d4274548f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c3df0b5d132ec6876a04734f1745a729b2128d4f9683defa897ec20ab42b0a7a
MD5 5edbd051daf97f5a2da7833a45a91b98
BLAKE2b-256 f6e52c5447d137bcf4429dd10717cc31c583b35c728205c52c45253cc1aa7354

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 75dc7ddc1f463e9e43fad5402e040d8cdd3bceb34234015a74937676a21b4fe1
MD5 6e111f85e5dd4b783e24d695c14c7e15
BLAKE2b-256 2232e174b048993f440bda96ae94aef4615e8c77854bfe578a03db55dd066210

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 12983e377cd36b1d4408dd9e54da89736d4f9df8b903a9cfaacb9b69b83113e4
MD5 637e797a46c23f2b767485d0d9e0aad0
BLAKE2b-256 4c0b39686caff4752b5a206a423b4710b95b34b610e2d232be6c5aa776f9c43e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7932ec68ad4ec9c6fb85d74384f873aa4f119d6f7c6ad6977f6226b8bd755a9a
MD5 04b2f0532f0bd4ab78e7dbbe4635af73
BLAKE2b-256 a6228e87bb020e4aad98a5299e9912c091e2bc1e400682b8eeb375c065b35033

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0f3fd306ab4f599384a3f04bb572a019a9da839bc45ce847efbfbc44b08261b8
MD5 204d6b3d2258650da04533bf14677dcb
BLAKE2b-256 31a0921bb2dd7a9b8957dd6c58b59e3c1be9452243aea05f62812ee2928f26c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.21-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4b4e7fcc1c670ddf5c722023aa2f4783b5c3289309be62aaa73bd893deb1f2a5
MD5 15eebbedc2597f6b92d8fb5ea33ca91a
BLAKE2b-256 d2e18338b53c0f11a1658bae57a6a54a489e3bf37ddc9ceef133457868d12b6a

See more details on using hashes here.

Provenance

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