The conformance checks zone runs the conformance checking computation via a [Python recipe](recipe:compute_conformance_checks_1).

![Conformance Checks.png](y4sidKSv9aRu)

The reference process is defined by default as the top 5 variants. It will then be edited if the user saves another reference process in the webapp.

As described in this [article](article:35) conformance checks consist in assessing how 'fit' traces are relative to a reference process. The Python recipe takes the cleaned and augmented [workflow dataset](dataset:workflow_with_variants) and the [reference process dataset](dataset:reference_process) as inputs. The traces from the cleaned workflow dataset are checked against the reference process defined by its list of variants. 

In the recipe, each trace is reduced to its variant since conformance checks are only about the sequence of events in this context. For each variant found in the data, the alignment score with each of the variants from the reference process is computed, then the max alignment score is kept for each variant. 

The initial dataset is grouped by case id and we join the alignment score to it. As we will keep only one row per case for conformance checks other columns (timestamp and additional columns) are aggregated: the start time is taken for the timestamp column, and the last value is taken for each additional column. These additional attributes are joined to the conformance checks dataframe to output the [conformance_checks](dataset:conformance_checks) dataset.

Trace conformance and trace is conform columns are computed based on the score directly outputted from the algorithm.

A final join adds case-level information contained in other datasets to build the [cases dataset](dataset:cases). This dataset is then exposed in the dashboard and used to provide filters on traces.


