-
Notifications
You must be signed in to change notification settings - Fork 7
Developer Notes: general code organisation
Rob Campbell edited this page Jun 18, 2019
·
1 revision
Lasagna is written using PyQt5.
The GUIs are produced in Qt Designer and converted using pyuic
.
Source files should adhere to the PEP8 standard.
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.
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.
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 live in lasagna/lasagna/plugins
.
They inherit lasagna_plugin.