linpershey/process_mining
0
1{2 "cells": [3 {4 "cell_type": "code",5 "execution_count": 85,6 "id": "1fd93a3a-e7e0-4cf8-9c4c-01189927cbbb",7 "metadata": {},8 "outputs": [],9 "source": [10 "import plotly.graph_objects as go\n",11 "import networkx as nx\n",12 "import matplotlib.pyplot as plt\n",13 "\n",14 "\n",15 "from model import *"16 ]17 },18 {19 "cell_type": "markdown",20 "id": "e1a4b01c-a1da-481d-9886-8ba7a8e61e73",21 "metadata": {},22 "source": [23 "## Create a directed graph\n",24 "- networkx\n",25 "- graphviz"26 ]27 },28 {29 "cell_type": "code",30 "execution_count": 126,31 "id": "ceecfc72-0a9a-4a38-939f-d5451510f488",32 "metadata": {},33 "outputs": [],34 "source": [35 "\n",36 "\n",37 " \n",38 "def test_networkx():\n",39 " \"\"\"\n",40 " \"\"\"\n",41 " # create graph #\n",42 " G = nx.DiGraph()\n",43 " \n",44 " # Add nodes\n",45 " nodes = [1, 2, 3, 4]\n",46 " \n",47 " # Add edges\n",48 " edges = [(1, 2), (2, 3), (3, 4), (1, 4)]\n",49 " \n",50 " fig = view_networkx( nodes, edges)\n",51 " fig.show()\n",52 "\n",53 "# test_networkx()\n"54 ]55 },56 {57 "cell_type": "code",58 "execution_count": null,59 "id": "7c212ea8-aa3e-4ddc-8a64-89ccf476b6ee",60 "metadata": {},61 "outputs": [],62 "source": []63 },64 {65 "cell_type": "markdown",66 "id": "5737bae1-b784-453d-aa6e-e17818077f09",67 "metadata": {},68 "source": [69 "### graphviz ###"70 ]71 },72 {73 "cell_type": "code",74 "execution_count": 49,75 "id": "f4ef2c04-07b2-4a12-b6be-60f40f7a5569",76 "metadata": {},77 "outputs": [],78 "source": [79 "\n",80 "import graphviz # doctest: +NO_EXE\n",81 "\n"82 ]83 },84 {85 "cell_type": "code",86 "execution_count": 57,87 "id": "0a9dec29-f6c8-4484-930b-1fcf0b1bccef",88 "metadata": {},89 "outputs": [90 {91 "name": "stdout",92 "output_type": "stream",93 "text": [94 "// The Round Table\n",95 "digraph {\n",96 "\tA [label=\"King Arthur\"]\n",97 "\tB [label=\"Sir Bedevere the Wise\"]\n",98 "\tL [label=\"Sir Lancelot the Brave\"]\n",99 "\tA -> B\n",100 "\tA -> L\n",101 "\tB -> L [constraint=false]\n",102 "}\n",103 "\n"104 ]105 },106 {107 "data": {108 "image/svg+xml": [109 "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",110 "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",111 " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",112 "<!-- Generated by graphviz version 2.43.0 (0)\n",113 " -->\n",114 "<!-- Title: %3 Pages: 1 -->\n",115 "<svg width=\"484pt\" height=\"116pt\"\n",116 " viewBox=\"0.00 0.00 484.43 116.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",117 "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 112)\">\n",118 "<title>%3</title>\n",119 "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-112 480.43,-112 480.43,4 -4,4\"/>\n",120 "<!-- A -->\n",121 "<g id=\"node1\" class=\"node\">\n",122 "<title>A</title>\n",123 "<ellipse fill=\"none\" stroke=\"black\" cx=\"237.39\" cy=\"-90\" rx=\"65.79\" ry=\"18\"/>\n",124 "<text text-anchor=\"middle\" x=\"237.39\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">King Arthur</text>\n",125 "</g>\n",126 "<!-- B -->\n",127 "<g id=\"node2\" class=\"node\">\n",128 "<title>B</title>\n",129 "<ellipse fill=\"none\" stroke=\"black\" cx=\"114.39\" cy=\"-18\" rx=\"114.28\" ry=\"18\"/>\n",130 "<text text-anchor=\"middle\" x=\"114.39\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">Sir Bedevere the Wise</text>\n",131 "</g>\n",132 "<!-- A->B -->\n",133 "<g id=\"edge1\" class=\"edge\">\n",134 "<title>A->B</title>\n",135 "<path fill=\"none\" stroke=\"black\" d=\"M210.09,-73.46C193.06,-63.77 170.9,-51.16 152.19,-40.51\"/>\n",136 "<polygon fill=\"black\" stroke=\"black\" points=\"153.75,-37.37 143.33,-35.47 150.28,-43.46 153.75,-37.37\"/>\n",137 "</g>\n",138 "<!-- L -->\n",139 "<g id=\"node3\" class=\"node\">\n",140 "<title>L</title>\n",141 "<ellipse fill=\"none\" stroke=\"black\" cx=\"361.39\" cy=\"-18\" rx=\"115.08\" ry=\"18\"/>\n",142 "<text text-anchor=\"middle\" x=\"361.39\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">Sir Lancelot the Brave</text>\n",143 "</g>\n",144 "<!-- A->L -->\n",145 "<g id=\"edge2\" class=\"edge\">\n",146 "<title>A->L</title>\n",147 "<path fill=\"none\" stroke=\"black\" d=\"M264.91,-73.46C282.08,-63.77 304.42,-51.16 323.28,-40.51\"/>\n",148 "<polygon fill=\"black\" stroke=\"black\" points=\"325.23,-43.43 332.22,-35.47 321.79,-37.34 325.23,-43.43\"/>\n",149 "</g>\n",150 "<!-- B->L -->\n",151 "<g id=\"edge3\" class=\"edge\">\n",152 "<title>B->L</title>\n",153 "<path fill=\"none\" stroke=\"black\" d=\"M229.21,-18C231.51,-18 233.82,-18 236.13,-18\"/>\n",154 "<polygon fill=\"black\" stroke=\"black\" points=\"236.25,-21.5 246.25,-18 236.25,-14.5 236.25,-21.5\"/>\n",155 "</g>\n",156 "</g>\n",157 "</svg>\n"158 ],159 "text/plain": [160 "<graphviz.graphs.Digraph at 0x7fe5a835d180>"161 ]162 },163 "execution_count": 57,164 "metadata": {},165 "output_type": "execute_result"166 }167 ],168 "source": [169 "def test_dot():\n",170 " dot = graphviz.Digraph(comment='The Round Table')\n",171 " dot.node('A', 'King Arthur') # doctest: +NO_EXE\n",172 " dot.node('B', 'Sir Bedevere the Wise')\n",173 " dot.node('L', 'Sir Lancelot the Brave')\n",174 " \n",175 " dot.edges(['AB', 'AL'])\n",176 " dot.edge('B', 'L', constraint='false')\n",177 " \n",178 " print( dot.source)\n",179 " return dot\n",180 "test_dot()"181 ]182 },183 {184 "cell_type": "code",185 "execution_count": 63,186 "id": "1099dcb2-89f5-4ac1-af64-59fe38696cdb",187 "metadata": {},188 "outputs": [189 {190 "data": {191 "text/plain": [192 "{('check ticket', 'decide'): 6,\n",193 " ('check ticket', 'examine casually'): 2,\n",194 " ('check ticket', 'examine thoroughly'): 1,\n",195 " ('decide', 'pay compensation'): 3,\n",196 " ('decide', 'reinitiate request'): 3,\n",197 " ('decide', 'reject request'): 3,\n",198 " ('examine casually', 'check ticket'): 4,\n",199 " ('examine casually', 'decide'): 2,\n",200 " ('examine thoroughly', 'check ticket'): 2,\n",201 " ('examine thoroughly', 'decide'): 1,\n",202 " ('register request', 'check ticket'): 2,\n",203 " ('register request', 'examine casually'): 3,\n",204 " ('register request', 'examine thoroughly'): 1,\n",205 " ('reinitiate request', 'check ticket'): 1,\n",206 " ('reinitiate request', 'examine casually'): 1,\n",207 " ('reinitiate request', 'examine thoroughly'): 1}"208 ]209 },210 "execution_count": 63,211 "metadata": {},212 "output_type": "execute_result"213 }214 ],215 "source": [216 "dfg"217 ]218 },219 {220 "cell_type": "markdown",221 "id": "8fd8b200-66ea-45f1-af95-7adacbf664e6",222 "metadata": {},223 "source": [224 "## pm4py"225 ]226 },227 {228 "cell_type": "code",229 "execution_count": 178,230 "id": "e680c9db-0fbc-40bc-a763-682efc53b3e1",231 "metadata": {},232 "outputs": [233 {234 "data": {235 "text/plain": [236 "Index(['case_id', 'activity', 'timestamp', 'costs', 'resource'], dtype='object')"237 ]238 },239 "execution_count": 178,240 "metadata": {},241 "output_type": "execute_result"242 }243 ],244 "source": [245 "import pandas as pd\n",246 "import pm4py\n",247 "import datetime\n",248 "\n",249 "data = pd.read_csv(\"data/running-example.csv\", sep=';', dtype={'case_id': str}, parse_dates = ['timestamp'])\n",250 "data.loc[ :, \"timestamp\"] = pd.to_datetime(data[\"timestamp\"])\n",251 "data.describe()\n",252 "data.columns\n"253 ]254 },255 {256 "cell_type": "code",257 "execution_count": null,258 "id": "ac6b7642-eb9c-49e7-98b8-c157800cf35e",259 "metadata": {},260 "outputs": [],261 "source": []262 },263 {264 "cell_type": "code",265 "execution_count": null,266 "id": "3a8737a4-55a7-4aed-bb8d-dd349d62beb5",267 "metadata": {},268 "outputs": [],269 "source": []270 },271 {272 "cell_type": "code",273 "execution_count": 36,274 "id": "0fa3ccf3-fe11-4a13-811c-c2d48a3c593b",275 "metadata": {},276 "outputs": [277 {278 "name": "stdout",279 "output_type": "stream",280 "text": [281 "Start activities: {'register request': 6}\n",282 "End activities: {'reject request': 3, 'pay compensation': 3}\n"283 ]284 }285 ],286 "source": [287 "event_log = pm4py.format_dataframe( data, case_id='case_id', activity_key='activity', timestamp_key='timestamp')\n",288 "start_activities = pm4py.get_start_activities(event_log)\n",289 "end_activities = pm4py.get_end_activities(event_log)\n",290 "print(\"Start activities: {}\\nEnd activities: {}\".format(start_activities, end_activities))\n"291 ]292 },293 {294 "cell_type": "code",295 "execution_count": 37,296 "id": "c1488767-0745-456b-b073-4a390090c00d",297 "metadata": {},298 "outputs": [299 {300 "data": {301 "text/plain": [302 "{'register request': 6}"303 ]304 },305 "execution_count": 37,306 "metadata": {},307 "output_type": "execute_result"308 }309 ],310 "source": [311 "start_activities"312 ]313 },314 {315 "cell_type": "markdown",316 "id": "eadada7f-9c7f-45a5-be9c-c05941e34be6",317 "metadata": {},318 "source": [319 "### filter ###"320 ]321 },322 {323 "cell_type": "code",324 "execution_count": 27,325 "id": "3f0a294f-a5f5-47f9-a417-622d4895da01",326 "metadata": {},327 "outputs": [],328 "source": [329 "filtered = pm4py.filter_start_activities( event_log, {'register request'}, activity_key='activity',)"330 ]331 },332 {333 "cell_type": "code",334 "execution_count": 152,335 "id": "34b9f573-60ae-4bdd-96d9-bd57421791ca",336 "metadata": {},337 "outputs": [],338 "source": [339 "# {'register request'}\n",340 "\n",341 "# filtered_relations = [('decide', 'reinitiate request')]\n",342 "filtered_relations = [('check ticket', 'decide')]\n",343 "filtered_reinit_event_log = pm4py.filter_directly_follows_relation( event_log, relations = filtered_relations )\n",344 "top_variant_event_log = pm4py.filter_variants_top_k( event_log, k = 1)"345 ]346 },347 {348 "cell_type": "code",349 "execution_count": null,350 "id": "299e91c5-4193-432f-b525-daa78c7008e4",351 "metadata": {},352 "outputs": [],353 "source": []354 },355 {356 "cell_type": "code",357 "execution_count": null,358 "id": "9001b1c1-c988-4c5e-bd95-480510d9cdf6",359 "metadata": {},360 "outputs": [],361 "source": []362 },363 {364 "cell_type": "markdown",365 "id": "9bd75d53-6dc5-41c9-a754-33d109696679",366 "metadata": {},367 "source": [368 "### process discovery ###"369 ]370 },371 {372 "cell_type": "code",373 "execution_count": 235,374 "id": "5bbc00c2-1182-4b72-923e-da6b089f5f5c",375 "metadata": {},376 "outputs": [377 {378 "data": {379 "image/png": "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",380 "text/plain": [381 "<IPython.core.display.Image object>"382 ]383 },384 "metadata": {},385 "output_type": "display_data"386 },387 {388 "data": {389 "text/plain": [390 "''"391 ]392 },393 "execution_count": 235,394 "metadata": {},395 "output_type": "execute_result"396 }397 ],398 "source": [399 "### --- dfg --- ###\n",400 "# dfg, start_activities, end_activities = pm4py.discover_dfg(event_log)\n",401 "# chart = pm4py.view_dfg(dfg, start_activities=start_activities, end_activities=end_activities)\n",402 "# chart \n",403 "\n",404 "### --- heuristic map --- ###\n",405 "# petrinet, initial_marking, final_marking = pm4py.discover_petri_net_alpha(event_log)\n",406 "# pm4py.view_petri_net( petri_net=petrinet, initial_marking=initial_marking, final_marking=final_marking)\n",407 "\n",408 "### --- heuristic map --- ###\n",409 "# map = pm4py.discover_heuristics_net(event_log)\n",410 "# pm4py.view_heuristics_net(map)\n",411 "\n",412 "### --- BPMN --- ###\n",413 "# bpmn = pm4py.discover_bpmn_inductive(event_log)\n",414 "# pm4py.view_bpmn( bpmn, format='png')\n",415 "# pm4py.save_vis_bpmn( bpmn, \"output/bpmn.png\")\n",416 " \n",417 "### --- Process tree --- ###\n",418 "# map = pm4py.discover_process_tree_inductive(event_log)\n",419 "# pm4py.view_process_tree(map)\n",420 "\n",421 "### --- inductive --- ###\n",422 "petrinet, initial_marking, final_marking = pm4py.discover_petri_net_inductive(event_log)\n",423 "pm4py.view_petri_net( petri_net=petrinet, initial_marking=initial_marking, final_marking=final_marking)\n",424 "pm4py.save_vis_petri_net( petrinet, initial_marking, final_marking, 'output/petri_net.png')\n",425 "\n",426 "# petrinet, initial_marking, final_marking = pm4py.discover_petri_net_inductive(filtered_reinit_event_log)\n",427 "# pm4py.view_petri_net( petri_net=petrinet, initial_marking=initial_marking, final_marking=final_marking)\n",428 "\n",429 "# petrinet, initial_marking, final_marking = pm4py.discover_petri_net_inductive(top_variant_event_log)\n",430 "# pm4py.view_petri_net( petri_net=petrinet, initial_marking=initial_marking, final_marking=final_marking)\n",431 "\n",432 "### --- ILP miner --- ###\n",433 "# petrinet, initial_marking, final_marking = pm4py.discover_petri_net_ilp(event_log)\n",434 "# pm4py.view_petri_net( petri_net=petrinet, initial_marking=initial_marking, final_marking=final_marking)\n",435 "\n",436 "### --- dotted chart --- ###\n",437 "# pm4py.view_dotted_chart( event_log, format='png')"438 ]439 },440 {441 "cell_type": "code",442 "execution_count": null,443 "id": "afa3e14b-a4d5-42cd-80c8-1d533b6a9207",444 "metadata": {},445 "outputs": [],446 "source": []447 },448 {449 "cell_type": "code",450 "execution_count": 69,451 "id": "0fdc4dc8-6fbf-44c9-97b6-09c2acfa5bd1",452 "metadata": {},453 "outputs": [454 {455 "name": "stdout",456 "output_type": "stream",457 "text": [458 "nodes->{'#Start#': 0, '#End#': 1, 'register request': 2, 'reject request': 3, 'pay compensation': 4, 'check ticket': 5, 'decide': 6, 'examine casually': 7, 'examine thoroughly': 8, 'reinitiate request': 9}\n",459 "edges->[('#Start#', 'register request'), ('reject request', '#End#'), ('pay compensation', '#End#'), ('check ticket', 'decide'), ('check ticket', 'examine casually'), ('check ticket', 'examine thoroughly'), ('decide', 'pay compensation'), ('decide', 'reinitiate request'), ('decide', 'reject request'), ('examine casually', 'check ticket'), ('examine casually', 'decide'), ('examine thoroughly', 'check ticket'), ('examine thoroughly', 'decide'), ('register request', 'check ticket'), ('register request', 'examine casually'), ('register request', 'examine thoroughly'), ('reinitiate request', 'check ticket'), ('reinitiate request', 'examine casually'), ('reinitiate request', 'examine thoroughly')]\n",460 "// sample\n",461 "digraph {\n",462 "\t0 [label=\"#Start#\"]\n",463 "\t1 [label=\"#End#\"]\n",464 "\t2 [label=\"register request\"]\n",465 "\t3 [label=\"reject request\"]\n",466 "\t4 [label=\"pay compensation\"]\n",467 "\t5 [label=\"check ticket\"]\n",468 "\t6 [label=decide]\n",469 "\t7 [label=\"examine casually\"]\n",470 "\t8 [label=\"examine thoroughly\"]\n",471 "\t9 [label=\"reinitiate request\"]\n",472 "\t0 -> 2\n",473 "\t3 -> 1\n",474 "\t4 -> 1\n",475 "\t5 -> 6\n",476 "\t5 -> 7\n",477 "\t5 -> 8\n",478 "\t6 -> 4\n",479 "\t6 -> 9\n",480 "\t6 -> 3\n",481 "\t7 -> 5\n",482 "\t7 -> 6\n",483 "\t8 -> 5\n",484 "\t8 -> 6\n",485 "\t2 -> 5\n",486 "\t2 -> 7\n",487 "\t2 -> 8\n",488 "\t9 -> 5\n",489 "\t9 -> 7\n",490 "\t9 -> 8\n",491 "}\n",492 "\n"493 ]494 },495 {496 "data": {497 "image/svg+xml": [498 "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",499 "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",500 " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",501 "<!-- Generated by graphviz version 2.43.0 (0)\n",502 " -->\n",503 "<!-- Title: %3 Pages: 1 -->\n",504 "<svg width=\"914pt\" height=\"404pt\"\n",505 " viewBox=\"0.00 0.00 913.68 404.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",506 "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 400)\">\n",507 "<title>%3</title>\n",508 "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-400 909.68,-400 909.68,4 -4,4\"/>\n",509 "<!-- 0 -->\n",510 "<g id=\"node1\" class=\"node\">\n",511 "<title>0</title>\n",512 "<ellipse fill=\"none\" stroke=\"black\" cx=\"291.34\" cy=\"-378\" rx=\"50.09\" ry=\"18\"/>\n",513 "<text text-anchor=\"middle\" x=\"291.34\" y=\"-374.3\" font-family=\"Times,serif\" font-size=\"14.00\">#Start#</text>\n",514 "</g>\n",515 "<!-- 2 -->\n",516 "<g id=\"node3\" class=\"node\">\n",517 "<title>2</title>\n",518 "<ellipse fill=\"none\" stroke=\"black\" cx=\"291.34\" cy=\"-306\" rx=\"86.38\" ry=\"18\"/>\n",519 "<text text-anchor=\"middle\" x=\"291.34\" y=\"-302.3\" font-family=\"Times,serif\" font-size=\"14.00\">register request</text>\n",520 "</g>\n",521 "<!-- 0->2 -->\n",522 "<g id=\"edge1\" class=\"edge\">\n",523 "<title>0->2</title>\n",524 "<path fill=\"none\" stroke=\"black\" d=\"M291.34,-359.7C291.34,-351.98 291.34,-342.71 291.34,-334.11\"/>\n",525 "<polygon fill=\"black\" stroke=\"black\" points=\"294.84,-334.1 291.34,-324.1 287.84,-334.1 294.84,-334.1\"/>\n",526 "</g>\n",527 "<!-- 1 -->\n",528 "<g id=\"node2\" class=\"node\">\n",529 "<title>1</title>\n",530 "<ellipse fill=\"none\" stroke=\"black\" cx=\"537.34\" cy=\"-18\" rx=\"44.69\" ry=\"18\"/>\n",531 "<text text-anchor=\"middle\" x=\"537.34\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">#End#</text>\n",532 "</g>\n",533 "<!-- 5 -->\n",534 "<g id=\"node6\" class=\"node\">\n",535 "<title>5</title>\n",536 "<ellipse fill=\"none\" stroke=\"black\" cx=\"291.34\" cy=\"-234\" rx=\"66.09\" ry=\"18\"/>\n",537 "<text text-anchor=\"middle\" x=\"291.34\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">check ticket</text>\n",538 "</g>\n",539 "<!-- 2->5 -->\n",540 "<g id=\"edge14\" class=\"edge\">\n",541 "<title>2->5</title>\n",542 "<path fill=\"none\" stroke=\"black\" d=\"M291.34,-287.7C291.34,-279.98 291.34,-270.71 291.34,-262.11\"/>\n",543 "<polygon fill=\"black\" stroke=\"black\" points=\"294.84,-262.1 291.34,-252.1 287.84,-262.1 294.84,-262.1\"/>\n",544 "</g>\n",545 "<!-- 7 -->\n",546 "<g id=\"node8\" class=\"node\">\n",547 "<title>7</title>\n",548 "<ellipse fill=\"none\" stroke=\"black\" cx=\"90.34\" cy=\"-18\" rx=\"90.18\" ry=\"18\"/>\n",549 "<text text-anchor=\"middle\" x=\"90.34\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">examine casually</text>\n",550 "</g>\n",551 "<!-- 2->7 -->\n",552 "<g id=\"edge15\" class=\"edge\">\n",553 "<title>2->7</title>\n",554 "<path fill=\"none\" stroke=\"black\" d=\"M264.42,-288.88C218.77,-259.67 128.15,-193.08 97.34,-108 90.19,-88.24 88.65,-64.43 88.78,-46.42\"/>\n",555 "<polygon fill=\"black\" stroke=\"black\" points=\"92.28,-46.38 89.04,-36.3 85.29,-46.21 92.28,-46.38\"/>\n",556 "</g>\n",557 "<!-- 8 -->\n",558 "<g id=\"node9\" class=\"node\">\n",559 "<title>8</title>\n",560 "<ellipse fill=\"none\" stroke=\"black\" cx=\"802.34\" cy=\"-18\" rx=\"103.18\" ry=\"18\"/>\n",561 "<text text-anchor=\"middle\" x=\"802.34\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">examine thoroughly</text>\n",562 "</g>\n",563 "<!-- 2->8 -->\n",564 "<g id=\"edge16\" class=\"edge\">\n",565 "<title>2->8</title>\n",566 "<path fill=\"none\" stroke=\"black\" d=\"M375.64,-301.89C496.18,-292.24 713.07,-254.29 802.34,-108 813.56,-89.61 812.56,-64.86 809.32,-46.12\"/>\n",567 "<polygon fill=\"black\" stroke=\"black\" points=\"812.72,-45.25 807.3,-36.15 805.86,-46.64 812.72,-45.25\"/>\n",568 "</g>\n",569 "<!-- 3 -->\n",570 "<g id=\"node4\" class=\"node\">\n",571 "<title>3</title>\n",572 "<ellipse fill=\"none\" stroke=\"black\" cx=\"443.34\" cy=\"-90\" rx=\"76.09\" ry=\"18\"/>\n",573 "<text text-anchor=\"middle\" x=\"443.34\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">reject request</text>\n",574 "</g>\n",575 "<!-- 3->1 -->\n",576 "<g id=\"edge2\" class=\"edge\">\n",577 "<title>3->1</title>\n",578 "<path fill=\"none\" stroke=\"black\" d=\"M465.62,-72.41C478.48,-62.84 494.79,-50.69 508.6,-40.4\"/>\n",579 "<polygon fill=\"black\" stroke=\"black\" points=\"510.9,-43.05 516.83,-34.27 506.72,-37.44 510.9,-43.05\"/>\n",580 "</g>\n",581 "<!-- 4 -->\n",582 "<g id=\"node5\" class=\"node\">\n",583 "<title>4</title>\n",584 "<ellipse fill=\"none\" stroke=\"black\" cx=\"632.34\" cy=\"-90\" rx=\"94.78\" ry=\"18\"/>\n",585 "<text text-anchor=\"middle\" x=\"632.34\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">pay compensation</text>\n",586 "</g>\n",587 "<!-- 4->1 -->\n",588 "<g id=\"edge3\" class=\"edge\">\n",589 "<title>4->1</title>\n",590 "<path fill=\"none\" stroke=\"black\" d=\"M609.83,-72.41C596.74,-62.77 580.12,-50.52 566.09,-40.19\"/>\n",591 "<polygon fill=\"black\" stroke=\"black\" points=\"567.88,-37.15 557.75,-34.04 563.73,-42.79 567.88,-37.15\"/>\n",592 "</g>\n",593 "<!-- 6 -->\n",594 "<g id=\"node7\" class=\"node\">\n",595 "<title>6</title>\n",596 "<ellipse fill=\"none\" stroke=\"black\" cx=\"391.34\" cy=\"-162\" rx=\"40.89\" ry=\"18\"/>\n",597 "<text text-anchor=\"middle\" x=\"391.34\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">decide</text>\n",598 "</g>\n",599 "<!-- 5->6 -->\n",600 "<g id=\"edge4\" class=\"edge\">\n",601 "<title>5->6</title>\n",602 "<path fill=\"none\" stroke=\"black\" d=\"M314.54,-216.76C328.62,-206.91 346.73,-194.23 361.83,-183.66\"/>\n",603 "<polygon fill=\"black\" stroke=\"black\" points=\"364.13,-186.32 370.32,-177.72 360.12,-180.58 364.13,-186.32\"/>\n",604 "</g>\n",605 "<!-- 5->7 -->\n",606 "<g id=\"edge5\" class=\"edge\">\n",607 "<title>5->7</title>\n",608 "<path fill=\"none\" stroke=\"black\" d=\"M254.9,-218.84C213.43,-199.24 147.06,-160.29 109.34,-108 96.13,-89.69 89,-64.92 86.71,-46.17\"/>\n",609 "<polygon fill=\"black\" stroke=\"black\" points=\"90.19,-45.87 85.91,-36.18 83.22,-46.43 90.19,-45.87\"/>\n",610 "</g>\n",611 "<!-- 5->8 -->\n",612 "<g id=\"edge6\" class=\"edge\">\n",613 "<title>5->8</title>\n",614 "<path fill=\"none\" stroke=\"black\" d=\"M347.04,-224.11C457.34,-206.31 697.76,-163.23 759.34,-108 777.17,-92.01 785.71,-65.65 791.39,-45.75\"/>\n",615 "<polygon fill=\"black\" stroke=\"black\" points=\"794.78,-46.6 794.13,-36.03 788.05,-44.7 794.78,-46.6\"/>\n",616 "</g>\n",617 "<!-- 6->3 -->\n",618 "<g id=\"edge9\" class=\"edge\">\n",619 "<title>6->3</title>\n",620 "<path fill=\"none\" stroke=\"black\" d=\"M403.4,-144.76C409.65,-136.35 417.42,-125.89 424.45,-116.44\"/>\n",621 "<polygon fill=\"black\" stroke=\"black\" points=\"427.47,-118.24 430.62,-108.12 421.85,-114.06 427.47,-118.24\"/>\n",622 "</g>\n",623 "<!-- 6->4 -->\n",624 "<g id=\"edge7\" class=\"edge\">\n",625 "<title>6->4</title>\n",626 "<path fill=\"none\" stroke=\"black\" d=\"M424.6,-151.34C462.81,-140.24 526.26,-121.81 573,-108.24\"/>\n",627 "<polygon fill=\"black\" stroke=\"black\" points=\"574.08,-111.57 582.71,-105.42 572.13,-104.85 574.08,-111.57\"/>\n",628 "</g>\n",629 "<!-- 9 -->\n",630 "<g id=\"node10\" class=\"node\">\n",631 "<title>9</title>\n",632 "<ellipse fill=\"none\" stroke=\"black\" cx=\"219.34\" cy=\"-90\" rx=\"92.08\" ry=\"18\"/>\n",633 "<text text-anchor=\"middle\" x=\"219.34\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">reinitiate request</text>\n",634 "</g>\n",635 "<!-- 6->9 -->\n",636 "<g id=\"edge8\" class=\"edge\">\n",637 "<title>6->9</title>\n",638 "<path fill=\"none\" stroke=\"black\" d=\"M362.16,-149.13C336.13,-138.53 297.53,-122.82 267.02,-110.4\"/>\n",639 "<polygon fill=\"black\" stroke=\"black\" points=\"268,-107.02 257.42,-106.5 265.36,-113.51 268,-107.02\"/>\n",640 "</g>\n",641 "<!-- 7->5 -->\n",642 "<g id=\"edge10\" class=\"edge\">\n",643 "<title>7->5</title>\n",644 "<path fill=\"none\" stroke=\"black\" d=\"M99,-36.18C104.51,-55.25 111.61,-86.19 127.34,-108 161.32,-155.1 218.53,-191.37 255.73,-212.43\"/>\n",645 "<polygon fill=\"black\" stroke=\"black\" points=\"254.29,-215.64 264.73,-217.45 257.7,-209.52 254.29,-215.64\"/>\n",646 "</g>\n",647 "<!-- 7->6 -->\n",648 "<g id=\"edge11\" class=\"edge\">\n",649 "<title>7->6</title>\n",650 "<path fill=\"none\" stroke=\"black\" d=\"M174.24,-24.84C220.25,-31.22 276.65,-44.49 320.34,-72 333.69,-80.41 357.99,-112.93 374.4,-136.22\"/>\n",651 "<polygon fill=\"black\" stroke=\"black\" points=\"371.67,-138.43 380.26,-144.63 377.42,-134.43 371.67,-138.43\"/>\n",652 "</g>\n",653 "<!-- 8->5 -->\n",654 "<g id=\"edge12\" class=\"edge\">\n",655 "<title>8->5</title>\n",656 "<path fill=\"none\" stroke=\"black\" d=\"M806.86,-36.03C806.4,-56.14 798.28,-89.23 777.34,-108 716.19,-162.85 478.67,-205.71 359.78,-223.73\"/>\n",657 "<polygon fill=\"black\" stroke=\"black\" points=\"359.06,-220.3 349.69,-225.24 360.1,-227.22 359.06,-220.3\"/>\n",658 "</g>\n",659 "<!-- 8->6 -->\n",660 "<g id=\"edge13\" class=\"edge\">\n",661 "<title>8->6</title>\n",662 "<path fill=\"none\" stroke=\"black\" d=\"M794.66,-36.3C784.5,-57.01 764.51,-91.02 736.34,-108 687.71,-137.32 525.35,-152.12 441.87,-157.94\"/>\n",663 "<polygon fill=\"black\" stroke=\"black\" points=\"441.59,-154.45 431.85,-158.62 442.06,-161.44 441.59,-154.45\"/>\n",664 "</g>\n",665 "<!-- 9->5 -->\n",666 "<g id=\"edge17\" class=\"edge\">\n",667 "<title>9->5</title>\n",668 "<path fill=\"none\" stroke=\"black\" d=\"M228.06,-108.19C240.51,-132.74 263.49,-178.07 278.06,-206.81\"/>\n",669 "<polygon fill=\"black\" stroke=\"black\" points=\"275.01,-208.54 282.66,-215.87 281.26,-205.37 275.01,-208.54\"/>\n",670 "</g>\n",671 "<!-- 9->7 -->\n",672 "<g id=\"edge18\" class=\"edge\">\n",673 "<title>9->7</title>\n",674 "<path fill=\"none\" stroke=\"black\" d=\"M189.75,-72.94C171.77,-63.18 148.61,-50.62 129.17,-40.07\"/>\n",675 "<polygon fill=\"black\" stroke=\"black\" points=\"130.7,-36.92 120.25,-35.23 127.37,-43.07 130.7,-36.92\"/>\n",676 "</g>\n",677 "<!-- 9->8 -->\n",678 "<g id=\"edge19\" class=\"edge\">\n",679 "<title>9->8</title>\n",680 "<path fill=\"none\" stroke=\"black\" d=\"M295.08,-79.7C315.61,-77.19 337.83,-74.48 358.34,-72 479.49,-57.36 619.26,-40.72 709.11,-30.05\"/>\n",681 "<polygon fill=\"black\" stroke=\"black\" points=\"709.76,-33.5 719.27,-28.84 708.93,-26.55 709.76,-33.5\"/>\n",682 "</g>\n",683 "</g>\n",684 "</svg>\n"685 ],686 "text/plain": [687 "<graphviz.graphs.Digraph at 0x7fe5a2920760>"688 ]689 },690 "execution_count": 69,691 "metadata": {},692 "output_type": "execute_result"693 }694 ],695 "source": [696 "def dfg2dot( dfg, start, end, dot_name: str):\n",697 " \"\"\"\n",698 " Argument\n",699 " dfg: a list of dict of edges from directly-follow-graph\n",700 " start: a dict of start activities\n",701 " end: a dict of end activities\n",702 " Return\n",703 " dot: dot-formatted digraph\n",704 " \"\"\"\n",705 " PROCESS_START = '#Start#'\n",706 " PROCESS_END = '#End#'\n",707 " nodes = { PROCESS_START: 0, PROCESS_END: 1}\n",708 " node_idx = 2\n",709 " for activity in start:\n",710 " assert activity not in nodes, f\"#ERROR: {activity} exists\"\n",711 " nodes[activity] = node_idx\n",712 " node_idx += 1\n",713 " for activity in end:\n",714 " assert activity not in nodes, f\"#ERROR: {activity} exists\"\n",715 " nodes[activity] = node_idx\n",716 " node_idx += 1\n",717 " for node in dfg:\n",718 " left_activity = node[0]\n",719 " if left_activity not in nodes:\n",720 " nodes[left_activity] = node_idx\n",721 " node_idx +=1 \n",722 " right_activity = node[1]\n",723 " if right_activity not in nodes:\n",724 " nodes[right_activity] = node_idx\n",725 " node_idx +=1 \n",726 "\n",727 " edges = []\n",728 " for activity in start:\n",729 " from_id = str(nodes.get(PROCESS_START))\n",730 " to_id = str(nodes.get(activity))\n",731 " edges.append( ( PROCESS_START, activity) ) \n",732 " for activity in end:\n",733 " from_id = sfigtr(nodes.get(activity))\n",734 " to_id = str(nodes.get(PROCESS_END))\n",735 " edges.append( ( activity, PROCESS_END) ) \n",736 " for transition in dfg:\n",737 " edges.append( ( transition[0], transition[1]) ) \n",738 " print(f\"nodes->{nodes}\")\n",739 " print(f\"edges->{edges}\")\n",740 " \n",741 " dot = graphviz.Digraph(comment=dot_name)\n",742 " for node_name, node_id in nodes.items():\n",743 " dot.node( str(node_id), str(node_name)) # doctest: +NO_EXE\n",744 " for edge in edges:\n",745 " dot.edge( str(nodes.get(edge[0])), str(nodes.get(edge[1])) )\n",746 " \n",747 " print( dot.source)\n",748 " return dot\n",749 "\n",750 "dot = dfg2dot( dfg, start_activities, end_activities, 'sample')\n",751 "dot"752 ]753 },754 {755 "cell_type": "code",756 "execution_count": 96,757 "id": "2b3140af-463e-480a-bf5f-e3414610efe5",758 "metadata": {},759 "outputs": [760 {761 "name": "stdout",762 "output_type": "stream",763 "text": [764 "nodes->['#Start#', '#End#', 'register request', 'reject request', 'pay compensation', 'check ticket', 'decide', 'examine casually', 'examine thoroughly', 'reinitiate request']\n",765 "edges->[('#Start#', 'register request'), ('reject request', '#End#'), ('pay compensation', '#End#'), ('check ticket', 'decide'), ('check ticket', 'examine casually'), ('check ticket', 'examine thoroughly'), ('decide', 'pay compensation'), ('decide', 'reinitiate request'), ('decide', 'reject request'), ('examine casually', 'check ticket'), ('examine casually', 'decide'), ('examine thoroughly', 'check ticket'), ('examine thoroughly', 'decide'), ('register request', 'check ticket'), ('register request', 'examine casually'), ('register request', 'examine thoroughly'), ('reinitiate request', 'check ticket'), ('reinitiate request', 'examine casually'), ('reinitiate request', 'examine thoroughly')]\n"766 ]767 }768 ],769 "source": [770 "\n",771 "\n",772 "\n",773 " "774 ]775 },776 {777 "cell_type": "code",778 "execution_count": 128,779 "id": "f7837d3a-2b9f-4bf9-9431-6c2448abc073",780 "metadata": {},781 "outputs": [782 {783 "data": {784 "application/vnd.plotly.v1+json": {785 "config": {786 "plotlyServerURL": "https://plot.ly"787 },788 "data": [789 {790 "hoverinfo": "none",791 "line": {792 "color": "#888",793 "width": 1.5794 },795 "mode": "lines",796 "type": "scatter",797 "x": [798 50.046,799 406.89,800 null,801 406.89,802 680.41,803 null,804 406.89,805 666.92,806 null,807 406.89,808 742.74,809 null,810 1416.6,811 1666.4,812 null,813 1395.7,814 1666.4,815 null,816 680.41,817 1030.2,818 null,819 680.41,820 666.92,821 null,822 680.41,823 742.74,824 null,825 1030.2,826 1395.7,827 null,828 1030.2,829 856.59,830 null,831 1030.2,832 1416.6,833 null,834 666.92,835 680.41,836 null,837 666.92,838 1030.2,839 null,840 742.74,841 680.41,842 null,843 742.74,844 1030.2,845 null,846 856.59,847 680.41,848 null,849 856.59,850 666.92,851 null,852 856.59,853 742.74,854 null855 ],856 "y": [857 231.25,858 186.8,859 null,860 186.8,861 22.284,862 null,863 186.8,864 148.66,865 null,866 186.8,867 256.01,868 null,869 59.309,870 202.14,871 null,872 303.13,873 202.14,874 null,875 22.284,876 150.69,877 null,878 22.284,879 148.66,880 null,881 22.284,882 256.01,883 null,884 150.69,885 303.13,886 null,887 150.69,888 18,889 null,890 150.69,891 59.309,892 null,893 148.66,894 22.284,895 null,896 148.66,897 150.69,898 null,899 256.01,900 22.284,901 null,902 256.01,903 150.69,904 null,905 18,906 22.284,907 null,908 18,909 148.66,910 null,911 18,912 256.01,913 null914 ]915 },916 {917 "hovertext": [918 "#Start#",919 "#End#",920 "register request",921 "reject request",922 "pay compensation",923 "check ticket",924 "decide",925 "examine casually",926 "examine thoroughly",927 "reinitiate request"928 ],929 "marker": {930 "color": "LightSkyBlue",931 "line": {932 "width": 2933 },934 "size": 5935 },936 "mode": "markers+text",937 "text": [938 "#Start#",939 "#End#",940 "register request",941 "reject request",942 "pay compensation",943 "check ticket",944 "decide",945 "examine casually",946 "examine thoroughly",947 "reinitiate request"948 ],949 "textposition": "top center",950 "type": "scatter",951 "x": [952 50.046,953 1666.4,954 406.89,955 1416.6,956 1395.7,957 680.41,958 1030.2,959 666.92,960 742.74,961 856.59962 ],963 "y": [964 231.25,965 202.14,966 186.8,967 59.309,968 303.13,969 22.284,970 150.69,971 148.66,972 256.01,973 18974 ]975 }976 ],977 "layout": {978 "annotations": [979 {980 "arrowcolor": "Gray",981 "arrowhead": 2,982 "arrowsize": 1,983 "arrowwidth": 2,984 "ax": 50.046,985 "axref": "x",986 "ay": 231.25,987 "ayref": "y",988 "showarrow": true,989 "x": 406.89,990 "xref": "x",991 "y": 186.8,992 "yref": "y"993 },994 {995 "arrowcolor": "Gray",996 "arrowhead": 2,997 "arrowsize": 1,998 "arrowwidth": 2,999 "ax": 406.89,1000 "axref": "x",1001 "ay": 186.8,1002 "ayref": "y",1003 "showarrow": true,1004 "x": 680.41,1005 "xref": "x",1006 "y": 22.284,1007 "yref": "y"1008 },1009 {1010 "arrowcolor": "Gray",1011 "arrowhead": 2,1012 "arrowsize": 1,1013 "arrowwidth": 2,1014 "ax": 406.89,1015 "axref": "x",1016 "ay": 186.8,1017 "ayref": "y",1018 "showarrow": true,1019 "x": 666.92,1020 "xref": "x",1021 "y": 148.66,1022 "yref": "y"1023 },1024 {1025 "arrowcolor": "Gray",1026 "arrowhead": 2,1027 "arrowsize": 1,1028 "arrowwidth": 2,1029 "ax": 406.89,1030 "axref": "x",1031 "ay": 186.8,1032 "ayref": "y",1033 "showarrow": true,1034 "x": 742.74,1035 "xref": "x",1036 "y": 256.01,1037 "yref": "y"1038 },1039 {1040 "arrowcolor": "Gray",1041 "arrowhead": 2,1042 "arrowsize": 1,1043 "arrowwidth": 2,1044 "ax": 1416.6,1045 "axref": "x",1046 "ay": 59.309,1047 "ayref": "y",1048 "showarrow": true,1049 "x": 1666.4,1050 "xref": "x",1051 "y": 202.14,1052 "yref": "y"1053 },1054 {1055 "arrowcolor": "Gray",1056 "arrowhead": 2,1057 "arrowsize": 1,1058 "arrowwidth": 2,1059 "ax": 1395.7,1060 "axref": "x",1061 "ay": 303.13,1062 "ayref": "y",1063 "showarrow": true,1064 "x": 1666.4,1065 "xref": "x",1066 "y": 202.14,1067 "yref": "y"1068 },1069 {1070 "arrowcolor": "Gray",1071 "arrowhead": 2,1072 "arrowsize": 1,1073 "arrowwidth": 2,1074 "ax": 680.41,1075 "axref": "x",1076 "ay": 22.284,1077 "ayref": "y",1078 "showarrow": true,1079 "x": 1030.2,1080 "xref": "x",1081 "y": 150.69,1082 "yref": "y"1083 },1084 {1085 "arrowcolor": "Gray",1086 "arrowhead": 2,1087 "arrowsize": 1,1088 "arrowwidth": 2,1089 "ax": 680.41,1090 "axref": "x",1091 "ay": 22.284,1092 "ayref": "y",1093 "showarrow": true,1094 "x": 666.92,1095 "xref": "x",1096 "y": 148.66,1097 "yref": "y"1098 },1099 {1100 "arrowcolor": "Gray",1101 "arrowhead": 2,1102 "arrowsize": 1,1103 "arrowwidth": 2,1104 "ax": 680.41,1105 "axref": "x",1106 "ay": 22.284,1107 "ayref": "y",1108 "showarrow": true,1109 "x": 742.74,1110 "xref": "x",1111 "y": 256.01,1112 "yref": "y"1113 },1114 {1115 "arrowcolor": "Gray",1116 "arrowhead": 2,1117 "arrowsize": 1,1118 "arrowwidth": 2,1119 "ax": 1030.2,1120 "axref": "x",1121 "ay": 150.69,1122 "ayref": "y",1123 "showarrow": true,1124 "x": 1395.7,1125 "xref": "x",1126 "y": 303.13,1127 "yref": "y"1128 },1129 {1130 "arrowcolor": "Gray",1131 "arrowhead": 2,1132 "arrowsize": 1,1133 "arrowwidth": 2,1134 "ax": 1030.2,1135 "axref": "x",1136 "ay": 150.69,1137 "ayref": "y",1138 "showarrow": true,1139 "x": 856.59,1140 "xref": "x",1141 "y": 18,1142 "yref": "y"1143 },1144 {1145 "arrowcolor": "Gray",1146 "arrowhead": 2,1147 "arrowsize": 1,1148 "arrowwidth": 2,1149 "ax": 1030.2,1150 "axref": "x",1151 "ay": 150.69,1152 "ayref": "y",1153 "showarrow": true,1154 "x": 1416.6,1155 "xref": "x",1156 "y": 59.309,1157 "yref": "y"1158 },1159 {1160 "arrowcolor": "Gray",1161 "arrowhead": 2,1162 "arrowsize": 1,1163 "arrowwidth": 2,1164 "ax": 666.92,1165 "axref": "x",1166 "ay": 148.66,1167 "ayref": "y",1168 "showarrow": true,1169 "x": 680.41,1170 "xref": "x",1171 "y": 22.284,1172 "yref": "y"1173 },1174 {1175 "arrowcolor": "Gray",1176 "arrowhead": 2,1177 "arrowsize": 1,1178 "arrowwidth": 2,1179 "ax": 666.92,1180 "axref": "x",1181 "ay": 148.66,1182 "ayref": "y",1183 "showarrow": true,1184 "x": 1030.2,1185 "xref": "x",1186 "y": 150.69,1187 "yref": "y"1188 },1189 {1190 "arrowcolor": "Gray",1191 "arrowhead": 2,1192 "arrowsize": 1,1193 "arrowwidth": 2,1194 "ax": 742.74,1195 "axref": "x",1196 "ay": 256.01,1197 "ayref": "y",1198 "showarrow": true,1199 "x": 680.41,1200 "xref": "x",