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.
Files changed (226) hide show
  1. {openprocess-0.7.2/openprocess.egg-info → openprocess-0.10.5}/PKG-INFO +98 -51
  2. {openprocess-0.7.2 → openprocess-0.10.5}/README.md +97 -50
  3. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/__init__.py +1 -1
  4. openprocess-0.10.5/openprocess/citation.py +193 -0
  5. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/box.py +20 -1
  6. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/discover.py +15 -1
  7. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/input.py +48 -6
  8. openprocess-0.10.5/openprocess/flow/figures.py +54 -0
  9. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/library.py +2 -1
  10. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/record.py +19 -4
  11. openprocess-0.10.5/openprocess/flow/report.py +270 -0
  12. openprocess-0.10.5/openprocess/flow/reproducibility.py +62 -0
  13. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/runner.py +23 -0
  14. openprocess-0.10.5/openprocess/flow/snapshots.py +179 -0
  15. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/types.py +4 -1
  16. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/workflow.py +27 -7
  17. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/canvas.py +8 -1
  18. openprocess-0.10.5/openprocess/gui/flow/__init__.py +9 -0
  19. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/flow/canvas.py +73 -5
  20. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/flow/page.py +421 -214
  21. openprocess-0.10.5/openprocess/gui/flow/picker.py +292 -0
  22. openprocess-0.10.5/openprocess/gui/flow/runs.py +130 -0
  23. openprocess-0.10.5/openprocess/gui/flow/stepper.py +240 -0
  24. openprocess-0.10.5/openprocess/gui/flow/summary.py +199 -0
  25. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/flow/viewers.py +291 -50
  26. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/app.py +771 -384
  27. openprocess-0.10.5/openprocess/gui/studio/cite.py +58 -0
  28. openprocess-0.10.5/openprocess/gui/studio/command_palette.py +162 -0
  29. openprocess-0.10.5/openprocess/gui/studio/connections.py +186 -0
  30. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/cpn_page.py +7 -9
  31. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/documents.py +10 -0
  32. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/graph_builders.py +24 -0
  33. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/graph_view.py +60 -5
  34. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/log_page.py +50 -17
  35. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/model_page.py +31 -8
  36. openprocess-0.10.5/openprocess/gui/studio/motion.py +95 -0
  37. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/petri_page.py +24 -9
  38. openprocess-0.10.5/openprocess/gui/studio/provenance.py +66 -0
  39. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/regions_view.py +4 -1
  40. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/sidebar.py +10 -3
  41. openprocess-0.10.5/openprocess/gui/studio/spaces.py +60 -0
  42. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/style.py +44 -6
  43. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/widgets.py +71 -4
  44. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/workspace.py +2 -0
  45. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/computed.py +1 -1
  46. openprocess-0.10.5/openprocess/mining/ocel.py +262 -0
  47. {openprocess-0.7.2 → openprocess-0.10.5/openprocess.egg-info}/PKG-INFO +98 -51
  48. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/SOURCES.txt +20 -0
  49. openprocess-0.10.5/tests/test_citation.py +55 -0
  50. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_exercises_gui.py +15 -12
  51. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_flow.py +99 -0
  52. openprocess-0.10.5/tests/test_flow_gui.py +1158 -0
  53. openprocess-0.10.5/tests/test_ocel.py +75 -0
  54. openprocess-0.10.5/tests/test_report.py +55 -0
  55. openprocess-0.10.5/tests/test_snapshots.py +55 -0
  56. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_studio_gui.py +308 -51
  57. openprocess-0.7.2/openprocess/gui/flow/__init__.py +0 -8
  58. openprocess-0.7.2/tests/test_flow_gui.py +0 -364
  59. {openprocess-0.7.2 → openprocess-0.10.5}/LICENSE +0 -0
  60. {openprocess-0.7.2 → openprocess-0.10.5}/cpnpy/__init__.py +0 -0
  61. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/analysis/__init__.py +0 -0
  62. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/analysis/state_space.py +0 -0
  63. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/analysis/state_space_process.py +0 -0
  64. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/cli.py +0 -0
  65. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/1 Petri nets/Exercise 1.1 Order handling/answer.pnml +0 -0
  66. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/1 Petri nets/Exercise 1.1 Order handling/question.md +0 -0
  67. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/2 Soundness/Exercise 2.1 Spot the flaw/answer.pnml +0 -0
  68. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/2 Soundness/Exercise 2.1 Spot the flaw/net.pnml +0 -0
  69. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/2 Soundness/Exercise 2.1 Spot the flaw/question.md +0 -0
  70. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/3 Discovery/Exercise 3.1 The alpha-algorithm/log.txt +0 -0
  71. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/3 Discovery/Exercise 3.1 The alpha-algorithm/question.md +0 -0
  72. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/4 Regions/Exercise 4.1 Regions of a transition system/question.md +0 -0
  73. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/4 Regions/Exercise 4.1 Regions of a transition system/ts.txt +0 -0
  74. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/5 Markings/Exercise 5.1 Markings and matrices/net.pnml +0 -0
  75. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/5 Markings/Exercise 5.1 Markings and matrices/question.md +0 -0
  76. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/6 Inductive Miner/Exercise 6.1 Cuts and trees/log.txt +0 -0
  77. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/6 Inductive Miner/Exercise 6.1 Cuts and trees/question.md +0 -0
  78. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/log.txt +0 -0
  79. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/m1.pnml +0 -0
  80. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/m2.pnml +0 -0
  81. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/m3.pnml +0 -0
  82. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/net.pnml +0 -0
  83. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/7 Conformance/Exercise 7.1 Replay, alignments and workflows/question.md +0 -0
  84. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/exercises/pack.md +0 -0
  85. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/__init__.py +0 -0
  86. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/__init__.py +0 -0
  87. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/check.py +0 -0
  88. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/compare.py +0 -0
  89. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/cpn.py +0 -0
  90. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/filter.py +0 -0
  91. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/output.py +0 -0
  92. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/predict.py +0 -0
  93. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/science.py +0 -0
  94. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/boxes/sweeps.py +0 -0
  95. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/convert.py +0 -0
  96. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/datasets.py +0 -0
  97. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/explain.py +0 -0
  98. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/flow/sweep.py +0 -0
  99. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/__init__.py +0 -0
  100. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/app.py +0 -0
  101. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/arc_editing.py +0 -0
  102. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/flow/templates.py +0 -0
  103. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/items.py +0 -0
  104. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/learn/answer_boxes.py +0 -0
  105. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/learn/concealment.py +0 -0
  106. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/learn/mode.py +0 -0
  107. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/panning.py +0 -0
  108. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/resources/openprocess-icon.png +0 -0
  109. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/__init__.py +0 -0
  110. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/__main__.py +0 -0
  111. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/charts.py +0 -0
  112. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/compare_page.py +0 -0
  113. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/definition_view.py +0 -0
  114. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/derivation_view.py +0 -0
  115. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/dotted_chart.py +0 -0
  116. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/file_dialogs.py +0 -0
  117. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/filter_dialog.py +0 -0
  118. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/instances.py +0 -0
  119. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/log_editor.py +0 -0
  120. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/markdown_view.py +0 -0
  121. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/mathtext.py +0 -0
  122. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/ml_highlighter.py +0 -0
  123. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/net_comparison.py +0 -0
  124. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/notes_overlay.py +0 -0
  125. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/tool_icons.py +0 -0
  126. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/updates.py +0 -0
  127. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/studio/workers.py +0 -0
  128. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/theme.py +0 -0
  129. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/gui/tidy.py +0 -0
  130. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/io/__init__.py +0 -0
  131. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/io/cpn_reader.py +0 -0
  132. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/io/cpn_writer.py +0 -0
  133. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/__init__.py +0 -0
  134. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/answers.py +0 -0
  135. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/checks.py +0 -0
  136. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/context.py +0 -0
  137. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/exam.py +0 -0
  138. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/exercise-packs.md +0 -0
  139. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/importer.py +0 -0
  140. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/notation.py +0 -0
  141. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/pack.py +0 -0
  142. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/learn/sheet.py +0 -0
  143. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/__init__.py +0 -0
  144. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/analysis.py +0 -0
  145. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/columns.py +0 -0
  146. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/compare_nets.py +0 -0
  147. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/conformance/__init__.py +0 -0
  148. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/conformance/alignments.py +0 -0
  149. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/conformance/quality.py +0 -0
  150. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/conformance/token_replay.py +0 -0
  151. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/csv_import.py +0 -0
  152. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/definitions.py +0 -0
  153. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/dfg.py +0 -0
  154. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/__init__.py +0 -0
  155. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/alpha.py +0 -0
  156. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/heuristics.py +0 -0
  157. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/inductive.py +0 -0
  158. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/discovery/state_regions.py +0 -0
  159. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/filtering.py +0 -0
  160. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/footprint.py +0 -0
  161. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/invariants.py +0 -0
  162. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/layout.py +0 -0
  163. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/log.py +0 -0
  164. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/petrinet.py +0 -0
  165. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/playout.py +0 -0
  166. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/pm4py_bridge.py +0 -0
  167. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/pnml.py +0 -0
  168. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/processtree.py +0 -0
  169. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/regions.py +0 -0
  170. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/stats.py +0 -0
  171. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/structure.py +0 -0
  172. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/transition_system.py +0 -0
  173. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/mining/xes.py +0 -0
  174. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/__init__.py +0 -0
  175. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/ast_nodes.py +0 -0
  176. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/builtins.py +0 -0
  177. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/colorsets.py +0 -0
  178. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/errors.py +0 -0
  179. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/evaluator.py +0 -0
  180. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/lexer.py +0 -0
  181. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/multiset.py +0 -0
  182. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/parser.py +0 -0
  183. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/ml/values.py +0 -0
  184. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/__init__.py +0 -0
  185. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/declarations.py +0 -0
  186. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/examples.py +0 -0
  187. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/net.py +0 -0
  188. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/model/plain.py +0 -0
  189. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/references.py +0 -0
  190. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/sim/__init__.py +0 -0
  191. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/sim/binding.py +0 -0
  192. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/sim/export.py +0 -0
  193. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/sim/simulator.py +0 -0
  194. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/__init__.py +0 -0
  195. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/answers.py +0 -0
  196. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/checks.py +0 -0
  197. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/pack.py +0 -0
  198. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess/teaching/sheet.py +0 -0
  199. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/dependency_links.txt +0 -0
  200. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/entry_points.txt +0 -0
  201. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/requires.txt +0 -0
  202. {openprocess-0.7.2 → openprocess-0.10.5}/openprocess.egg-info/top_level.txt +0 -0
  203. {openprocess-0.7.2 → openprocess-0.10.5}/pyproject.toml +0 -0
  204. {openprocess-0.7.2 → openprocess-0.10.5}/setup.cfg +0 -0
  205. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_arc_editing.py +0 -0
  206. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_colorsets.py +0 -0
  207. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_columns.py +0 -0
  208. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_cpn_course_model.py +0 -0
  209. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_definitions.py +0 -0
  210. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_hierarchy.py +0 -0
  211. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_io.py +0 -0
  212. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_learn.py +0 -0
  213. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_learn_gui.py +0 -0
  214. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_log_editing.py +0 -0
  215. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_mining.py +0 -0
  216. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_ml.py +0 -0
  217. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_multiset.py +0 -0
  218. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_regions.py +0 -0
  219. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_rename.py +0 -0
  220. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_simulation.py +0 -0
  221. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_state_space.py +0 -0
  222. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_teaching.py +0 -0
  223. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_tidy.py +0 -0
  224. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_updates.py +0 -0
  225. {openprocess-0.7.2 → openprocess-0.10.5}/tests/test_wf_structure.py +0 -0
  226. {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.7.2
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: the model and how it was
248
- derived update straight away. **Open as model →** adds the result to the sidebar (under **MODELS**, or
249
- **UNSAVED** in a folder until you press **Keep** to save it there).
250
- 4. On the model's *Conformance* tab, choose a log and press **Check
251
- conformance**.
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
  ![The folder Week 2 in the sidebar, with its subfolders, one net open and the others listed](docs/screenshots/workspace.png)
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
- - **Every event log and net in the folder** is listed, open or not. Files
273
- that are not open yet are lighter: **click one to open it**. Closing a file
274
- (✕ or ⌘W) puts it back in that state; it stays in the folder.
275
- - **Folders** shows the folder as it is on disk, with collapsible subfolders
276
- (folders first, then files, by name). **By kind** groups the files into
277
- event logs, Petri nets and coloured nets instead. The choice, and which
278
- subfolders are open, is remembered for each folder.
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
- - **Conformance with a log…** opens the net as a model next to your logs,
420
- for token replay and alignments.
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
- - **Generate event log…:** plays the net out many times and opens the
432
- traces as a log.
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 model you discovered
442
- has **✎ Edit a copy** to bring it here.
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
  ![Renaming a transition in place](docs/screenshots/petri-editing.png)
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 and IMf;
481
- - Heuristics Miner, as a dependency graph or as a Petri net: which forks
482
- are AND and which XOR is learned from the log (a causal net, whose
483
- bindings are listed). Like in ProM, such a net fits its log but is not
484
- always sound;
485
- - **state-based regions**, two-phase: the log becomes a transition system
486
- through a state function you choose (the prefix, postfix or both of each
487
- event; as a set, multiset or sequence; over the last *k* events or all
488
- of them), and its minimal regions become the places. The derivation
489
- shows the transition system (pick a trace to light up the states it
490
- passes through), the regions, GER and minimal pre- and post-regions of
491
- every event, state separation and forward closure, and whether the
492
- net's reachability graph is isomorphic to the transition system.
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
- - **Boxes** are listed on the left in groups (Input, Filter, Discover, Check,
758
- Compare, Output, Science, Predict, Coloured nets, Sweep, Yours) with a
759
- search field. Click one to add it, or double-click the canvas.
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** for the side panel: **Result** (the net, the log's figures,
764
- the table, the figure), **How** (what the box reported: notes, intermediate
765
- values, the derivation), **Code** (the box's few lines and, under them, the
766
- actual algorithm it calls: the α-algorithm's eight steps, the Inductive
767
- Miner's cuts, with the work each follows and *Whole file* for the module)
768
- and **Settings** (a control per setting; *Sweep* a number over a range).
769
- **⤢** opens the tab in a window of its own.
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
- - **From a page**: *As a workflow* on a log's Discover tab or a model page,
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 three panels** (box list, canvas, side panel) resize by dragging the
791
- gaps, hide with *⇤ Boxes* / *Panel ⇥* or the View menu, and come back with
792
- *View ▸ Reset Workflow Layout*.
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: the model and how it was
209
- derived update straight away. **Open as model →** adds the result to the sidebar (under **MODELS**, or
210
- **UNSAVED** in a folder until you press **Keep** to save it there).
211
- 4. On the model's *Conformance* tab, choose a log and press **Check
212
- conformance**.
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
  ![The folder Week 2 in the sidebar, with its subfolders, one net open and the others listed](docs/screenshots/workspace.png)
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
- - **Every event log and net in the folder** is listed, open or not. Files
234
- that are not open yet are lighter: **click one to open it**. Closing a file
235
- (✕ or ⌘W) puts it back in that state; it stays in the folder.
236
- - **Folders** shows the folder as it is on disk, with collapsible subfolders
237
- (folders first, then files, by name). **By kind** groups the files into
238
- event logs, Petri nets and coloured nets instead. The choice, and which
239
- subfolders are open, is remembered for each folder.
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
- - **Conformance with a log…** opens the net as a model next to your logs,
381
- for token replay and alignments.
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
- - **Generate event log…:** plays the net out many times and opens the
393
- traces as a log.
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 model you discovered
403
- has **✎ Edit a copy** to bring it here.
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
  ![Renaming a transition in place](docs/screenshots/petri-editing.png)
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 and IMf;
442
- - Heuristics Miner, as a dependency graph or as a Petri net: which forks
443
- are AND and which XOR is learned from the log (a causal net, whose
444
- bindings are listed). Like in ProM, such a net fits its log but is not
445
- always sound;
446
- - **state-based regions**, two-phase: the log becomes a transition system
447
- through a state function you choose (the prefix, postfix or both of each
448
- event; as a set, multiset or sequence; over the last *k* events or all
449
- of them), and its minimal regions become the places. The derivation
450
- shows the transition system (pick a trace to light up the states it
451
- passes through), the regions, GER and minimal pre- and post-regions of
452
- every event, state separation and forward closure, and whether the
453
- net's reachability graph is isomorphic to the transition system.
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
- - **Boxes** are listed on the left in groups (Input, Filter, Discover, Check,
719
- Compare, Output, Science, Predict, Coloured nets, Sweep, Yours) with a
720
- search field. Click one to add it, or double-click the canvas.
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** for the side panel: **Result** (the net, the log's figures,
725
- the table, the figure), **How** (what the box reported: notes, intermediate
726
- values, the derivation), **Code** (the box's few lines and, under them, the
727
- actual algorithm it calls: the α-algorithm's eight steps, the Inductive
728
- Miner's cuts, with the work each follows and *Whole file* for the module)
729
- and **Settings** (a control per setting; *Sweep* a number over a range).
730
- **⤢** opens the tab in a window of its own.
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
- - **From a page**: *As a workflow* on a log's Discover tab or a model page,
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 three panels** (box list, canvas, side panel) resize by dragging the
752
- gaps, hide with *⇤ Boxes* / *Panel ⇥* or the View menu, and come back with
753
- *View ▸ Reset Workflow Layout*.
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.7.2"
51
+ __version__ = "0.10.5"
52
52
 
53
53
  __all__ = [
54
54
  "Arc", "BindingElement", "CPNet", "Marking", "Multiset", "Page", "Place",