Skip to main content

pgljupyter

PlantGL & L-Py jupyter widgets

Currently supports openalea.lpy>=3.9.0 and openalea.plantgl>=3.14.0 from conda channel 'fredboudon'.

Binder

Leuvenberg

DOI

Quick Examples

PlantGL

L-Py

Usage

from pgljupyter import SceneWidget, LsystemWidget

SceneWidget

Renderer for PlantGL Scenes, Shapes, Geometries

Arguments:

  • arg0 list | plantgl.Shape | plantgl.Scene: a list of shapes or scenes or a single object
  • position tuple (float, float, float): x, y, z position of arg0 (default (0, 0, 0))
  • scale float: scale factor for arg0 (default 1)
  • size_display tuple (int, int): width and height of the canvas (minimum 400)
  • size_world float: extend on the 3D scene in all directions

Example:

from openalea.plantgl.all import Scene, Sphere
from pgljupyter import SceneWidget

s = Scene([Sphere()])
sw = SceneWidget(s)
sw

Tutorial:

LsystemWidget

Renderer for lpy.Lstrings derived from lpy.Lsystem code

Arguments:

  • arg0 string: file name / path of lpy code file
  • unit string enum: the unit used in the Lsystem model ('m', 'dm', 'cm', 'mm', default 'm')
  • scale float: scale factor for arg0 (default 1)
  • animate bool: if True runs animation automatically
  • size_display tuple (int, int): width and height of the canvas (minimum 400)
  • size_world float: extend on the 3D scene in all directions

Important property/methods:

  • editor : display an editor of the graphical parameters
  • get_lstring(self) : return the lstring corresponding to the current step of the simulation display in the widget.
  • get_namespace(self) : return the namespace of variables of the simulation

Example:

from pgljupyter import LsystemWidget

lw = LsystemWidget('myfile.lpy')
lw
lw.editor

Tutorial:

  • Display of the simulation of a lpy file : @nbviewer

%%lpy

A cell magic to inline L-Py code in a notebook

Arguments:

  • --size, -s int,int: same as size_display
  • --world, -w float: same as size_world
  • --unit, -u enum: same as unit
  • --params, -p LsystemParameters: name of LsystemParameters instance
  • --animate, -a True: runs animation automatically
  • --extended-editor, -e False: show/hide all parameter controls

Example:

# activated by importing pgljupyter
import pgljupyter
%%lpy -u cm
from openalea.plantgl.all import *
Axiom: ;(1)+(10)_(2)F(10);(0)@g(Paraboloid(10,10,2,False))
derivation length: 100
production:
F(x) --> F(x+0.2)
@g(p) --> @g(Paraboloid(p.radius + 0.15, p.height + 0.2, 2, False))
_(x) --> _(x+0.02)

Example with graphical parameters:

# activated by importing pgljupyter
import pgljupyter
from openalea.lpy.lsysparameters import LsystemParameters
lp = LsystemParameters()
lp.add_scalar(name='a', value=1, minvalue=0, maxvalue=100)
lp.add_function(name='b') # default graphical function created
%%lpy -p lp

Axiom: SetGuide(b,a)F(a)

Tutorials:

%lpy_plot

A line magic to plot all derivation steps of an Lsystem on a square plane

Arguments:

  • arg0, string: L-Py file
  • --size, -s int,int: width and hight of the canvas
  • --cell, -c float: size of cell for a single derivation step
  • --derive, -d int[,int[,int]]: start, stop, step derivation

Example:

# activated by importing pgljupyter
import pgljupyter
%lpy_plot myfile.lpy

Tutorial:

  • Display of the simulation from a lpy file :@nbviewer

Installation

Install with pip - inside conda environment

Some examples also require matplotlib, xarray-simlab and rpy2.

conda create -y -n pgl -c fredboudon -c conda-forge \
    openalea.lpy jupyterlab ipywidgets pip
conda activate pgl
pip install pgljupyter

Development install

  • install lpy, plantgl, jupyterlab, widgets and widgetsextension
mamba env create -f environment-dev.yml
conda activate pgljupyter-dev
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install 2.0.29
./emsdk activate 2.0.29
source ./emsdk_env.sh
cd ..
  • get pgljupyter source
git clone https://github.com/jvail/plantgl-jupyter.git
cd plantgl-jupyter
  • fetch plantgl and install pgljs deps
git submodule update --init --recursive
cd src/pgljs
npm install
cd ../..
  • install pgljupyter deps and build (requires activated emsdk i.e. source ./emsdk_env.sh)
npm install
npm run build:all
pip install -e .
jupyter labextension develop . --overwrite
  • run lab
jupyter lab --notebook-dir=./examples

Development uninstall

pip uninstall pgljupyter

In development mode, you will also need to remove the symlink created by jupyter labextension develop command. To find its location, you can run jupyter labextension list to figure out where the labextensions folder is located. Then you can remove the symlink named pgljupyter within that folder.

Release files for pgljupyter 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pgljupyter 2.0.0
File Size Uploaded
pgljupyter-2.0.0.tar.gz 3.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pgljupyter 2.0.0
File Interpreter ABI Platform
pgljupyter-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 5.3 MB

Release files / pgljupyter-2.0.0.tar.gz

Download URL pgljupyter-2.0.0.tar.gz
Size 3.3 MB
Tags Source
SHA-256 checksum
How to use checksums
5247e672f3965430668c225121d79cd9617d974479fc6962398c9b3b63ee56c6
BLAKE2b-256 checksum
How to use checksums
8cdaff94ddbd5701ec13a6995d1e9d616ed67ba7116d2bd8cda696369144f215
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.2

Release files / pgljupyter-2.0.0-py3-none-any.whl

Download URL pgljupyter-2.0.0-py3-none-any.whl
Size 2.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
140090663e8dda7025527fe3eaf53b5a83c28467984bb972ba9395bbd032eca4
BLAKE2b-256 checksum
How to use checksums
5a5681a0747bd4f25da7b9c0ad2b14ad5f2896271e31697bc797b538e2574dfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.2
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page