Pipeline Element

So called PHOTONAI PipelineElements can be added to the Hyperpipe, each of them being a data-processing method or a learning algorithm. By choosing and combining data-processing methods and algorithms and arranging them with the PHOTONAI classes, both simple and complex pipeline architectures can be designed rapidly.

The PHOTONAI PipelineElement implements several helpful features.

1. Easy access to various methods and algorithms across diverse toolboxes.
If, the user wants to access the support vector machine for classification implemented in scikit-learn, he can access it by simply adding a PipelineElement with the name “SVC” to the Hyperpipe. Internally the object is referenced and instantiated.

2. Simple syntax for the specification of the hyperparameters
their dimension: a categorical finite list of options, a range of floating point or a range of integer numbers. PHOTONAI communicates these parameters to the hyperparameter optimization strategy and ensures proper hyperparameter space initialization.

3. Disabling the pipeline element
Each PipelineElement has a parameter that is called ‘test_disabled’ functioning as an on- and off-switch adding additional functionality to the hyperparameter optimization process. Thereby, the hyperparameter optimization strategy can decide to completely disable any element in the pipeline if that suits a good performance.

4. AND- and OR-Element
For a more complex architecture, there are both an AND-Element as well as an OR-Element available called PHOTONAI Stack and PHOTONAI Switch, in which both particular PipelineElements or complete sub pipelines, called PHOTONAI Branches, can be combined.

5. Batching
For each PipelineElement you can specify the parameter batch_size. If given, PHOTONAI fits, transforms and predicts in batches containing n=num_data/batch_size elements.


my_pipe += PipelineElement('StandardScaler')

my_pipe += PipelineElement('PCA',
                           hyperparameters={'n_components': IntegerRange(5, 20)},

my_pipe += PipelineElement('ImbalancedDataTransform',
                           hyperparameters={'method_name': Categorical(['RandomUnderSampler',

my_pipe += PipelineElement('SVC',
                           hyperparameters={'kernel': Categorical(['rbf', 'linear']),
                                            'C': FloatRange(0.5, 2)})

atlas = PipelineElement('BrainAtlas', batch_size=20,
                        rois=['Hippocampus_L', 'Hippocampus_R', 'Amygdala_L', 'Amygdala_R'],
                        atlas_name="AAL", extract_mode='vec')


Parameter Type Description
name str A string literal encoding the class to be instantiated
hyperparameters dict Which values/value range should be tested for the hyperparameter. In form of "Hyperparameter_name: [array of parameter values to be tested]"
test_disabled bool, default=False If the hyperparameter optimization strategy shall evaluate a complete disabling of the element
batch_size int, default=None If given, PHOTONAI fits, transforms and predicts in batches containing n=num_data/batch_size elements.
kwargs Any parameters that should be passed to the object to be instantiated.