Skip to content

This part of the project documentation is a reference for the technical implementation of the VoDEx project code.

VoDEx contains classes that assist in the creation, organization, and storage of information related to image acquisition and time annotation, allowing for the search and retrieval of image data based on specific conditions. This functionality is split into five modules: core, annotation, dbmethods, experiment, and loaders.

  • The core module provides the basic functionality for retrieving image data information.

  • The annotation module handles the construction, validation, and storage of time annotation. For cyclic events, VoDEx keeps track of cycle iterations, which is important in behavioral experiments where the subject might become habituated to the repeated stimulus or learn over the course of the experiment.

  • The dbmethods module abstracts the SQL calls, providing an easy-to-use interface to populate the SQLite database in which VoDEx stores information, and to query the database.

  • The loaders module contains classes designed to load image data from specific file types, with current support for TIFF, and allows for easy addition of support for other file formats (see Contributions for more details).

  • The experiment module contains the Experiment class, connecting all the functionalities of the VoDEx package and serving as the main point of entry for interacting with the package.

core

This module provides the core classes for loading and preprocessing imaging data.

'ImageLoader' is the core class that loads the image data and selects the appropriate loader based on the file type. It also collects information about the data type and number of frames per file.

'FileManager', 'FrameManager', and 'VolumeManager' are core classes that preprocess information about the experiment data. The 'FileManager' class contains information about the location and file type of the image files, while the 'FrameManager' class contains information about the number of frames in the experiment and the mapping of frames to files. The 'VolumeManager' class contains information about the image volumes in the experiment, including the number of frames per volume and the mapping of frames to volumes.

experiment

This module contains the 'Experiment' class, which provides a summary of the information about an experiment. The class can initialise, save, and load the database, search for frames based on volumes or annotations, and load image data using the appropriate loader. To initialise the database, it integrates the information from the FileManager, FrameManager, VolumeManager, as well as Annotations, to create a database.

annotation

This module provides the classes for constructing time annotations for imaging data.

'TimeLabel', 'Labels', 'Cycle', 'Timeline', and 'Annotation' classes help to construct and store time annotations. The 'TimeLabel' class stores information about specific time-located events during the experiment, such as a specific condition described by a group and label. The 'Labels' class stores information about a group of time labels, such as temperature, light, sound, image on the screen, drug, or behavior. The 'Cycle' class stores and preprocesses information about repeated cycles of labels, useful for creating annotations for periodic conditions. The 'Timeline' class stores and preprocesses information about the sequence of labels, useful for creating annotations for non-periodic conditions. Finally, the 'Annotation' class stores and preprocesses information about the time annotation of the experiment; it uses either the 'Cycle' or 'Timeline' classes to initialize the annotation.

loaders

This module contains classes for loading and collecting information from various file types.

It includes:

'Loader' - A generic class for loading files. Can be subclassed to create custom loaders for different file types.

'TiffLoader' - A class for working with TIFF image files. A subclass of Loader, it can be used to determine the data type of the images, the number of frames in each TIFF file, and load frames from TIFF files.

Additional loaders can be created to work with other file types. See Contributions for details.

dbmethods

This module contains classes that provide a consistent and easy-to-use interface for interacting with the SQLite database.

DbWriter - A class that writes information to the database. It abstracts the SQLite calls and allows for easy creation, population, and saving of the database.

DbReader - A class that reads information from the database. It abstracts the SQLite calls and allows for easy querying and retrieval of data from the database.

DbExporter - A class that transforms the information from the database into the core classes, such as 'FileManager', 'VolumeManager', 'Labels', 'Timeline', 'Cycle' and 'Annotation', making it easier to view and edit with the data.