Skip to content
v0.2.1

Ocelescope - Object-Centric Process Mining

// OBJECT-CENTRIC PROCESS MINING

An extensible web framework for object-centric process mining.

Upload an OCEL log, filter it down, discover models, and extend everything with plugins. Spin it up with Docker and analyze in minutes - entirely in your browser.

Open source Runs locally Docker RWTH PADS
bash
# two commands and you are running $ curl -LO https://www.ocelescope.org/docker-compose.yaml $ docker compose up -d ok backend ghcr.io/promi4s/ocelescope-backend ok frontend http://localhost:3000 Ocelescope is ready.
OCEL 2.0 PM4PY-compatible Plugin marketplace Custom React modules Self-hosted

LOG OVERVIEW

Understand any OCEL log at a glance.

Upload a log and Ocelescope profiles it instantly: events and objects, every type, attribute value ranges and the time span they cover. Know what you are working with before you write a single query.

eventsobjectsobject & event typesvalue rangestime ranges
localhost:3000/logOverview
log-overview

FILTER CONSTRUCTOR

Carve a large log down to the slice you need.

Compose filters visually to shrink an OCEL. Stack conditions across object and event types, attribute values, time windows and the existence of O2O or E2O relations - then carry the reduced log straight into discovery.

object-type & event-type selectionattribute-value conditionstime-range windowsO2O & E2O existence filters
localhost:3000/filter
filter constructor

DISCOVERY

Discover models - and add your own methods.

Out of the box, the discovery tab renders object-centric Petri nets and directly-follows graphs. Need a different algorithm? Define it plugin-style, upload the zip, and it appears as a selectable method right in the tab.

OC Petri netsdirectly-follows graphs+ your method
localhost:3000/discovery
discovery

WHY OCELESCOPE

Ocelescope is where research code becomes reusable software.

Ocelescope provides a plugin system to integrate new funtionality at runtime. A method should not disappear into a one-off prototype for publication. Package it, upload it, run it, and let others build on it.

BUILD A PLUGIN

Declare your parameters. Ocelescope renders the UI.

No frontend work. Type your plugin inputs in Python and the form on the right is generated for you.

from typing import Annotated

from ocelescope import (
    OCEL,
    OCELAnnotation,
    Plugin,
    plugin_method,
)

from .input import OCELGraphInput
from .resource import OCELGraph
from .util import mine_ocel_graph


class OcelGraphDiscovery(Plugin):
    label = "Ocel Graph"
    description = "Discovers a Object-Centric event log graph"
    version = "1.0.3"

    @plugin_method(label="Mine OCEL Graph", description="Mines a OCEL Graph")
    def mine_ocel_graph(
        self,
        ocel: Annotated[
            OCEL,
            OCELAnnotation(label="Event Log", description="The log from which the ocel graph should be mined from"),
        ],
        input: OCELGraphInput,
    ) -> OCELGraph:
        return mine_ocel_graph(ocel, input)
localhost:3000/plugin/ocel-graph
auto-generated plugin UI

EXTENSIBLE UI

When a form is not enough, ship a full module.

Each plugin gets a generated page. For richer workflows, custom React modules mount as first-class views. This way, the OCELOT module was integrated.

per-plugin pagescustom React modulesOcelot module
localhost:3000/modules/ocelot
OCELOT module

GET STARTED

Running in two commands.

Download the compose file, start the stack, and open the frontend on localhost.

bash
$ curl -LO https://www.ocelescope.org/docker-compose.yaml $ docker compose up -d ok backend ghcr.io/promi4s/ocelescope-backend ok frontend http://localhost:3000 Ocelescope is ready.