pgljupyter v2.0.0
pgljupyter
PlantGL & L-Py jupyter widgets
Currently supports openalea.lpy>=3.9.0 and openalea.plantgl>=3.14.0 from conda channel 'fredboudon'.

Quick Examples
PlantGL
- simple PlantGL shapes - spheres @nbviewer
L-Py
a tree model - leuwenberg @nbviewer
plot magic - leuwenberg @nbviewer
champignon @nbviewer
magics with scalar parameters - broccoli @nbviewer
magics with curve parameters - sweep surface @nbviewer
Usage
from pgljupyter import SceneWidget, LsystemWidgetSceneWidget
Renderer for PlantGL Scenes, Shapes, Geometries
Arguments:
arg0list | plantgl.Shape | plantgl.Scene: a list of shapes or scenes or a single objectpositiontuple (float, float, float): x, y, z position of arg0 (default (0, 0, 0))scalefloat: scale factor for arg0 (default 1)size_displaytuple (int, int): width and height of the canvas (minimum 400)size_worldfloat: 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)
swTutorial:
- Display of spheres @nbviewer
LsystemWidget
Renderer for lpy.Lstrings derived from lpy.Lsystem code
Arguments:
arg0string: file name / path of lpy code fileunitstring enum: the unit used in the Lsystem model ('m', 'dm', 'cm', 'mm', default 'm')scalefloat: scale factor for arg0 (default 1)animatebool: ifTrueruns animation automaticallysize_displaytuple (int, int): width and height of the canvas (minimum 400)size_worldfloat: extend on the 3D scene in all directions
Important property/methods:
editor: display an editor of the graphical parametersget_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')
lwlw.editorTutorial:
- Display of the simulation of a lpy file : @nbviewer
%%lpy
A cell magic to inline L-Py code in a notebook
Arguments:
--size,-sint,int: same assize_display--world,-wfloat: same assize_world--unit,-uenum: same asunit--params,-pLsystemParameters: name of LsystemParameters instance--animate,-aTrue: runs animation automatically--extended-editor,-eFalse: 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 LsystemParameterslp = 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:
- simple L-systems @nbviewer
- graphical scalar parameters - broccoli @nbviewer
- graphical curve parameters - sweep surface @nbviewer
%lpy_plot
A line magic to plot all derivation steps of an Lsystem on a square plane
Arguments:
arg0, string: L-Py file--size,-sint,int: width and hight of the canvas--cell,-cfloat: size of cell for a single derivation step--derive,-dint[,int,int]: start, stop, step derivation
Example:
# activated by importing pgljupyter
import pgljupyter%lpy_plot myfile.lpyTutorial:
- 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 pipconda activate pgl
pip install pgljupyterDevelopment install
- install lpy, plantgl, jupyterlab, widgets and widgetsextension
mamba env create -f environment-dev.yml
conda activate pgljupyter-dev- install emsdk: https://emscripten.org/docs/getting_started/downloads.html
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=./examplesDevelopment uninstall
pip uninstall pgljupyterIn 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.
3 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago