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

Uploaded CPython 3.14Windows x86-64

pyhelios3d-0.1.24-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.24-cp314-cp314-macosx_14_0_arm64.whl (62.6 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

pyhelios3d-0.1.24-cp313-cp313-win_amd64.whl (52.8 MB view details)

Uploaded CPython 3.13Windows x86-64

pyhelios3d-0.1.24-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.24-cp313-cp313-macosx_14_0_arm64.whl (62.6 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

pyhelios3d-0.1.24-cp312-cp312-win_amd64.whl (52.8 MB view details)

Uploaded CPython 3.12Windows x86-64

pyhelios3d-0.1.24-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.24-cp312-cp312-macosx_14_0_arm64.whl (62.5 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

pyhelios3d-0.1.24-cp311-cp311-win_amd64.whl (52.8 MB view details)

Uploaded CPython 3.11Windows x86-64

pyhelios3d-0.1.24-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.24-cp311-cp311-macosx_14_0_arm64.whl (62.5 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

pyhelios3d-0.1.24-cp310-cp310-win_amd64.whl (52.8 MB view details)

Uploaded CPython 3.10Windows x86-64

pyhelios3d-0.1.24-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.24-cp310-cp310-macosx_14_0_arm64.whl (62.5 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: pyhelios3d-0.1.24-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 53.1 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.24-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f00385e2a423e911f06f42fb3e073ebba08ec028c21a86396462d1ad676ff83b
MD5 ad937201240476ba5000455c234e6ac5
BLAKE2b-256 0ea5fb5aae8b273dddca95e17c69e2c974969127e50fa7d08271da0939364dee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 2acbf0fdce97176714ffb3bcec70fd151449ce5f3e003c85d23e1ed85f1181f5
MD5 dac04f38ef29d7cd1dee5e4b076ebefa
BLAKE2b-256 547ba5851872ae16e3f40b17078935fcc7c025e48511784cea32bdf82f2bf8c5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 6ac81a991168488eb39b981b9806825780d52b12cb7d67fba1617d05037a886f
MD5 066a598c420e6e62c457937d04e61b03
BLAKE2b-256 29688e94d002ed41840192a82e0422e03c4d09e8a790d62f65da93d3fdcadb02

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyhelios3d-0.1.24-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 52.8 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.24-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5dcb15ee1beeae85a788a2a8679e2b0dc3588ad47b93af06f1633d3f0f2fff17
MD5 6687dd322d9d580387052ca3ff6508bf
BLAKE2b-256 dfa74d9323b65a51c27ee1bab1f7634339df43f159a280d9dbacb99cec3916a9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 61893f31cf4854e12245bcdc0e3b8bb1cae624efbf07ba790ebb5ace749a9f07
MD5 92d277516c0cd878acd6a56876cccf82
BLAKE2b-256 4304dbdeaef07c01e079e28ac3a80015e00320b346ec4ea159bf00f9c0183660

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 00d72412f3b3f1eff206305b6720b86b71dcdb61ee3fb26b62782f6a97a71900
MD5 3dad90b78611a825f09617333faf6b1d
BLAKE2b-256 adf13e12f8122252fb96308d7cfeed47f299ed43c271bb59b78e8a3fdcbed993

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyhelios3d-0.1.24-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 52.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.24-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 895f2748224ead39d0a435d96b8d10176080d37582b365325f6b9e6c0981bf78
MD5 9ea0b30e33fffbad6d65aff09380504e
BLAKE2b-256 dae395bb30f5452fbb5f27b152df210a331a8d3cff358b264d70aaa0df4c7d64

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6b66a1153979a97712b553c97a68be1ee85762f56b2ccb3a0fc0c540ff6b59f1
MD5 647b4ab1f4156b55803484b2cf4630a8
BLAKE2b-256 78dc8367a350d27f0e6602dfb40f1578fd04c42afbbb4b92c2b65f38ebf6476e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a6c417d9cadd4a283323cf438baa456bdc6951fad8ff053e3b27ea40dc44573b
MD5 da63065e282531f2e5b21134ed373e25
BLAKE2b-256 505112aba0dfb5d21173e72c476eaf6fad31cb3cbbbb5274f5d3e1cc423ee775

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyhelios3d-0.1.24-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 52.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.24-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cf57f383a65cdeff4220ffc2e989c6c7a006c6434ad1bc46b42e56a0244e9dca
MD5 0f9aab33899a6953487bcfa439d92acb
BLAKE2b-256 9b13f99de06e20496ebbfe67662fa48d17872089f3cc7a97e1950dc082b40e28

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ac885459bed0fb08798ea067f9410045d0ef8827a15a318b7dee0d7b84b8af0e
MD5 eb09975da9c3bbf3a852d7a84e2840d8
BLAKE2b-256 aae76c7629c76b3c9da1d44a301625c04f97c557678f4a4390400a014cdf594c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d628f023d5d685695d7f7ace235faa3b40a6bb9ae5b5a273dbe377c529b1d434
MD5 3298bee9b88290c0100938189e47c2f9
BLAKE2b-256 98a2263d4e550097b3f9a3600501c46d0bb6fdb94dbe35e0a3e259f920477ac4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyhelios3d-0.1.24-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 52.8 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhelios3d-0.1.24-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1f6826c3448a5eaccb89782fa8a44417e5ea6de8baa7ac64098d126261e89bda
MD5 f945636427ca667d2d873a8043e32c97
BLAKE2b-256 ed56ab19f1984134dee61c720005592c7e55b8a8b0acbedefc1597436e8440d7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 15082eac66e706f3ed10ecc781c94e48c8d6040c6c8cfc87a77b5a9bfd1511ce
MD5 b1946aa519b8fe16961af1f425d5a38f
BLAKE2b-256 e149609ae2e6fde5dbc5048ab5218b8591b69b22a98a9652c168f8d74f218dd6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.24-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a1824afbe136a3e67ba46ce27b4a879ce216a629e6f0739b954eec3ff508d498
MD5 21bd9a5748765bdbb82a44676962e61b
BLAKE2b-256 82b7cfe1706aad43951a2d642765a3e0aadeaf1ba0abe55ce748f69979790264

See more details on using hashes here.

Provenance

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