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

Uploaded CPython 3.14Windows x86-64

pyhelios3d-0.1.25-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14macOS 14.0+ ARM64

pyhelios3d-0.1.25-cp313-cp313-win_amd64.whl (52.9 MB view details)

Uploaded CPython 3.13Windows x86-64

pyhelios3d-0.1.25-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13macOS 14.0+ ARM64

pyhelios3d-0.1.25-cp312-cp312-win_amd64.whl (52.9 MB view details)

Uploaded CPython 3.12Windows x86-64

pyhelios3d-0.1.25-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.25-cp312-cp312-macosx_14_0_arm64.whl (62.6 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

pyhelios3d-0.1.25-cp311-cp311-win_amd64.whl (52.9 MB view details)

Uploaded CPython 3.11Windows x86-64

pyhelios3d-0.1.25-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11macOS 14.0+ ARM64

pyhelios3d-0.1.25-cp310-cp310-win_amd64.whl (52.9 MB view details)

Uploaded CPython 3.10Windows x86-64

pyhelios3d-0.1.25-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (56.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyhelios3d-0.1.25-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.25-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pyhelios3d-0.1.25-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 53.2 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.25-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 11daa86f23b218556915dd22806127eb70232d631153eedb4505fa7a66826a8a
MD5 ea5d8f52b3be85a5fc742eebe2f4cc4b
BLAKE2b-256 f4b883ed6c24471447a3a2bcb0f8736f706c9a071793af2782b166021557ef74

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ab5c01993bd285327bbef02c414340bb5927b917835dfd78be23d38e227556df
MD5 babec92fae71d6b889f53965d5a82fe2
BLAKE2b-256 1b900a48b828730efbb4b794be515ed799a8bb90848ef2f5ba279862811f6aff

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ff5dbda3d4a84d20bf99e87e397862bf1de67517e81494739c683781cff6bcc9
MD5 c869fc43f32b664fb002b4d9fd36a0b5
BLAKE2b-256 d07c28edcaae67ff186658ed6936ed08b37546d0af437bffb960386a7e2dc85b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyhelios3d-0.1.25-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 52.9 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.25-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 998dbe608803ef5649f450db00912d01e6859551f74d5079354fca5525cb79b6
MD5 d803c5c7844e319ea5a4814dc9eb32a8
BLAKE2b-256 bd4fdb79147fa6e7a186eb96f0dcdf9e18bb26a9c915ebe43c5b2034077c77a7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7c89127599c63f2afe42de2e302b0f49bf1a7efc3bc5c7183ee2e063c71f4b7c
MD5 f2cbc966bf06cc9eb5f372f78f03460d
BLAKE2b-256 1c5920190fb539ee32546bf119646893b1bae6402e848fe2abfed7fe802eccef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b3016f1f348d84307d7af5f2294610705be8db736ee7e4bd1bc568511797f01e
MD5 15d268cfcbb9ef28d4834e82a77a5a5d
BLAKE2b-256 0a534beaaf2404a1fb6a45dab7b6ac8892c3be38a47df97d738e40118ecca0c2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyhelios3d-0.1.25-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 52.9 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.25-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e7035e995600e97a87866e917ca2886e507cad9358b2521ccd2d5f08dda4b7f9
MD5 4b3e5314a41e086f206491c35ae6dd05
BLAKE2b-256 68b37114d0266f5338d6bd78cb2e29c7dcde603e64847b65f73bb8c8b0908cdf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 435077d9cde15cb14fd418185e800da6a4cc3cb6f8b8c71cae3c2674dbca29ec
MD5 275d07375d127b86fbc2878cba4b7fbf
BLAKE2b-256 d5e26185afe04ce9ed216a7596bfc84ac43f92bdf447fc163f5516c7866a9778

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ba2e180bb3097a9497de126e7da7eeeb3efc8cac9b32619816b74f11032c7d6e
MD5 2a6d2cac02ab797bd0907537c4ae2215
BLAKE2b-256 ee677143e7ff6f8e68cd9e6feda8abf1e359fa3b0689631f359f458b70bf74aa

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyhelios3d-0.1.25-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 52.9 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.25-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a3784b0f2e014fb0e96fd3f5103c2f95b90d9617bb2ff1742a4ec73c80f9a879
MD5 4c64b1270b06c07be17f9d3749c25a8a
BLAKE2b-256 b6ea2737f5d55d0ae32ddf4192bad88ac55105f2376fdce684b093f9fef6cced

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3bbb7fc9cbfb979d3351f3a89846c978c58fe7d8d69dbb9d4e32098c9bab3f92
MD5 71ca3158498f47c281119f37649b8cee
BLAKE2b-256 97d993c65000067af59be98c42d2130c4e29a804a40b330cdedf8691be3b6f7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b80bbaac62c98cd2d027e7245e056d0233fc5f0ea8e2c80b66b4cf63075bf684
MD5 f3049d95aeb55576b40492c777e69fae
BLAKE2b-256 90481e0b7d2f70b0baad008cfc34da23fdf12c33a6ff8a94a504b78cc8a83443

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyhelios3d-0.1.25-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 52.9 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.25-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ab145ec81599ce76212e97702acc1950f5a365ef55997303406a056a71e94b2f
MD5 90ac5d6cf82197cf0606345ea46bbe01
BLAKE2b-256 9da644b50893b48fb672896dba463ba5697fcdb5cb0e3acfff994878f05bb8c0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 98ab45246350178094948013bb2eab8435da3dc0ddaa0b58b78ce0b209a98481
MD5 17c7ecc2797de1bee298f9fe30dd6eaa
BLAKE2b-256 3a2185eefda5a23735c5d84e22557b14bb7f39c76a34e3312277f6af9ffcf2c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhelios3d-0.1.25-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c07608ce93b83185622508d685a74b9d4c1dbd487533bf91f471e79cc3c35d63
MD5 2c5f5399fb954f27b65cd9e612d2fe10
BLAKE2b-256 5ebbdb78acb4d81fc150bdca5a59881cee7a1debc26fcbac44e52029c9d535e0

See more details on using hashes here.

Provenance

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