Building extensible frameworks for data processing: The case of MDP, Modular toolkit for Data Processing - Wilbert, Niko; Zito, Tiziano; Schuppner, Rike-Benjamin; Jędrzejewski-Szmek, Zbigniew; Wiskott, Laurenz; Berkes, Pietro (Journal of computational science, 2013)
► MDP is an open-source library for scientific data processing in Python. ► It provides a framework for reoccurring tasks, like combining multiple algorithms. ► MDP includes a flexible extension mechanism, allowing for instance convenient parallelization for selected algorithms. Data processing is a ubiquitous task in scientific research, and much energy is spent on the development of appropriate algorithms. It is thus relatively easy to find software implementations of the most common methods. On the other hand, when building concrete applications, developers are often confronted with several additional chores that need to be carried out beside the individual processing steps. These include for example training and executing a sequence of several algorithms, writing code that can be executed in parallel on several processors, or producing a visual description of the application. The Modular toolkit for Data Processing (MDP) is an open source Python library that provides an implementation of several widespread algorithms and offers a unified framework to combine them to build more complex data processing architectures. In this paper we concentrate on some of the newer features of MDP, focusing on the choices made to automatize repetitive tasks for users and developers. In particular, we describe the support for parallel computing and how this is implemented via a flexible extension mechanism. We also briefly discuss the support for algorithms that require bi-directional data flow.