MetaFSPM User Guide#

Introduction#

This package is intended to provide minimal tools to assist Functionnal Structural Plant Modellers (FSPM) so that they can make their production more readable regarding scientific content. It is also intended as a minimal constraint in object oriented programming to ease the model coupling in OpenAlea around a Multiscale Tree Graph (MTG). However the idea is to remain very generic in order to accept a wide variety of model types. You can’t impose formalism on others, that’s how great civilizations die. Our aim here is rather to favor research projects among different scientific communities.

For installation, testing and deployment: please see file README.md.

Implementation and architecture#

Software design#

Programming language#

MetaFSPM is a package implemented as a pure Python package with minimal dependancies (http://www.python.org/).

Project tree#

The project of MetaFSPM consists of several files and directories:

  • metafspm/ is the Python package, i.e. the sources of MetaFSPM (see Package architecture),

  • test/ is for the unit test,
    • test_component_base.py: Import test for the component,

    • test_field_consensus.py: Field declaration test when inheriting from the component

    • test_model_carbon.py: Fake model creation to test initialization

    • test_field_several_same_model.py: Test if several model initialization use the same data structure but are indeed solved separately with distinct Choregraphers.

    • test_wrapper.py: Wrapped model initialization test

  • doc/ contains the user and reference (i.e. API) documentations,
    • index.rst: the main page of the documentation,

    • user.rst: the user guide (this is what you are currently reading…),

    • ref.rst: the reference guide (a.k.a. API documentation),

    • conf.py: the configuration file used to build the documentation,

    • _build/: directories and files generated by library Sphinx when building the documentation,
      • pickled/: caches of the source “*.rst” documents (not needed to display the HTML documentation),

      • html/: the HTML documentation generated by Sphinx,

    • _static/: custom static files (such as style sheets or script files) generated by library Sphinx,

  • conda/
    • meta.yaml: depancies declaration for conda packaging.

  • LICENCE: the license of MetaFSPM,

  • README.md: the Read Me file,

  • setup.py: the setup script used for the installation of MetaFSPM,

Package architecture#

MetaFSPM is a Python package which consists of several Python modules:

  • component: the file to make Python treat directory cnwheat/ as a Python packages,

  • component_factory: the state and the equations of the model,

  • composite_wrapper: the parameters of the model,

image/architecture.png

MetaFSPM architecture#

Package dependencies#

MetaFSPM relies on only two Python libraries:

image/dependencies.png

TODO : CN-Wheat dependencies#

Parameters, variables and equations#

MetaFSPM is a set of 3 utilities to :
  • Standardize the component structure