pm4py.algo.discovery.dcr_discover.extenstions package#

Submodules#

pm4py.algo.discovery.dcr_discover.extenstions.nesting module#

class pm4py.algo.discovery.dcr_discover.extenstions.nesting.NestVariants(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Bases: Enum

CHOICE = 1#
NEST = 2#
CHOICE_NEST = 3#
pm4py.algo.discovery.dcr_discover.extenstions.nesting.apply(graph, parameters)[source]#

this method calls the nesting miner

Parameters#

log: EventLog | pandas.Dataframe

Event log to use in the role miner

graph: DCR_Graph

Dcr graph to apply additional attributes to

parameters
Parameters of the algorithm, including:

nest_variant : the nesting algorithm to use from the enum above: CHOICE|NEST|CHOICE_NEST

Returns#

:class:´GroupSubprocessDcrGraph`

return a DCR graph, that contains nested groups

class pm4py.algo.discovery.dcr_discover.extenstions.nesting.NestingMining[source]#

Bases: object

The NestingMining provides a simple algorithm to mine nestings

After initialization, user can call mine(log, G, parameters), which will return a DCR Graph with nested groups.

Reference paper: Cosma et al. “Improving Simplicity by Discovering Nested Groups in Declarative Models” https://doi.org/10.1007/978-3-031-61057-8_26 Attributes ———- graph: Dict[str,Any]

A template that will be used collecting organizational data

Methods#

mine(log, G, parameters)

calls the main mining function, extract nested groups

Notes#

mine(graph, parameters: Dict[str, Any] | None)[source]#

Main nested groups mining algorithm

Parameters#

graph: DCRGraph

DCR graph to append additional attributes

parameters: Optional[Dict[str, Any]]

optional parameters used for role mining

Returns#

NestedDCRGraph(G, dcr)

returns a DCR graph with nested groups

apply_choice(graph)[source]#
apply_nest(graph)[source]#
class pm4py.algo.discovery.dcr_discover.extenstions.nesting.Choice[source]#

Bases: object

apply_choice(graph)[source]#
get_mutual_exclusions(dcr, i: int | None = 0)[source]#

Get nested groups based on cliques. Updates the self.nesting_template dict Parameters ———- dcr

A core Dcr Graph as mined from the DisCoveR miner

i

An integer seed for the naming of choice groups

Returns#

get_mutually_excluding_graph(graph)[source]#
class pm4py.algo.discovery.dcr_discover.extenstions.nesting.Nesting[source]#

Bases: object

encode(G)[source]#
get_opposite_rel_dict_str(relStr, direction, event, nestingId)[source]#
create_encoding(dcr_graph)[source]#
find_largest_nesting(events_source, parent_nesting=None)[source]#
nest(events_source)[source]#
remove_redundant_nestings()[source]#
should_add(rel, direction)[source]#
get_nested_dcr_graph(graph, existing_nestings=None)[source]#

pm4py.algo.discovery.dcr_discover.extenstions.pending module#

pm4py.algo.discovery.dcr_discover.extenstions.pending.apply(log: DataFrame | EventLog, graph: DcrGraph, parameters)[source]#

An extension to the DCR Graphs discovery algorithm for the discovery of initially pending events Parameters ———- log

Event log / Pandas dataframe

graph

DCR Graph

ignore_lifecycle

If True it does not take into account the ‘lifecycle:transition’ attribute of the log event else False

Returns#

An updated DCR Graph with the Pending Marking updated to contain initially pending events

pm4py.algo.discovery.dcr_discover.extenstions.roles module#

pm4py.algo.discovery.dcr_discover.extenstions.roles.apply(log, graph, parameters) DistributedDcrGraph[source]#

this method calls the role miner

Parameters#

log: EventLog | pandas.Dataframe

Event log to use in the role miner

graph: DCRGraph

Dcr graph to apply additional attributes to

parameters
Parameters of the algorithm, including:

activity_key: activity identifier, used for assigning the events to resource_key: resource identifier, used to determine the principals and role assignmed if specified group_key: group identifier, used to determine the access right, i.e. the Role assignments for event in log

Returns#

:class:´RoleDCR_Graph`

return a DCR graph, that contains organizational attributes

class pm4py.algo.discovery.dcr_discover.extenstions.roles.RoleMining[source]#

Bases: object

The RoleMining provides a simple algorithm to mine for organizational data of an event log for DCR graphs

After initialization, user can call mine(log, G, parameters), which will return a DCR Graph with distributed.

Attributes#

graph: Dict[str,Any]

A template that will be used collecting organizational data

Methods#

mine(log, G, parameters)

calls the main mining function, extract distributed and principals from the log and perform rol

Notes#

  • NaN values are disregarded, if event in log has event with both, it will not store NaN as a role assignment

  • Currently no useful implementation for analysis of principalsAssignments, but is included for future improvement

mine(log: DataFrame | EventLog, graph: DcrGraph, parameters: Dict[str, Any] | None)[source]#

Main role mine algorithm, will mine for principals and distributed in a DCR graphs, and associated role assignment. determine principals, distributed and roleAssignment through unique occurrences in log.

Parameters#

log: pandas.DataFrame | EventLog

Event log used for mining

graph: DCRGraph

DCR graph to append additional attributes

parameters: Optional[Dict[str, Any]]

optional parameters used for role mining

Returns#

RoleDCR_Graph(G, dcr)

returns a DCR graph with organizational attributes, store in a variant of DCR pm4py.objects.dcr.distributed.obj.RoleDCR_Graph

pm4py.algo.discovery.dcr_discover.extenstions.time_constraints module#

pm4py.algo.discovery.dcr_discover.extenstions.time_constraints.apply(log, graph: DcrGraph, parameters) TimedDcrGraph[source]#

this method calls the time miner

Parameters#

log: EventLog | pandas.Dataframe

Event log to use in the time miner

graph: DCR_Graph

Dcr graph to apply additional attributes to

parameters

Parameters of the algorithm, including:

Returns#

:class:´TimedDcrGraph`

return a DCR graph

class pm4py.algo.discovery.dcr_discover.extenstions.time_constraints.TimeMining[source]#

Bases: object

The TimeMining provides a simple algorithm to mine timing data of an event log for DCR graphs

After initialization, user can call mine(log, G, parameters), which will return a DCR Graph with time.

Attributes#

graph: Dict[str,Any]

Methods#

mine(log, G, parameters)

Notes#

get_log_with_pair(event_log, e1, e2)[source]#

when selecting the case ids (cids) here there is a difference when taking strictly less than < and strictly less than or equal <= Less than or equal <= allows for instant executions (so a time of 0 between events e1 and e2)

get_delta_between_events(filtered_df, event_pair, rule=None)[source]#
mine(log: DataFrame | EventLog, graph, parameters: Dict[str, Any] | None)[source]#

Module contents#