pm4py.algo.evaluation.precision.variants.automaton_after_align module#

PM4Py – A Process Mining Library for Python Copyright (C) 2026 Process Intelligence Solutions GmbH

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

class pm4py.algo.evaluation.precision.variants.automaton_after_align.Parameters(*values)[source]#

Bases: Enum

ACTIVITY_KEY = 'pm4py:param:activity_key'#
CASE_ID_KEY = 'pm4py:param:case_id_key'#
TOKEN_REPLAY_VARIANT = 'token_replay_variant'#
CLEANING_TOKEN_FLOOD = 'cleaning_token_flood'#
SHOW_PROGRESS_BAR = 'show_progress_bar'#
MULTIPROCESSING = 'multiprocessing'#
CORES = 'cores'#
USE_TASK_IDS = 'use_task_ids'#
pm4py.algo.evaluation.precision.variants.automaton_after_align.apply(log: EventLog | EventStream | DataFrame, net: PetriNet, im: Marking, fm: Marking, parameters: Dict[str | Parameters, Any] | None = None) → float[source]#

Alignment-based ETC precision (per “Measuring precision of modeled behavior”).

Summary of approach (Λ1 case):
  1. compute one optimal alignment per trace variant

  2. build the alignment automaton from λ̄(γ) (projection of model moves)

  3. compute precision from escaping edges:

    precision = 1 - (Σ ω(s)*|a_v(s) e_x(s)|) / (Σ ω(s)*|a_v(s)|)

Fixes vs the original snippet:
  • empty-prefix executed set taken from aligned sequences (not raw log)

  • available actions aggregated over all markings reached by the same prefix

  • tuple prefixes instead of comma-joined strings

  • robust log conversion and trace counting