Brief description

Error executing the xi_inject_textile macro (undefined method `catch_macros' for ApplicationHelper:Module Did you mean? cattr_accessor)

LDOPA (Library for Dynamic Operational Process Analysis) is a C++ library for Process Mining (PM) aimed to increase the efficiency of most of the important PM algorithms. The selection of algorithms and models supported by the library is related to the PhD study of its main author.

Installation and configuring

Installation and configuring of the LDOPA Library is explained here.

Rationale and Philosophy

The main motivational reason for creating such a library was the absence of any high-performance library with process mining related algorithms.

There are some tools and software initiatives in the domain of Process Mining. The most known is ProM, which is an academic framework with an open code license. ProM is a plugin-customable application that can be considered both as a research platform and an application for dealing with process mining stuff. Despite the fact that ProM is a great tool, it still has its drawbacks that prevent its widespread use in the industry.
By introducing LDOPA, we are trying to apply a fundamentally different approach to creating an effective library for Process Mining.

Below we provide some important ideas and design principles behind the library.

Pure library

LDOPA is a pure C++ library, which is not associated with any specific tool and does not rely on any specific framework. Hence, LDOPA can be utilized in a number of ways by binding with various types of applications.

LDOPA contains both template and compiled code; nevertheless, the library tends to be mostly template-based.

Focus on performance and efficiency

We decided to implement the library by using C++ programming language taking into account the fact that it allows to combine together high performance and a high level of coding at the same time. In contrast to some other libraries and tools, we consider LDOPA not as a proof-of-concept needed to prove the correctness of another developed PM method. The algorithms being involved in the scope of LDOPA projects are
developed with the respect of efficiency issues. We have been also trying to design fit data structures that are, on the one hand, economical in terms of memory footprint, and on the other hand, highly customizable. This is especially important in the light of working with large event logs.

Customization and efficiency are simultaneously achieved through the intensive use of C++ templates.

Industrial approach

Despite the fact the main purpose of the library is supporting academic research, it is designed and developed with repsect to best practices in the C++ application development industry.

The library is accompanied with a set of gtest-based unit tests. We also provided a number of demo applications.

Python frontend

We created an initial version of Python interface binding for the library. It allows to incorporate LDOPA with a wide range of Python libraries and creates complex experiment schemes by using the power of Python scripting language together with the efficiency of C++ based implementation.

The binding is created on the base of Boost.Python library.

Current state


The library is basically written in C++ 11 standard.

Initially, the library was developed by using Microsoft Visual Studio 2013 with a corresponding VC 12.0 compiler. The current version of source code is totally based on this toolchain.
Now, we are migrating the library to use CMake-based building engine and adopting the code to the latter version of GCC compiler (as a MinGW Windows port).


Since we shared the source code of the library, now we are deciding what is the most suitable license for our aims. Currently, you can use the code for non-commercial purposes for free.



In 2018, the work on the development of the library was supported by the RFBR according to the Research project No. 18-37-00438 “mol_a”.