Key concepts#

Variable handling#

Variables accessible by the user have been wrapped in their own class as Parameter. These Parameters, in turn, are handled by a subclassed dictionary.

Parameter#

All (externally by the user accessible) variables are handled as Parameters. These objects have a reference key, a type and value. Additional metadata can be handled in form of a longer name, a unit and pre-defined choices for the value.

Parameters enforce type-checking when setting the value which makes input/output operations by the user more esilient.

Generic parameters have been pre-defined in the core.constants sub-package and these can be used without the need to re-define the full Parameter.

ParameterCollection#

Parameter collections are subclassed dictionaries which allow only Parameters values. They are used by most pydidas objects and allow an easy and standardized access to all Parameters. For the full documentation of the ParameterCollection, please refer to the documentation of the ParameterCollection object.

De-coupling of processing and user interface#

The full functionality of the pydidas suite [*] is available from the command line and can be used in scripted application without the need to invoke the graphical user interface. While the GUI allows for a convenient editing of Parameters and Workflows, it is not required for processing data.

Use cases#

pydidas has been developed with diffraction data analysis in mind, but the structure is flexible enough to allow other use cases as well. Each single use case has been defined as a unique Application which can be called via command line. Alternatively, pydidas includes a GUI frame for each generic application.

Parallelization#

pydidas includes functionality for parallel processing of applications (or functions). The multiprocessing sub-package includes the required functionality. Results can be received using the PyQt5 signal/slot mechanism.