Development documents

Browse Tasks online


  • Project

  • Viewer

  • World

  • Simulator (Meta-model)

  • Models/ Paradigms

  • Application:
    • archi
    • GUI
  • Service Oriented Architecture (SOA)

  • Manager (Package, Project, ...)

  • Controls / GUI

  • Config / Session

  • Interaction
    • edition of objects
    • relationships between the different models

For tasks and deadlines, please have a look to Ganttproject file "tasks.gan". This file can be opened with Ganttproject



  1. Coste
Due Date: 23/05/2014
Objective: Access model in other models
Issue: None


  • Defining the Models
    • generic interface (API)
      • run, step, init, ... (*)
      • get_documentation, ... (*)
    • implementation for all paradigms
      • Python (*)
      • VisuAlea (*)
      • LPy
      • R
  • Drag and drop a model in other models
    • Python (*)

    • Visualea
      • Create model node (*) (TODO: connect reset, step, ...)

      • Open/Edit the widget of a node :
        • Open a widget in the widget manager (To define: GadgetManager?)
        • Edit a model in the ModelEditors
      • save (model) node
    • LPy:
      • I/O :
        • AxialTree vs MTG
        • Sub-context
        • LPy / World (AxialTree Interpretation)
    • R

  • Project
    • store models instead of files (else we create new models and we doesn't keep the internal state model!) (*)
    • call models without extension (model1 and not (*)
  • Standardize
    • use the same classes in OpenAleaLab and in Visualea:
      • ex: NodeFactory / ModelFactory, InputObject(oalab) / InputObject(visualea), ...
  • API and implementation is done.
  • Drag and drop into python is done.
  • Drag and drop into Visualea is in progress.
  • Everything with (*) is done

What's Next:

  • Do we want to call models that are in an other project?


  1. Coste
Due Date: 18/04/2014
Objective: Project in OpenAleaLab
Issue: None


Almost done, test on real projects

What's Next:

  • refactoring
    • define the role of a project

    • abstract project vs concrete ones
      • Project: Python project. Might be used in any scientific software.
      • LabProject(Project),
      • Independant Widget from the Application
    • Lazy load: load in memory only what is edited.

  • features
    • vcs integration (svn, git) (P1)
    • different storage/representation strategies: directory, hdf5, bup, gzip, wheels, eggs, ftp
    • Import using import hooks (PEP-0302)

Application GUI

  1. Coste, G. Baty
Due Date: 28-30/04/2014
Objective: Graphical structure + concepts
Issue: None


  1. Grouping the widgets in a rational way
  2. Interaction between components (Drag/Drop)
  1. First try: define named area (inputs, outputs) than can be used to gather widgets. See mainwindow2.MainWindow

Application archi

  1. Baty
Due Date: 28-30/04/2014
Objective: Graphical structure + concepts
Issue: None


  • Naming concepts
  • one concept / one class
  • the application define its components
  • the components extend the application


  • A new MainWindow class (mainwindow2.MainWindow) has been defined. This class do not have widget imports except for shell and menu. 1/3 of widget has been integrated. Some blocking issues were identified. See Plugins.
  • New MainWindow uses entry_points to find plugins and add it
  • Fix blocking issues.

Service Oriented Architecture

  1. Pradal
Due Date: 15/05/2014
Objective: Loose coupling and delegation
Issue: None


  • Definition of concepts: component, interface, service, adapters

  • Service:
    • abstract class (interface)
    • dump/load object (project)
    • 3D display
    • Help
  • find Plugin


  1. Baty
Due Date: 15/05/2014
Objective: 3D Viewer component
Issue: None


  • Defining the Viewer component
    • interface (API)
    • code
    • review
  • Integration in oalab
    • compatibility with existing viewer
  • Documentation

What's Next:

  • Mixing py_vtk & PyQGLViewer in a same widget
  • Principles of the interaction with object of the world
  • Select an object
  • Manage layers
  • Manage transparency
  • Modal Interaction
  • Introspection / Info on objects
  • Edition mechanisms
  • Camera path interpolation
  • PlantGL Viewer backward compatibility
  • WebGL viewer

Release OpenAleaLab

Resp.: G. Baty and J. Coste

Obj: PlantLab & TissueLab

  • Project
  • Application Architecture (concepts)
  • Application GUI
  • world
  • Viewer
  • Paradigms (API, edit, run)
  • shell


30th April

OpenAleaLab alpha
  • project
    • create
    • edit (metadata, add elements)
    • view
  • shell / exec

  • paradigms

  • Application

30th May

Concepts and their relationships
  • Architecture
    • Interface
    • components
    • Service: Manager/Registration
  • Controls

  • Component GUI

  • Visualea / OALab

  • LPy / OALab

  • Drag/Drop

  • World / Viewer

15th June

OpenAleaLab replaces VisuAlea and L-Py
  • Tutorials
  • Test / Debug
  • Documentation / Installation

Known issues : To FIX

Project treeview

break link between project treeview and applet container.


  • method used by applet to provide action is not well described and not enough generic.
  • Action object: (i) interface, (ii) application and code refactoring


  • role of session, application and app not clear
  • Define an new object application vs mainwin which inherit of SignalSlot
  • Define the interface of the session. (move code from actual project manager to session).


  • project_manager is currently embedded in MainWindow (should be linked to session or app)
  • Rename controlPanel and project_manager to explicit and well defined names.


  • rename to world?
  • VPLScene has dependency to QtCore and QtGui (not expected)
  • Qt is used only to send a "SceneChanged" signal (Qt dependency not justified for only on signal)
  • Due to Qt dependency, scene is currently embeded in MainWindow.
  • As Scene is not graphical, it should be linked to session or application
  • -> Derivating VPLScene from Observed would be enouth.


FIXED: Scene using Observed/Listeners instead of Qt Signal&Slots works. There is a bug. Is it a new one ?

No handlers could be found for logger "openalea.core.pkgmanager"
Traceback (most recent call last):
  File "/usr/local/Cellar/python/2.7.6_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/", line 322, in save
    raise PicklingError("%s must return string or tuple" % reduce)
pickle.PicklingError: <built-in method __reduce_ex__ of VPLScene object at 0x7fa15a5d6ed0> must return string or tuple


  • dependency to AppletContainer (paradigm container).
  • ProjectManagerWidget must work without controller.applet_container


  • hard links with project, colormap and control
  • no abstraction for controls
class ControlPanel
    def update(self)
        colors = self.colormap_editor.getTurtle().getColorList()
        self.session.project.control["color map"] = colors

        objects = self.geometry_editor.getObjects()
        for (manager, obj) in objects:
            if obj != list():
                obj, name = geometry_2_piklable_geometry(manager, obj)
                self.session.project.control[unicode(name)] = obj

        scalars = self.scalars_editor.getScalars()
        for scalar in scalars:
            self.session.project.control[unicode(] = scalar


  • doesn't work anymore (neither in oalab nor in visualea)

Projects Manager

  • we don't have a widget that list all available projects (cf package treeview for instance)
  • We can't edit project (metadata, startup, ...)

Package Manager

  • use 3 tabs for the moment and so, take many place. TODO: centralize them in only one tab (a tab of 3 sub-tabs).
  • hide it if we don't use workflow?


  • is too big to appear by default in the application


  • create a user configuration to store preferences

Status Bar

  • add a status bar in mainwindow


  • TODO: add a space to store and visualize results


Most of them are independent (they can work alone). For a minimal application to works with project, just set applets = ['EditorManager', 'ProjectManager'] in the lab.

But there is still some problems:

  • EditorManager and ProjectManager are dependents of each others (TO FIX)
  • File management must move into EditorManager (TODO)
  • ProjectWidget depends of EditorManager (TO FIX)
  • with only EditorManager, visualea doesn't work: he need packagemanager