openprocess 0.7.2__tar.gz → 0.10.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openprocess-0.7.2/openprocess.egg-info → openprocess-0.10.5}/PKG-INFO +98 -51
- {openprocess-0.7.2 → openprocess-0.10.5}/README.md +97 -50
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/__init__.py +1 -1
- openprocess-0.10.5/openprocess/citation.py +193 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/box.py +20 -1
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/discover.py +15 -1
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/input.py +48 -6
- openprocess-0.10.5/openprocess/flow/figures.py +54 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/library.py +2 -1
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/record.py +19 -4
- openprocess-0.10.5/openprocess/flow/report.py +270 -0
- openprocess-0.10.5/openprocess/flow/reproducibility.py +62 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/runner.py +23 -0
- openprocess-0.10.5/openprocess/flow/snapshots.py +179 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/types.py +4 -1
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/workflow.py +27 -7
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/canvas.py +8 -1
- openprocess-0.10.5/openprocess/gui/flow/__init__.py +9 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/flow/canvas.py +73 -5
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/flow/page.py +421 -214
- openprocess-0.10.5/openprocess/gui/flow/picker.py +292 -0
- openprocess-0.10.5/openprocess/gui/flow/runs.py +130 -0
- openprocess-0.10.5/openprocess/gui/flow/stepper.py +240 -0
- openprocess-0.10.5/openprocess/gui/flow/summary.py +199 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/flow/viewers.py +291 -50
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/app.py +771 -384
- openprocess-0.10.5/openprocess/gui/studio/cite.py +58 -0
- openprocess-0.10.5/openprocess/gui/studio/command_palette.py +162 -0
- openprocess-0.10.5/openprocess/gui/studio/connections.py +186 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/cpn_page.py +7 -9
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/documents.py +10 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/graph_builders.py +24 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/graph_view.py +60 -5
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/log_page.py +50 -17
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/model_page.py +31 -8
- openprocess-0.10.5/openprocess/gui/studio/motion.py +95 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/petri_page.py +24 -9
- openprocess-0.10.5/openprocess/gui/studio/provenance.py +66 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/regions_view.py +4 -1
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/sidebar.py +10 -3
- openprocess-0.10.5/openprocess/gui/studio/spaces.py +60 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/style.py +44 -6
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/widgets.py +71 -4
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/workspace.py +2 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/computed.py +1 -1
- openprocess-0.10.5/openprocess/mining/ocel.py +262 -0
- {openprocess-0.7.2 → openprocess-0.10.5/openprocess.egg-info}/PKG-INFO +98 -51
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/SOURCES.txt +20 -0
- openprocess-0.10.5/tests/test_citation.py +55 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_exercises_gui.py +15 -12
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_flow.py +99 -0
- openprocess-0.10.5/tests/test_flow_gui.py +1158 -0
- openprocess-0.10.5/tests/test_ocel.py +75 -0
- openprocess-0.10.5/tests/test_report.py +55 -0
- openprocess-0.10.5/tests/test_snapshots.py +55 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_studio_gui.py +308 -51
- openprocess-0.7.2/openprocess/gui/flow/__init__.py +0 -8
- openprocess-0.7.2/tests/test_flow_gui.py +0 -364
- {openprocess-0.7.2 → openprocess-0.10.5}/LICENSE +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/cpnpy/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/analysis/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/analysis/state_space.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/analysis/state_space_process.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/cli.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/1 Petri nets/Exercise 1.1 Order handling/answer.pnml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/1 Petri nets/Exercise 1.1 Order handling/question.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/2 Soundness/Exercise 2.1 Spot the flaw/answer.pnml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/2 Soundness/Exercise 2.1 Spot the flaw/net.pnml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/2 Soundness/Exercise 2.1 Spot the flaw/question.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/3 Discovery/Exercise 3.1 The alpha-algorithm/log.txt +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/3 Discovery/Exercise 3.1 The alpha-algorithm/question.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/4 Regions/Exercise 4.1 Regions of a transition system/question.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/4 Regions/Exercise 4.1 Regions of a transition system/ts.txt +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/5 Markings/Exercise 5.1 Markings and matrices/net.pnml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/5 Markings/Exercise 5.1 Markings and matrices/question.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/6 Inductive Miner/Exercise 6.1 Cuts and trees/log.txt +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/6 Inductive Miner/Exercise 6.1 Cuts and trees/question.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/log.txt +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/m1.pnml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/m2.pnml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/m3.pnml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/net.pnml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/question.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/pack.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/check.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/compare.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/cpn.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/filter.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/output.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/predict.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/science.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/sweeps.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/convert.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/datasets.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/explain.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/sweep.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/app.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/arc_editing.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/flow/templates.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/items.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/learn/answer_boxes.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/learn/concealment.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/learn/mode.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/panning.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/resources/openprocess-icon.png +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/__main__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/charts.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/compare_page.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/definition_view.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/derivation_view.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/dotted_chart.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/file_dialogs.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/filter_dialog.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/instances.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/log_editor.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/markdown_view.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/mathtext.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/ml_highlighter.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/net_comparison.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/notes_overlay.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/tool_icons.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/updates.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/workers.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/theme.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/tidy.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/io/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/io/cpn_reader.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/io/cpn_writer.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/answers.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/checks.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/context.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/exam.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/exercise-packs.md +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/importer.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/notation.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/pack.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/sheet.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/analysis.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/columns.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/compare_nets.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/conformance/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/conformance/alignments.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/conformance/quality.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/conformance/token_replay.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/csv_import.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/definitions.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/dfg.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/alpha.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/heuristics.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/inductive.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/state_regions.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/filtering.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/footprint.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/invariants.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/layout.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/log.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/petrinet.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/playout.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/pm4py_bridge.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/pnml.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/processtree.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/regions.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/stats.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/structure.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/transition_system.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/xes.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/ast_nodes.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/builtins.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/colorsets.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/errors.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/evaluator.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/lexer.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/multiset.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/parser.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/values.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/declarations.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/examples.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/net.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/plain.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/references.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/sim/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/sim/binding.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/sim/export.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/sim/simulator.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/__init__.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/answers.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/checks.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/pack.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/sheet.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/dependency_links.txt +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/entry_points.txt +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/requires.txt +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/top_level.txt +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/pyproject.toml +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/setup.cfg +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_arc_editing.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_colorsets.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_columns.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_cpn_course_model.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_definitions.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_hierarchy.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_io.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_learn.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_learn_gui.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_log_editing.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_mining.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_ml.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_multiset.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_regions.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_rename.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_simulation.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_state_space.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_teaching.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_tidy.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_updates.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_wf_structure.py +0 -0
- {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_workspace.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openprocess
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.5
|
|
4
4
|
Summary: Process mining, Petri nets and workflows in one open app: every algorithm visible, every result reproducible, every step teachable
|
|
5
5
|
Author: Sam Struthers
|
|
6
6
|
License: MIT
|
|
@@ -68,7 +68,7 @@ tools (and, until version 0.7, went by the name CPNpy):
|
|
|
68
68
|
| | What you can do | Instead of |
|
|
69
69
|
|---|---|---|
|
|
70
70
|
| **Petri nets & WF-nets** | Draw nets the way the lectures do. Get a soundness verdict with a counterexample for every violation, and replay it in the token game. Also: behavioural properties, P- and T-invariants, the footprint matrix, the reachability graph, PNML import and export. | WoPeD, ProM, pen and paper |
|
|
71
|
-
| **Process mining** | Import XES or CSV logs, or type textbook logs like `[<a,b,c>^3, <a,c>^2]`. Filter them, explore variants, the dotted chart and the process map. Discover models (α-algorithm, Inductive Miner, Heuristics Miner, state-based regions). Check conformance (token replay, alignments, precision…) and compare logs. | ProM, Disco |
|
|
71
|
+
| **Process mining** | Import XES or CSV logs, OCEL 2.0 object-centric logs, or type textbook logs like `[<a,b,c>^3, <a,c>^2]`. Filter them, explore variants, the dotted chart and the process map. Discover models (α-algorithm, Inductive Miner, Heuristics Miner, state-based regions). Check conformance (token replay, alignments, precision…) and compare logs. | ProM, Disco |
|
|
72
72
|
| **Coloured Petri nets** | Open, edit and save CPN Tools models (`.cpn`), hierarchical ones included. Step through or simulate them, compute the state space, and export a simulation as an event log to mine. | CPN Tools / CPN IDE |
|
|
73
73
|
| **Workflows** | Boxes on a canvas: a log, a miner, a fitness check, a comparison, a sweep over a setting, a prediction pipeline. Click a box to see its result, *how* it got there (the α-algorithm's eight steps, the replay per variant), its code and its settings. Change a setting and only what follows runs again. Saved as a `.cpnflow` file with everything needed to get the same numbers back. Your own algorithm is one Python function in a `boxes/` folder. | RapidProM |
|
|
74
74
|
| **Learn** | A mode of its own for worksheets, built on the app: answer in boxes on the sheet (sets, markings, matrices, cuts and trees, alignments, a net in the editor or a workflow on the canvas beside it) and press **Check**. Most answers are checked automatically, often against answers worked out from the given log or net. Packs are plain Markdown, can be exams with a clock and points, and a past exam imports as a skeleton pack. Demo exercises included. | Answer sheets, a notes app and guesswork |
|
|
@@ -244,11 +244,11 @@ handling (unsound — try Analysis)**.
|
|
|
244
244
|
2. Look through the tabs: *Overview*, *Variants*, *Cases*, *Dotted chart*,
|
|
245
245
|
*Process map*, *Footprint*. **Filter…** keeps part of the log as a new
|
|
246
246
|
log.
|
|
247
|
-
3. On the *Discover* tab, pick an algorithm
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
4.
|
|
251
|
-
|
|
247
|
+
3. On the *Discover* tab, pick an algorithm and press **Discover in Mine →**:
|
|
248
|
+
an analysis opens with the log and the miner connected and run. Click the
|
|
249
|
+
miner for its result, *How* it was derived, and the *Code* it ran.
|
|
250
|
+
4. **+ Add box ▸ Check fit** on that canvas, wired to the miner and the
|
|
251
|
+
log, scores fitness, precision and more, every step shown.
|
|
252
252
|
|
|
253
253
|
**Simulate a coloured net**
|
|
254
254
|
|
|
@@ -267,15 +267,22 @@ round.
|
|
|
267
267
|
|
|
268
268
|

|
|
269
269
|
|
|
270
|
+
**Three spaces, one folder.** The switcher at the top of the window picks
|
|
271
|
+
**Mine** (event logs and analyses), **Model** (Petri nets and coloured nets)
|
|
272
|
+
or **Learn** (exercises). Each has its own sidebar, so mining and modelling
|
|
273
|
+
never share a list; a document opens in its space, and the folder remembers
|
|
274
|
+
which space you were in.
|
|
275
|
+
|
|
270
276
|
**In the sidebar**
|
|
271
277
|
|
|
272
|
-
- **
|
|
273
|
-
that are not open yet are lighter:
|
|
274
|
-
(✕ or ⌘W) puts it back in that
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
278
|
+
- **Mine lists the folder's analyses**, and its logs folded under them.
|
|
279
|
+
**Model lists its models.** Files that are not open yet are lighter:
|
|
280
|
+
**click one to open it**. Closing a file (✕ or ⌘W) puts it back in that
|
|
281
|
+
state; it stays in the folder.
|
|
282
|
+
- **Flat lists, the same in both spaces.** The folder's own files first,
|
|
283
|
+
then each subfolder's under a caption naming it ("Week 5 / Part 1").
|
|
284
|
+
Nothing to unfold except LOGS. An empty folder shows in both spaces until
|
|
285
|
+
it has files.
|
|
279
286
|
- **Organise from the app**: right-click for **New Folder…**, **Rename…**,
|
|
280
287
|
**Show in Finder** and **Move to Bin** (recoverable from the Bin; never a
|
|
281
288
|
hard delete). **Drag files onto a subfolder** to move them on disk. An open
|
|
@@ -416,8 +423,10 @@ links to the definitions it builds on; **Help ▸ Definitions** lists them all.
|
|
|
416
423
|
a log's footprint (α-algorithm, footprint conformance).
|
|
417
424
|
- **Reachability graph…**, or a coverability graph with ω when the net is
|
|
418
425
|
unbounded.
|
|
419
|
-
- **
|
|
420
|
-
|
|
426
|
+
- **Check against a log ›** (Analysis tab) builds an analysis in Mine with
|
|
427
|
+
this net, a log you pick and *Check fit*, connected and run.
|
|
428
|
+
- Every analysis card has a **{ } code** link that opens the function it is
|
|
429
|
+
computed by, so nothing here is a black box.
|
|
421
430
|
|
|
422
431
|
| The counterexample, replayed | The footprint of the net |
|
|
423
432
|
|---|---|
|
|
@@ -428,8 +437,10 @@ links to the definitions it builds on; **Help ▸ Definitions** lists them all.
|
|
|
428
437
|
- **Step through / Simulate:** the token game, fired by hand or at random.
|
|
429
438
|
With **Trace** ticked, every fired transition shows its step numbers and
|
|
430
439
|
the arcs the tokens used light up, the latest step strongest.
|
|
431
|
-
- **
|
|
432
|
-
|
|
440
|
+
- **Mine a simulated log ›:** plays the net out many times, saves the traces
|
|
441
|
+
as a log in the folder and opens Mine on a new analysis reading it.
|
|
442
|
+
- **Check against a log ›** (Analysis tab): picks a log and opens Mine on a
|
|
443
|
+
new analysis with this net, the log and *Check fit*, connected and run.
|
|
433
444
|
- **Saving:** nets are saved as **PNML** (ProM, WoPeD and PM4Py read it), or
|
|
434
445
|
as `.cpn`. *Save As* names the net after its file. With a folder open, a
|
|
435
446
|
new net is `Untitled 1.pnml` in the folder from the start and is saved as
|
|
@@ -438,8 +449,9 @@ links to the definitions it builds on; **Help ▸ Definitions** lists them all.
|
|
|
438
449
|
- **Renaming:** double-click the net's name in the sidebar, or its title
|
|
439
450
|
above the canvas. The file is renamed with it, in the same folder (an
|
|
440
451
|
existing file is never overwritten).
|
|
441
|
-
- **Opening:** a `.pnml` file opens in this editor. A
|
|
442
|
-
has
|
|
452
|
+
- **Opening:** a `.pnml` file opens in this editor. A net discovered in Mine
|
|
453
|
+
has **Open a copy in Model ›** to bring a copy here; the original result is
|
|
454
|
+
never changed, and the copy's header links back to the analysis.
|
|
443
455
|
|
|
444
456
|

|
|
445
457
|
|
|
@@ -475,21 +487,24 @@ links to the definitions it builds on; **Help ▸ Definitions** lists them all.
|
|
|
475
487
|
- Time unit (Auto, or seconds up to years) and a grid step you can type in.
|
|
476
488
|
- Colour and shape by any attribute. The default palette can be changed
|
|
477
489
|
per value: right-click a value in the legend and pick its colour.
|
|
478
|
-
- **Discover
|
|
490
|
+
- **Discover** hands the log to an analysis in Mine (**Discover in Mine →**),
|
|
491
|
+
where the miner is a box with its result, its *How* and its *Code*:
|
|
479
492
|
- α-algorithm, which shows its eight steps;
|
|
480
|
-
- Inductive Miner
|
|
481
|
-
- Heuristics Miner, as a
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
+
- Inductive Miner (with a noise setting for IMf);
|
|
494
|
+
- Heuristics Miner, as a Petri net: which forks are AND and which XOR is
|
|
495
|
+
learned from the log (a causal net, whose bindings are listed). Like in
|
|
496
|
+
ProM, such a net fits its log but is not always sound;
|
|
497
|
+
- **state-based regions**, two-phase: *Classical states* turns the log
|
|
498
|
+
into a transition system through a state function you choose (the
|
|
499
|
+
prefix, postfix or both of each event; as a set, multiset or sequence;
|
|
500
|
+
over the last *k* events or all of them), and *Regions to net* makes its
|
|
501
|
+
minimal regions the places. The derivation shows the transition system,
|
|
502
|
+
the regions, GER and minimal pre- and post-regions of every event, state
|
|
503
|
+
separation and forward closure, and whether the net's reachability graph
|
|
504
|
+
is isomorphic to the transition system.
|
|
505
|
+
|
|
506
|
+
In Learn, an exercise's log page keeps the miners on the page, since the
|
|
507
|
+
exercise is the context there.
|
|
493
508
|
- **Transition systems** (File ▸ New Transition System…, or a `ts.txt` file):
|
|
494
509
|
type one as `s0 -a-> s1, s0 -b-> s2` and get the same region analysis and
|
|
495
510
|
synthesis. *Is this a region?* answers yes or no for any set of states
|
|
@@ -754,19 +769,47 @@ Miner, a fitness check), *Compare discovery* (three miners side by side),
|
|
|
754
769
|
confidence* (bootstrap intervals, a test and a plot; needs the `science`
|
|
755
770
|
extra) and *Predict the next activity*. Or start empty.
|
|
756
771
|
|
|
757
|
-
- **
|
|
758
|
-
|
|
759
|
-
|
|
772
|
+
- **The page is the canvas.** Its header has **Canvas | Summary**, then
|
|
773
|
+
**+ Add box**, **Run ▶**, and **⋯** for Re-run, Record, Export experiment
|
|
774
|
+
and Save. The sidebar beside it lists the folder's analyses and, folded
|
|
775
|
+
under them, its logs.
|
|
776
|
+
- **+ Add box** (or a double-click on the canvas) opens every box, by group:
|
|
777
|
+
the six core groups side by side (Input, Filter, Discover, Check, Compare,
|
|
778
|
+
Output) and one line for the rest (Science, Predict, Coloured nets, Sweep,
|
|
779
|
+
your own boxes) with *Show all*. Under *Input*, **the folder's own files**:
|
|
780
|
+
one click adds the box that reads the file, already set. Type to search
|
|
781
|
+
them all: "alpha" finds the α-algorithm, "boarding" the log; Enter adds the
|
|
782
|
+
first match.
|
|
783
|
+
- **Files flow into the canvas.** Drop a log, an OCEL 2.0 object-centric log
|
|
784
|
+
(`.jsonocel`), a PNML file, a .cpn or a ts.txt on the canvas and it becomes
|
|
785
|
+
its input box at that spot; an input
|
|
786
|
+
box names its file ("INPUT · boarding.xes"). *Open log…* and *Log from
|
|
787
|
+
notation…* in the sidebar land as boxes on the current analysis (or a new
|
|
788
|
+
one named after the file). In a box's **Settings**, *Choose…* picks the
|
|
789
|
+
file and the list beside it offers only the files the box can read.
|
|
790
|
+
- **Summary** is the key figure of every box, in one place: a tile per box,
|
|
791
|
+
in the order the boxes run (a score's first metric, a table's size, a
|
|
792
|
+
log's cases, a net's places and transitions). Nothing is computed there:
|
|
793
|
+
a tile is the box's result, as on the canvas, and a tile opens the box.
|
|
794
|
+
The process map under the tiles is the *Directly-follows graph* box's
|
|
795
|
+
result; an analysis without that box offers to add it in one click.
|
|
760
796
|
- **Connect** by dragging from the dot on the right of a box: while you drag,
|
|
761
797
|
only the inputs that take that kind of result light up, so a wrong
|
|
762
798
|
connection cannot be made. Click a wire and press Delete to remove it.
|
|
763
|
-
- **Click a box**
|
|
764
|
-
the
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
799
|
+
- **Click a box** and the side panel appears beside the canvas, on
|
|
800
|
+
**Result** (the net, the log's figures, the table, the figure; a log's
|
|
801
|
+
Result has *Open as log ›* for the dotted chart, process map, footprint,
|
|
802
|
+
variants and cases, and a net's has *Open a copy in Model ›*). A page
|
|
803
|
+
opened this way shows "‹ Back to <analysis>" above its title. A
|
|
804
|
+
discovered net can be tidied on the Result tab by dragging its places and
|
|
805
|
+
transitions (the layout is saved with the workflow); the net itself is not
|
|
806
|
+
changed there. Its other tabs: **How** (what the box reported: notes,
|
|
807
|
+
intermediate values, the derivation), **Code** (the box's few lines and,
|
|
808
|
+
under them, the actual algorithm it calls: the α-algorithm's eight steps,
|
|
809
|
+
the Inductive Miner's cuts, with the work each follows and *Whole file* for
|
|
810
|
+
the module) and **Settings** (a control per setting; *Sweep* a number over
|
|
811
|
+
a range). **⤢** opens the tab in a window of its own; **✕**, or a click
|
|
812
|
+
on the canvas, puts the panel away.
|
|
770
813
|
- **Only what changed runs again.** Every box shows a status dot: waiting,
|
|
771
814
|
running, done, failed (the error is on the Result tab; the rest keeps
|
|
772
815
|
working), or waiting for your OK.
|
|
@@ -780,16 +823,20 @@ extra) and *Predict the next activity*. Or start empty.
|
|
|
780
823
|
connections that reach outside; double-click it to open its own canvas,
|
|
781
824
|
⇧⌘G to ungroup. *Save as a box* in the side panel writes the group to
|
|
782
825
|
`boxes/`, so it is listed under *Yours* and can be used in any workflow.
|
|
783
|
-
- **
|
|
784
|
-
and *Use in a workflow* on the net canvas, open a workflow with that file
|
|
785
|
-
as its source.
|
|
786
|
-
- **Export experiment** writes a zip with the workflow file and its record,
|
|
826
|
+
- **Export experiment** (under ⋯) writes a zip with the workflow file and its record,
|
|
787
827
|
the inputs, your boxes, every result as a file (CSV, PNML, SVG, XES), a
|
|
788
828
|
`requirements.lock` and a README that says what was run: supplementary
|
|
789
829
|
material for a paper, which `openprocess run --check` can verify.
|
|
790
|
-
- **The
|
|
791
|
-
|
|
792
|
-
|
|
830
|
+
- **The side panel** resizes by dragging the gap beside it; double-click the
|
|
831
|
+
gap, or *View ▸ Reset Workflow Layout*, for its default width.
|
|
832
|
+
- **Connections** (at the bottom of the sidebar, or *View ▸ Connections*)
|
|
833
|
+
draws what flows in, OpenProcess and its boxes, what flows out, and the
|
|
834
|
+
optional tools (pandas, numpy, scipy, matplotlib, …) with whether each is
|
|
835
|
+
installed, how to install it and the boxes it brings. All of it is read
|
|
836
|
+
from the box library.
|
|
837
|
+
- **Motion** is kept short: a space switch, the side panel and Canvas ↔
|
|
838
|
+
Summary settle in a fifth of a second, and a box pulses once when it
|
|
839
|
+
finishes. `OPENPROCESS_NO_MOTION=1` turns it off.
|
|
793
840
|
|
|
794
841
|
## Workflows from Python
|
|
795
842
|
|
|
@@ -29,7 +29,7 @@ tools (and, until version 0.7, went by the name CPNpy):
|
|
|
29
29
|
| | What you can do | Instead of |
|
|
30
30
|
|---|---|---|
|
|
31
31
|
| **Petri nets & WF-nets** | Draw nets the way the lectures do. Get a soundness verdict with a counterexample for every violation, and replay it in the token game. Also: behavioural properties, P- and T-invariants, the footprint matrix, the reachability graph, PNML import and export. | WoPeD, ProM, pen and paper |
|
|
32
|
-
| **Process mining** | Import XES or CSV logs, or type textbook logs like `[<a,b,c>^3, <a,c>^2]`. Filter them, explore variants, the dotted chart and the process map. Discover models (α-algorithm, Inductive Miner, Heuristics Miner, state-based regions). Check conformance (token replay, alignments, precision…) and compare logs. | ProM, Disco |
|
|
32
|
+
| **Process mining** | Import XES or CSV logs, OCEL 2.0 object-centric logs, or type textbook logs like `[<a,b,c>^3, <a,c>^2]`. Filter them, explore variants, the dotted chart and the process map. Discover models (α-algorithm, Inductive Miner, Heuristics Miner, state-based regions). Check conformance (token replay, alignments, precision…) and compare logs. | ProM, Disco |
|
|
33
33
|
| **Coloured Petri nets** | Open, edit and save CPN Tools models (`.cpn`), hierarchical ones included. Step through or simulate them, compute the state space, and export a simulation as an event log to mine. | CPN Tools / CPN IDE |
|
|
34
34
|
| **Workflows** | Boxes on a canvas: a log, a miner, a fitness check, a comparison, a sweep over a setting, a prediction pipeline. Click a box to see its result, *how* it got there (the α-algorithm's eight steps, the replay per variant), its code and its settings. Change a setting and only what follows runs again. Saved as a `.cpnflow` file with everything needed to get the same numbers back. Your own algorithm is one Python function in a `boxes/` folder. | RapidProM |
|
|
35
35
|
| **Learn** | A mode of its own for worksheets, built on the app: answer in boxes on the sheet (sets, markings, matrices, cuts and trees, alignments, a net in the editor or a workflow on the canvas beside it) and press **Check**. Most answers are checked automatically, often against answers worked out from the given log or net. Packs are plain Markdown, can be exams with a clock and points, and a past exam imports as a skeleton pack. Demo exercises included. | Answer sheets, a notes app and guesswork |
|
|
@@ -205,11 +205,11 @@ handling (unsound — try Analysis)**.
|
|
|
205
205
|
2. Look through the tabs: *Overview*, *Variants*, *Cases*, *Dotted chart*,
|
|
206
206
|
*Process map*, *Footprint*. **Filter…** keeps part of the log as a new
|
|
207
207
|
log.
|
|
208
|
-
3. On the *Discover* tab, pick an algorithm
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
4.
|
|
212
|
-
|
|
208
|
+
3. On the *Discover* tab, pick an algorithm and press **Discover in Mine →**:
|
|
209
|
+
an analysis opens with the log and the miner connected and run. Click the
|
|
210
|
+
miner for its result, *How* it was derived, and the *Code* it ran.
|
|
211
|
+
4. **+ Add box ▸ Check fit** on that canvas, wired to the miner and the
|
|
212
|
+
log, scores fitness, precision and more, every step shown.
|
|
213
213
|
|
|
214
214
|
**Simulate a coloured net**
|
|
215
215
|
|
|
@@ -228,15 +228,22 @@ round.
|
|
|
228
228
|
|
|
229
229
|

|
|
230
230
|
|
|
231
|
+
**Three spaces, one folder.** The switcher at the top of the window picks
|
|
232
|
+
**Mine** (event logs and analyses), **Model** (Petri nets and coloured nets)
|
|
233
|
+
or **Learn** (exercises). Each has its own sidebar, so mining and modelling
|
|
234
|
+
never share a list; a document opens in its space, and the folder remembers
|
|
235
|
+
which space you were in.
|
|
236
|
+
|
|
231
237
|
**In the sidebar**
|
|
232
238
|
|
|
233
|
-
- **
|
|
234
|
-
that are not open yet are lighter:
|
|
235
|
-
(✕ or ⌘W) puts it back in that
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
239
|
+
- **Mine lists the folder's analyses**, and its logs folded under them.
|
|
240
|
+
**Model lists its models.** Files that are not open yet are lighter:
|
|
241
|
+
**click one to open it**. Closing a file (✕ or ⌘W) puts it back in that
|
|
242
|
+
state; it stays in the folder.
|
|
243
|
+
- **Flat lists, the same in both spaces.** The folder's own files first,
|
|
244
|
+
then each subfolder's under a caption naming it ("Week 5 / Part 1").
|
|
245
|
+
Nothing to unfold except LOGS. An empty folder shows in both spaces until
|
|
246
|
+
it has files.
|
|
240
247
|
- **Organise from the app**: right-click for **New Folder…**, **Rename…**,
|
|
241
248
|
**Show in Finder** and **Move to Bin** (recoverable from the Bin; never a
|
|
242
249
|
hard delete). **Drag files onto a subfolder** to move them on disk. An open
|
|
@@ -377,8 +384,10 @@ links to the definitions it builds on; **Help ▸ Definitions** lists them all.
|
|
|
377
384
|
a log's footprint (α-algorithm, footprint conformance).
|
|
378
385
|
- **Reachability graph…**, or a coverability graph with ω when the net is
|
|
379
386
|
unbounded.
|
|
380
|
-
- **
|
|
381
|
-
|
|
387
|
+
- **Check against a log ›** (Analysis tab) builds an analysis in Mine with
|
|
388
|
+
this net, a log you pick and *Check fit*, connected and run.
|
|
389
|
+
- Every analysis card has a **{ } code** link that opens the function it is
|
|
390
|
+
computed by, so nothing here is a black box.
|
|
382
391
|
|
|
383
392
|
| The counterexample, replayed | The footprint of the net |
|
|
384
393
|
|---|---|
|
|
@@ -389,8 +398,10 @@ links to the definitions it builds on; **Help ▸ Definitions** lists them all.
|
|
|
389
398
|
- **Step through / Simulate:** the token game, fired by hand or at random.
|
|
390
399
|
With **Trace** ticked, every fired transition shows its step numbers and
|
|
391
400
|
the arcs the tokens used light up, the latest step strongest.
|
|
392
|
-
- **
|
|
393
|
-
|
|
401
|
+
- **Mine a simulated log ›:** plays the net out many times, saves the traces
|
|
402
|
+
as a log in the folder and opens Mine on a new analysis reading it.
|
|
403
|
+
- **Check against a log ›** (Analysis tab): picks a log and opens Mine on a
|
|
404
|
+
new analysis with this net, the log and *Check fit*, connected and run.
|
|
394
405
|
- **Saving:** nets are saved as **PNML** (ProM, WoPeD and PM4Py read it), or
|
|
395
406
|
as `.cpn`. *Save As* names the net after its file. With a folder open, a
|
|
396
407
|
new net is `Untitled 1.pnml` in the folder from the start and is saved as
|
|
@@ -399,8 +410,9 @@ links to the definitions it builds on; **Help ▸ Definitions** lists them all.
|
|
|
399
410
|
- **Renaming:** double-click the net's name in the sidebar, or its title
|
|
400
411
|
above the canvas. The file is renamed with it, in the same folder (an
|
|
401
412
|
existing file is never overwritten).
|
|
402
|
-
- **Opening:** a `.pnml` file opens in this editor. A
|
|
403
|
-
has
|
|
413
|
+
- **Opening:** a `.pnml` file opens in this editor. A net discovered in Mine
|
|
414
|
+
has **Open a copy in Model ›** to bring a copy here; the original result is
|
|
415
|
+
never changed, and the copy's header links back to the analysis.
|
|
404
416
|
|
|
405
417
|

|
|
406
418
|
|
|
@@ -436,21 +448,24 @@ links to the definitions it builds on; **Help ▸ Definitions** lists them all.
|
|
|
436
448
|
- Time unit (Auto, or seconds up to years) and a grid step you can type in.
|
|
437
449
|
- Colour and shape by any attribute. The default palette can be changed
|
|
438
450
|
per value: right-click a value in the legend and pick its colour.
|
|
439
|
-
- **Discover
|
|
451
|
+
- **Discover** hands the log to an analysis in Mine (**Discover in Mine →**),
|
|
452
|
+
where the miner is a box with its result, its *How* and its *Code*:
|
|
440
453
|
- α-algorithm, which shows its eight steps;
|
|
441
|
-
- Inductive Miner
|
|
442
|
-
- Heuristics Miner, as a
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
+
- Inductive Miner (with a noise setting for IMf);
|
|
455
|
+
- Heuristics Miner, as a Petri net: which forks are AND and which XOR is
|
|
456
|
+
learned from the log (a causal net, whose bindings are listed). Like in
|
|
457
|
+
ProM, such a net fits its log but is not always sound;
|
|
458
|
+
- **state-based regions**, two-phase: *Classical states* turns the log
|
|
459
|
+
into a transition system through a state function you choose (the
|
|
460
|
+
prefix, postfix or both of each event; as a set, multiset or sequence;
|
|
461
|
+
over the last *k* events or all of them), and *Regions to net* makes its
|
|
462
|
+
minimal regions the places. The derivation shows the transition system,
|
|
463
|
+
the regions, GER and minimal pre- and post-regions of every event, state
|
|
464
|
+
separation and forward closure, and whether the net's reachability graph
|
|
465
|
+
is isomorphic to the transition system.
|
|
466
|
+
|
|
467
|
+
In Learn, an exercise's log page keeps the miners on the page, since the
|
|
468
|
+
exercise is the context there.
|
|
454
469
|
- **Transition systems** (File ▸ New Transition System…, or a `ts.txt` file):
|
|
455
470
|
type one as `s0 -a-> s1, s0 -b-> s2` and get the same region analysis and
|
|
456
471
|
synthesis. *Is this a region?* answers yes or no for any set of states
|
|
@@ -715,19 +730,47 @@ Miner, a fitness check), *Compare discovery* (three miners side by side),
|
|
|
715
730
|
confidence* (bootstrap intervals, a test and a plot; needs the `science`
|
|
716
731
|
extra) and *Predict the next activity*. Or start empty.
|
|
717
732
|
|
|
718
|
-
- **
|
|
719
|
-
|
|
720
|
-
|
|
733
|
+
- **The page is the canvas.** Its header has **Canvas | Summary**, then
|
|
734
|
+
**+ Add box**, **Run ▶**, and **⋯** for Re-run, Record, Export experiment
|
|
735
|
+
and Save. The sidebar beside it lists the folder's analyses and, folded
|
|
736
|
+
under them, its logs.
|
|
737
|
+
- **+ Add box** (or a double-click on the canvas) opens every box, by group:
|
|
738
|
+
the six core groups side by side (Input, Filter, Discover, Check, Compare,
|
|
739
|
+
Output) and one line for the rest (Science, Predict, Coloured nets, Sweep,
|
|
740
|
+
your own boxes) with *Show all*. Under *Input*, **the folder's own files**:
|
|
741
|
+
one click adds the box that reads the file, already set. Type to search
|
|
742
|
+
them all: "alpha" finds the α-algorithm, "boarding" the log; Enter adds the
|
|
743
|
+
first match.
|
|
744
|
+
- **Files flow into the canvas.** Drop a log, an OCEL 2.0 object-centric log
|
|
745
|
+
(`.jsonocel`), a PNML file, a .cpn or a ts.txt on the canvas and it becomes
|
|
746
|
+
its input box at that spot; an input
|
|
747
|
+
box names its file ("INPUT · boarding.xes"). *Open log…* and *Log from
|
|
748
|
+
notation…* in the sidebar land as boxes on the current analysis (or a new
|
|
749
|
+
one named after the file). In a box's **Settings**, *Choose…* picks the
|
|
750
|
+
file and the list beside it offers only the files the box can read.
|
|
751
|
+
- **Summary** is the key figure of every box, in one place: a tile per box,
|
|
752
|
+
in the order the boxes run (a score's first metric, a table's size, a
|
|
753
|
+
log's cases, a net's places and transitions). Nothing is computed there:
|
|
754
|
+
a tile is the box's result, as on the canvas, and a tile opens the box.
|
|
755
|
+
The process map under the tiles is the *Directly-follows graph* box's
|
|
756
|
+
result; an analysis without that box offers to add it in one click.
|
|
721
757
|
- **Connect** by dragging from the dot on the right of a box: while you drag,
|
|
722
758
|
only the inputs that take that kind of result light up, so a wrong
|
|
723
759
|
connection cannot be made. Click a wire and press Delete to remove it.
|
|
724
|
-
- **Click a box**
|
|
725
|
-
the
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
760
|
+
- **Click a box** and the side panel appears beside the canvas, on
|
|
761
|
+
**Result** (the net, the log's figures, the table, the figure; a log's
|
|
762
|
+
Result has *Open as log ›* for the dotted chart, process map, footprint,
|
|
763
|
+
variants and cases, and a net's has *Open a copy in Model ›*). A page
|
|
764
|
+
opened this way shows "‹ Back to <analysis>" above its title. A
|
|
765
|
+
discovered net can be tidied on the Result tab by dragging its places and
|
|
766
|
+
transitions (the layout is saved with the workflow); the net itself is not
|
|
767
|
+
changed there. Its other tabs: **How** (what the box reported: notes,
|
|
768
|
+
intermediate values, the derivation), **Code** (the box's few lines and,
|
|
769
|
+
under them, the actual algorithm it calls: the α-algorithm's eight steps,
|
|
770
|
+
the Inductive Miner's cuts, with the work each follows and *Whole file* for
|
|
771
|
+
the module) and **Settings** (a control per setting; *Sweep* a number over
|
|
772
|
+
a range). **⤢** opens the tab in a window of its own; **✕**, or a click
|
|
773
|
+
on the canvas, puts the panel away.
|
|
731
774
|
- **Only what changed runs again.** Every box shows a status dot: waiting,
|
|
732
775
|
running, done, failed (the error is on the Result tab; the rest keeps
|
|
733
776
|
working), or waiting for your OK.
|
|
@@ -741,16 +784,20 @@ extra) and *Predict the next activity*. Or start empty.
|
|
|
741
784
|
connections that reach outside; double-click it to open its own canvas,
|
|
742
785
|
⇧⌘G to ungroup. *Save as a box* in the side panel writes the group to
|
|
743
786
|
`boxes/`, so it is listed under *Yours* and can be used in any workflow.
|
|
744
|
-
- **
|
|
745
|
-
and *Use in a workflow* on the net canvas, open a workflow with that file
|
|
746
|
-
as its source.
|
|
747
|
-
- **Export experiment** writes a zip with the workflow file and its record,
|
|
787
|
+
- **Export experiment** (under ⋯) writes a zip with the workflow file and its record,
|
|
748
788
|
the inputs, your boxes, every result as a file (CSV, PNML, SVG, XES), a
|
|
749
789
|
`requirements.lock` and a README that says what was run: supplementary
|
|
750
790
|
material for a paper, which `openprocess run --check` can verify.
|
|
751
|
-
- **The
|
|
752
|
-
|
|
753
|
-
|
|
791
|
+
- **The side panel** resizes by dragging the gap beside it; double-click the
|
|
792
|
+
gap, or *View ▸ Reset Workflow Layout*, for its default width.
|
|
793
|
+
- **Connections** (at the bottom of the sidebar, or *View ▸ Connections*)
|
|
794
|
+
draws what flows in, OpenProcess and its boxes, what flows out, and the
|
|
795
|
+
optional tools (pandas, numpy, scipy, matplotlib, …) with whether each is
|
|
796
|
+
installed, how to install it and the boxes it brings. All of it is read
|
|
797
|
+
from the box library.
|
|
798
|
+
- **Motion** is kept short: a space switch, the side panel and Canvas ↔
|
|
799
|
+
Summary settle in a fifth of a second, and a box pulses once when it
|
|
800
|
+
finishes. `OPENPROCESS_NO_MOTION=1` turns it off.
|
|
754
801
|
|
|
755
802
|
## Workflows from Python
|
|
756
803
|
|
|
@@ -48,7 +48,7 @@ from .sim.simulator import Simulator
|
|
|
48
48
|
#: The one place the version number is written (pyproject.toml, the update
|
|
49
49
|
#: check and packaging/build.py read it from here). A release is tagged
|
|
50
50
|
#: "v" + this, e.g. v0.2.0.
|
|
51
|
-
__version__ = "0.
|
|
51
|
+
__version__ = "0.10.5"
|
|
52
52
|
|
|
53
53
|
__all__ = [
|
|
54
54
|
"Arc", "BindingElement", "CPNet", "Marking", "Multiset", "Page", "Place",
|