VPlants Lpy documentation¶
Module description¶
Overview
L-systems were conceived as a mathematical framework for modeling growth of plants. L-Py is a simulation software that mixes L-systems construction with the Python high-level modeling language. In addition to this software module, an integrated visual development environment has been developed that facilitates the creation of plant models. In particular, easy to use optimization tools have been integrated. Thanks to Python and its modular approach, this framework makes it possible to integrate a variety of tools defined in different modeling context, in particular tools from the OpenAlea platform. Additionally, it can be integrated as a simple growth simulation module into more complex computational pipelines.
Documentation¶
- A PDF version of VPlants.Lpy documentation is available.
See also
More documentation can be found on the openalea wiki.
Authors¶
Authors: Frédéric Boudon
License¶
VPlants.Lpy is released under a Cecill-C License.
Note
Cecill-C license is a LGPL compatible license.
ChangeLog¶
July 24th 2009: version 1.4.0 (rev 6689):¶
- Introduce
Lsystem::Debugger
- Introduce first ui of a Lsystem Debugger.
- fix bug with animation when resuming (avoid reloading text)
July 17th 2009: version 1.3.0 (rev 6635):¶
- Introduce static rules
- introduce structures PatternModule and PatternString
- add parametric production (to avoid use of python list)
- add optimization level option
- add not named variable to avoid useless arg value retrieval
- add heuristic to find static rule and not named variable
- add
RuleMap
to avoid useless test- Introduce compilation with
Cython
- Introduce compilation with
python -OO
- add possibility to store arg into a vector instead of creating a python list when retrieving arg.
- enable switching order of simulation in tab
- fix bug with first view computation in animation
- fix bug with query module value assignment
- allow lazy copy of parameters
- add examples/tutorial/models
- Regular Expression in strict predecessor
- introduce
or
module to alternative matching- add possibility to retrieve directly module
- add possibility to name parameters of module and access them as member of the module
- make particular test for matching with module any (or *)
- improve iterator
- check index when accessing module parameter. Throw exception if required.
- allow produce None to produce empty string
- fix bug with selection
- fix bug updateNamespace function of LsysContext.
- fix bug with PyQt/Qt4.5
May 30th 2009: version 1.2.0 (rev 6470):¶
- Introduce option
early return when no matching
- raise error/warning when detecting
#
smb- fix bug with alias
- Introduce
filtering
on parameter value- Introduce
Repeated Expression
getVarNb
function added- Introduce Category of Module
- Introduce
Tropism
- Introduce
SetContour
of GeneralizedCylinder- Introduce production of
new(name)
and produce ofA(*arg)
- Introduce
GetIterator
on some part of the structure
March 17th 2009: version 1.1.0 (rev 6096):¶
- Compatibility with PlantGL : RefCountPtr/pgl_hash_map/…
- Compatibility with OpenAlea : update nodes
- Introduce
MatchingEngine
- add
StringMatchingMethod
- Introduce multiscale matching with
MScaleAxialTree
andMLevelAxialTree
- use template method for matching
- Introduce
ModuleVTable
to add property to module class- Introduce
scale
property- simplify some wrapping code
- fix bug with context activation
October 8th 2008: version 1.0.0 (rev 5581):¶
- small bug fix mainly on MacOSX
- improve packaging
September 11th 2008: version 1.0.0 release candidate 3 (rev 5529):¶
- split tool bar into 2.
- add
Save All
feature.- fix small bug with
Lsystem
initialisation.- fix bug with text encoding and
SyntaxHighlighter
.- fix bug with path on compile_ui rc generation.
- fix bug with
SyntaxError
. Treat them as special case.- add arguments to
EndEach
.- correct bugs with
str
andrepr
onAxialTree
.- make
saveImage
re definable.- simplify
plot
redefinition api. Aplotter
object can be pass.
September 4th 2008: version 1.0.0 release candidate 2 (rev 5469):¶
- fix bug with signal
valueChanged()
of material editor.- fix bug with import of local python file.
- compatibility with
py2exe
.
August 13th 2008: version 1.0.0 release candidate 1 (rev 5408):¶
- fix small text encoding bugs.
- release candidate version.
August 12th 2008: version 0.20.2 (rev 5401):¶
- introduce
LpyParsing
namespace.- introduce set of function and member of
LpyParsing
to check format version compatibility and support.- format version test in parsing.
- simple test of gui.
- gui stream redirection improvement.
- change variable
tree
tolstring
into python shell of gui.- update documentation.
- add
documentation.getWikiSpecification
.
August 11th 2008: version 0.20.1 (rev 5397):¶
- now load initialisation code before lpy code in
Lsystem.set
. Add a test for this.- fix bugs with add/remove tab and comment in code editor. add icons to the buttons.
- add possibility to enable/disable view of tab in code editor.
- add option to see text below button of tool bar.
- add automatic test of examples of
share/
.
August 8th 2008: version 0.20.0 (rev 5394):¶
- text editor improvement: * add text zooming capability. * font and size selection. * tab space replacement and tab size control.
- file monitoring.
- tool bar style selection.
- preference dialog.
August 7th 2008: version 0.19.2 (rev 5390):¶
- automatic reload of last opened document.
- add new rule to syntax highlighting: * function names are in magenta. * strings are in grey. * tabs and spaces of the begining of a line are marked in different greys to prevent mixing. * operators and delimiters are in dark blue. * number are in red.
- make smaller border in the gui.
- fix bug with closing application and saving documents.
- set simulation in modified state when changing options.
August 6th 2008: version 0.19.1 (rev 5388):¶
- add module undeclaration and query module declaration features.
- fix bug with parsing and comments.
- improve lines correspondence in lpy translation.
- syntax error highlight in editor.
- fix bug with project code mess up when several project are opened in Gui.
August 5th 2008: version 0.19.0 (rev 5385):¶
- change GUI interface to have dock widgets and multiple documents editing.
- remove modules
G
andg
.- remove
None
module from doc.
July 28th 2008: version 0.18.1 (rev 5351):¶
- replace
PYLSYS
prefix byLPY
.- remove
StringInterpreter
class.- add documentation to predefined modules.
July 24th 2008: version 0.18.0 (rev 5338):¶
- Rename project as
lpy
. Change file and dir names accordingly.- fix bug with
produce *
- separate matching from application in
LsysRule
(now hasmatch
andapplyTo
functions).- fix bug with
LsysOption.isToDefault
.- clean examples of
share/
.
July 21th 2008: version 0.17.2 (rev 5278):¶
- Fix bug with
GlobalContext
. Add a__local_namespace
to containLsysRule
code.- Add memory tracker (
TRACKER_ENABLED
to activate) with memory report on stderr at the end.LsysRule
: * change interface to avoid exception raise inside constructor. * functionset
from python automatically call compile by default.- create predefined modules into a separate cpp file.
- Update code files header.
July 18th 2008: version 0.17.1 (rev 5269):¶
- remove intermediate structure for turtle interpretation. Each predefined modules has a custom
ModuleClass
class.
July 10th 2008: version 0.17.0 (rev 5224):¶
- add turtle interpretation as a function of each module class. for now, use intermediate structure.
- fix bug with module matching mode.
- add lineno to rules for error display.
- improve parsing.
- add simple tests on geometry of interpretation.
July 7th 2008: version 0.16.0 (rev 5200):¶
fix bugs:
- in argument parsing of query module.
- with
*args
variable name inLsysRule
generated code.- with use of
*
module: first arg is always matched module name.- with left matching of rule in backward mode.
remove
LsysContext
from stack when deleted.Lsystem object:
- possibility to enabled or disabled (
makeCurrent
ordone
) its context.- print declared modules when print.
report query module and axialtree parsing code in lpy_parser.
ModuleClass
are augmented with an active state. Allow to use always the sameModuleClass
in different namespaces.matching tests are a lot augmented.
July 2nd 2008: version 0.15.1 (rev 5178):¶
- use declared module in rule predecessors.
July 2nd 2008: version 0.15.0 (rev 5171):¶
- add module declaration:
- introduce
ModuleClass
andModuleClassTable
.- look for longest name when parsing Lstring.
LsysContext
has their own moduleclass namespace.- add
sceneInterpretation
inLsystem
to get homomorphism resultingScene
.- process line starting by
#
as comment line in production blocks of lpy code.
June 17th 2008: version 0.14.1 (rev 5119):¶
- Fix bug with space in Lsystem string.
- Fix bug with window specific end line in Lsystem code.
- Fix bug with
nproduce
in Lsystem rules.- Add tests normalized with
nosetests
convention.- Fix bugs with LsysOption template and gcc
- Redefined
len
cpp function inlsysrule.cpp
now compatible with allboost.python
version.
June 12th 2008: version 0.14.0 (rev 5086):¶
- Define
LsysOptions
class and mechanism to simply add an option, its possible value and corresponding slots.- Add an
LsysOptions
toLsysContext
.- Graphic edition of the options of
LsysContext
.- Avoid copying of
LsysRule
when iterating inLsystem
.- Add function
getIterationNb
.- Add control on module matching : Simple, with
*
module or with also*args
parameters.
June 4th 2008: version 0.13.1 (rev 4996):¶
- fix bug with
animate
number of iterations.- fix bugs with multi-threading and visual shell. Introduce for this sources for new
Shell
classes copied from visualea and modified them thus that text writing is protected from concurrent access.
May 30th 2008: version 0.13.0 (rev 4983):¶
Lsystem
interface update:
function
run
disappear.function
iterate
has an extra argument starting iteration number.function
interpret
is available and take as arg a Turtle.function
plot
do aninterpret
and aplot
of the resulting pgl scene.Fix bug with
homomorphism
.Interpretation before iteration :
- can be avoid with an extra arg to iterate.
- done with
interpret
.
LsysRule.apply
is nowconst
. python code should be compile before. Else an exception is raised.
LsysContext
updated:
readAxiom
disappear.parsing :
- Related functions regrouped into a new file named lpy_``parser``.
l2py
function renamedlstring2py
.
StringInterpreter
has now possibility to change ofTurtle
.GUI:
- First call of
Step
produces now the axiom.
May 23th 2008: version 0.12.2 (rev 4924):¶
- change error for homomorphism rule with context as warning
- add possibility to give a function to retrieve selection (similarly to plot)
May 22th 2008: version 0.12.1 (rev 4920):¶
- add recursive application of rules for homomorphism and turtle interpretation.
- add selection and insertion by a
X
module- correct bug in parsing with line starting by ‘e’
May 21th 2008: version 0.12.0 (rev 4919):¶
StringMatching
structure to keep id matching after rule application
May 15th 2008: version 0.11.0 (rev 4902):¶
- add groups of rules in lsystems.
- small bug fix in post_install script
May 15th 2008: version 0.10.1 (rev 4895):¶
- prevent multiple access of lsystem even from same thread. Resolve warning from //April 29th 2008//.
May 15th 2008: version 0.10.0 (rev 4893):¶
animation_timestep
is a property ofcontext
that can be changed during animation and is taken into account.animation_timestep
is now saved into lpy file.- add the module
@g
in string interpreter to plot custom plantgl geometric symbol.- add the module
_
in string interpreter to change width. Will replace module#
in the future.- add a parameter to
endBracket
andbeginBracket
of AxialTree to define if current pos is [ and ] respectively if search should start before or after.- fix matching bug for
A[B[C]D]D
withA > [B]D
.
May 14th 2008: version 0.9.0 (rev 4892):¶
- process lpy file into one py file to have exact correspondence of lines for exceptions.
- axiom, maximum depths and derivation length are now converted as python variables which are imported after.
- introduce
nproduce
statement.- error are improved to allow syntax error, warning and syntax warning- when parsing lpy file, explicit exceptions for lpy special command error.
- code editor highlight line in case of error at execution.
filename
,decompositionMaxDepth
andhomomorphismMaxDepth
are now properties of a Lsystem.
May 13th 2008: version 0.8.0 (rev 4889):¶
- Merge
kernel
andgui
. Gui is now a submodule of kernel.
May 13th 2008: develop version 0.5.2 of Gui (rev 4885):¶
- add
case sensitivity
andwhole word
options intofind
feature- add
replace
andreplaceAll
feature- add
automatic tabulation
when enter is pressed (take into account if previous line ends by a semicolon)- tabulation is done with
LsysCodeEditor.indentation
which can be set to'\t'
or' '*n
April 29th 2008: develop version:¶
- A mutex now protect access to Lsystem object from multiple thread. Add
isRunning
function to test whether it currently perform any action. Warning: It does not prevent multiple access from same thread (to allow embedded call of protected action e.g.run
callingiterate
, …).
April 29th 2008: develop version:¶
- Create default lsystem execution context containing
__builtins__
andopenalea.pylsystems.*
. Accessible fromLsysContext.defaultContext()
. Have_main_
context accessible usingLsysContext.globalContext()
.
April 29th 2008: release version:¶
- Now version is controlled by the hexadecimal number __version__ in pylsystem.__version__. Some variables such as
LPY_VERSION_[STR|MAJOR|MINOR]
are created. Similar things forLPYGUI_VERSION_*
. This number is directly imported into setup.py to create egg. The rev is added in the*_VERSION_STR
. Warning: the__version__
file has to be committed to obtain the last revision version value.