Skip to content

Developer Notes: general code organisation

Rob Campbell edited this page Jun 18, 2019 · 1 revision

Overview

Lasagna is written using PyQt5. The GUIs are produced in Qt Designer and converted using pyuic. Source files should adhere to the PEP8 standard.

Startup

Lasagna is designed to modular and can be extended in three main ways:

  • Writing new "IO plugins", which define how data are loaded.
  • Writing new "Ingredients", which define how data are displayed.
  • Writing new "plugins" that add functionality to Lasagna by performing operations upon loaded Ingredients.

IO Loaders

The IO loader plugins are modules or classes that live in lasagna/lasgna/io_libs (But see Issue 201. Available loaders are:

  • image_stack_loader.py is a module which loads MHD (raw) and TIFF into Lasagna, and also allows for saving of TIFF.
  • sparse_point_io.py is a module that loads sparse points, such as locations of cell bodies. It reads a variety of file types such as MaSIV, VV, and Lasagna PTS files.
  • line_reader_plugin.py is similar to sparse points, but points are associated with lines.
  • tree_reader_plugin.py is another class (similar to the line reader) that reads in tree data, such as traced axons.
  • LSM_reader_plugin.py reads LSM files but hasn't been well tested.

Ingredients

The ingredients are classes which live in /lasagna/lasagna/ingredients and inherit lasagna_ingredient.py. The "ingredients" are the elements which are added to plot axes. Ingredients include things such as:

  • imagestack handles display of stacks
  • sparsepoints handles display of point clouds associated with things like soma locations.
  • lines handles display of line data, including things like traced neurite trees.

Plugins

Plugins live in lasagna/lasagna/plugins. They inherit lasagna_plugin.