# Overview of the organization of the package¶

## Data objects (fluidimage.data_objects)¶

FluidImage uses data objects. These objects represent particular types of data. They should be able to be loaded from a file, saved into a file, displayed to the screen, etc.

## Works (fluidimage.works)¶

A work is a function processing input data and potentially returning input data. Some works are actually classes which have to be initialized with parameters.

For example, the work fluidimage.works.piv.multipass.WorkPIV provide a method ̀calcul(couple) which compute a PIV field from a couple of arrays.

The works are defined in the package fluidimage.works. Internally, the works use utilities for processing defined in the package fluidimage.calcul.

## Topologies, waiting queues and executors¶

A computational topology contains the description of an asynchronous computation as a graph made of waiting queues and works. The base class fluidimage.topologies.base.TopologyBase provides the methods add_queue and add_work to define the topology.

The topology classes are defined in the package fluidimage.topologies.

The execution of a topology is done by an executor. Executor classes are defined in the package fluidimage.executors. The executor organizes the asynchronous calls of the work units of the topology with the correct transfer of data between them.