aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison
diff options
context:
space:
mode:
authorLibravatar 20001LastOrder <boqi.chen@mail.mcgill.ca>2020-11-03 22:52:26 -0500
committerLibravatar 20001LastOrder <boqi.chen@mail.mcgill.ca>2020-11-03 22:52:26 -0500
commit945f487a08b643392a5d5918c631640b9a0e4605 (patch)
treeb537c456e395950ce98daaabb9468c7c17d5a72b /Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison
parentFix numeric-solver-at-end (diff)
downloadVIATRA-Generator-945f487a08b643392a5d5918c631640b9a0e4605.tar.gz
VIATRA-Generator-945f487a08b643392a5d5918c631640b9a0e4605.tar.zst
VIATRA-Generator-945f487a08b643392a5d5918c631640b9a0e4605.zip
add realistic solver
Diffstat (limited to 'Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison')
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/input/.gitignore3
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/Node Activity.jpgbin0 -> 456785 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/mpc.jpgbin0 -> 417210 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/out_degree.jpgbin0 -> 334113 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/Node Activity.jpgbin0 -> 485539 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/mpc.jpgbin0 -> 458414 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/out_degree.jpgbin0 -> 399413 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/Node Activity.jpgbin0 -> 450131 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/mpc.jpgbin0 -> 492440 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/out_degree.jpgbin0 -> 427143 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/Node Activity.jpgbin0 -> 387627 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/mpc.jpgbin0 -> 439155 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/out_degree.jpgbin0 -> 368624 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/mpc.jpgbin0 -> 363202 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/node activity.jpgbin0 -> 367839 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/out degree.jpgbin0 -> 284983 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/Node Activity.jpgbin0 -> 208107 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/mpc.jpgbin0 -> 157479 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/out_degree.jpgbin0 -> 199042 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/mpc.jpgbin0 -> 332516 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/node activity.jpgbin0 -> 316516 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/out degree.jpgbin0 -> 266138 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/MPC.jpgbin0 -> 509668 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/node activity.jpgbin0 -> 507236 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/out degree.jpgbin0 -> 500415 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/Node Activity.jpgbin0 -> 432110 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/mpc.jpgbin0 -> 390522 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/out_degree.jpgbin0 -> 332996 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/MPC.jpgbin0 -> 581421 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/node activity.jpgbin0 -> 558356 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/out degree.jpgbin0 -> 534429 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance.ipynb481
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance_with_selector.ipynb1600
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/representative_selector .ipynb392
34 files changed, 2476 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/input/.gitignore b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/input/.gitignore
new file mode 100644
index 00000000..b3934b01
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/input/.gitignore
@@ -0,0 +1,3 @@
1# ignore everything in this folder
2*
3!.gitignore \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/Node Activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/Node Activity.jpg
new file mode 100644
index 00000000..6b987b3e
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/Node Activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/mpc.jpg
new file mode 100644
index 00000000..ee8d5755
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/out_degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/out_degree.jpg
new file mode 100644
index 00000000..25e850fe
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_all/out_degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/Node Activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/Node Activity.jpg
new file mode 100644
index 00000000..8b3421b1
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/Node Activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/mpc.jpg
new file mode 100644
index 00000000..d459f5c8
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/out_degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/out_degree.jpg
new file mode 100644
index 00000000..fdaa28e6
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/out_degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/Node Activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/Node Activity.jpg
new file mode 100644
index 00000000..08445457
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/Node Activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/mpc.jpg
new file mode 100644
index 00000000..74ab2449
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/out_degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/out_degree.jpg
new file mode 100644
index 00000000..61c4489e
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_node_activity/out_degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/Node Activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/Node Activity.jpg
new file mode 100644
index 00000000..ccbca653
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/Node Activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/mpc.jpg
new file mode 100644
index 00000000..31965557
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/out_degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/out_degree.jpg
new file mode 100644
index 00000000..d4de5301
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_out_degree/out_degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/mpc.jpg
new file mode 100644
index 00000000..ee1d84dc
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/node activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/node activity.jpg
new file mode 100644
index 00000000..1a7e8bed
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/node activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/out degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/out degree.jpg
new file mode 100644
index 00000000..81d9b709
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/out degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/Node Activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/Node Activity.jpg
new file mode 100644
index 00000000..e26d6cf6
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/Node Activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/mpc.jpg
new file mode 100644
index 00000000..e1b9a1cf
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/out_degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/out_degree.jpg
new file mode 100644
index 00000000..713ed4f4
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/out_degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/mpc.jpg
new file mode 100644
index 00000000..9c26be81
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/node activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/node activity.jpg
new file mode 100644
index 00000000..3cb75479
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/node activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/out degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/out degree.jpg
new file mode 100644
index 00000000..0a869df6
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_normal/out degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/MPC.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/MPC.jpg
new file mode 100644
index 00000000..b6e86773
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/MPC.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/node activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/node activity.jpg
new file mode 100644
index 00000000..486577a6
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/node activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/out degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/out degree.jpg
new file mode 100644
index 00000000..4f338049
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/out degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/Node Activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/Node Activity.jpg
new file mode 100644
index 00000000..c1dba220
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/Node Activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/mpc.jpg
new file mode 100644
index 00000000..f51449d0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/out_degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/out_degree.jpg
new file mode 100644
index 00000000..dff91312
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_control_all_with_consistency/out_degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/MPC.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/MPC.jpg
new file mode 100644
index 00000000..2dc66b35
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/MPC.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/node activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/node activity.jpg
new file mode 100644
index 00000000..847bad62
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/node activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/out degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/out degree.jpg
new file mode 100644
index 00000000..90ff8006
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/out degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance.ipynb b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance.ipynb
new file mode 100644
index 00000000..550e3978
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance.ipynb
@@ -0,0 +1,481 @@
1{
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# Compare Metrics Distances to The Human Models"
8 ]
9 },
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
14 "### Imports"
15 ]
16 },
17 {
18 "cell_type": "code",
19 "execution_count": 48,
20 "metadata": {},
21 "outputs": [],
22 "source": [
23 "from GraphType import GraphStat\n",
24 "from GraphType import GraphCollection\n",
25 "from scipy import stats\n",
26 "from ipywidgets import interact, fixed, interactive\n",
27 "import readCSV as reader\n",
28 "import ipywidgets as widgets\n",
29 "import matplotlib.pyplot as plt\n",
30 "import random\n",
31 "import numpy as np\n",
32 "import constants\n"
33 ]
34 },
35 {
36 "cell_type": "markdown",
37 "metadata": {},
38 "source": [
39 "### Classes"
40 ]
41 },
42 {
43 "cell_type": "markdown",
44 "metadata": {},
45 "source": [
46 "* Record the average distances of different metrics for a model to the human models "
47 ]
48 },
49 {
50 "cell_type": "code",
51 "execution_count": 49,
52 "metadata": {},
53 "outputs": [],
54 "source": [
55 "class GraphDistance:\n",
56 " #init with a graph stat and a collection of graph stats\n",
57 " def __init__(self, graphStat, collection):\n",
58 " self.graph = graphStat\n",
59 " self.collection = collection\n",
60 " self.out_d_distance = average_ks_distance(collection.out_ds, graphStat.out_d)\n",
61 " self.na_distance = average_ks_distance(collection.nas, graphStat.na)\n",
62 " self.mpc_distance = average_ks_distance(collection.mpcs, graphStat.mpc)"
63 ]
64 },
65 {
66 "cell_type": "markdown",
67 "metadata": {},
68 "source": [
69 "### Methods"
70 ]
71 },
72 {
73 "cell_type": "markdown",
74 "metadata": {},
75 "source": [
76 "* Calculate the average ks distance"
77 ]
78 },
79 {
80 "cell_type": "code",
81 "execution_count": 50,
82 "metadata": {},
83 "outputs": [],
84 "source": [
85 "def average_ks_distance(targets, sample):\n",
86 " distance = 0.0\n",
87 " for target in targets:\n",
88 " value, p = stats.ks_2samp(target, sample)\n",
89 " distance += value\n",
90 " distance = distance / len(targets)\n",
91 " return distance\n"
92 ]
93 },
94 {
95 "cell_type": "markdown",
96 "metadata": {
97 "pycharm": {
98 "name": "#%% md\n"
99 }
100 },
101 "source": [
102 "* Find the median ks distance of the same number of nodes"
103 ]
104 },
105 {
106 "cell_type": "code",
107 "execution_count": 51,
108 "metadata": {
109 "pycharm": {
110 "name": "#%%\n"
111 }
112 },
113 "outputs": [],
114 "source": [
115 "def find_median(x, metric_distances):\n",
116 " distance_dic = {}\n",
117 " for index, num_of_nodes in enumerate(x):\n",
118 " if num_of_nodes[0] not in distance_dic:\n",
119 " distance_dic[num_of_nodes[0]] = []\n",
120 " distance_dic[num_of_nodes[0]].append(metric_distances[index])\n",
121 " median_x = []\n",
122 " y = []\n",
123 " for num_of_nodes, distances in distance_dic.items():\n",
124 " median_x.append(num_of_nodes)\n",
125 " y.append(np.median(distances))\n",
126 " order = np.argsort(median_x)\n",
127 " median_x = np.array(median_x)[order]\n",
128 " median_y = np.array(y)[order]\n",
129 " return median_x, median_y\n"
130 ]
131 },
132 {
133 "cell_type": "markdown",
134 "metadata": {},
135 "source": [
136 "* Plot Diagram"
137 ]
138 },
139 {
140 "cell_type": "code",
141 "execution_count": 52,
142 "metadata": {},
143 "outputs": [],
144 "source": [
145 "# metric_selector: GraphDistance -> float\n",
146 "def plot(infos, lines, id, metric_selector,colors, title):\n",
147 " metric_distances = retrive_info_from_list(metric_selector, list(infos.values()))\n",
148 " x = retrive_info_from_list(lambda a : a.graph.num_nodes, list(infos.values()))\n",
149 " graph = plt.figure(id,figsize=(18, 10))\n",
150 " plt.title(title)\n",
151 " plt.plot(x, metric_distances, color='red', linestyle='', marker='o',alpha=0.7)\n",
152 " #plot ks distance median\n",
153 " median_x, median_y = find_median(x, metric_distances)\n",
154 " plt.plot(median_x, median_y, color='black',marker='o')\n",
155 " for i in range(0, len(lines)):\n",
156 " line_infos = retrive_info_from_list(lambda a: infos[a], lines[i])\n",
157 " line_y = retrive_info_from_list(metric_selector, line_infos)\n",
158 " line_x = retrive_info_from_list(lambda a : a.graph.num_nodes, line_infos)\n",
159 " plt.plot(line_x, line_y, marker='o', color=colors[i])\n",
160 " #graph.show()"
161 ]
162 },
163 {
164 "cell_type": "markdown",
165 "metadata": {},
166 "source": [
167 "* Retrieve information from a list "
168 ]
169 },
170 {
171 "cell_type": "code",
172 "execution_count": 53,
173 "metadata": {},
174 "outputs": [],
175 "source": [
176 "def retrive_info_from_list(selector, distances):\n",
177 " return list(map(selector, distances))"
178 ]
179 },
180 {
181 "cell_type": "markdown",
182 "metadata": {},
183 "source": [
184 "### Read Models"
185 ]
186 },
187 {
188 "cell_type": "code",
189 "execution_count": 54,
190 "metadata": {},
191 "outputs": [],
192 "source": [
193 "human = GraphCollection('../statistics/humanOutput/', 300, 'Human', True)\n",
194 "file_names = reader.readmultiplefiles('../statistics/viatraEvolve/', 1000, False)"
195 ]
196 },
197 {
198 "cell_type": "markdown",
199 "metadata": {},
200 "source": [
201 "### Calculate Distances"
202 ]
203 },
204 {
205 "cell_type": "code",
206 "execution_count": 55,
207 "metadata": {},
208 "outputs": [],
209 "source": [
210 "# Progress Widge\n",
211 "w2 = widgets.FloatProgress(\n",
212 " value=0,\n",
213 " min=0,\n",
214 " max=1.0,\n",
215 " step=0.1,\n",
216 " description='Loading Files...:',\n",
217 " bar_style='info',\n",
218 " orientation='horizontal'\n",
219 ")"
220 ]
221 },
222 {
223 "cell_type": "code",
224 "execution_count": 56,
225 "metadata": {},
226 "outputs": [
227 {
228 "data": {
229 "application/vnd.jupyter.widget-view+json": {
230 "model_id": "ca7932bce2a741afaff6b919042c42b0",
231 "version_major": 2,
232 "version_minor": 0
233 },
234 "text/plain": [
235 "FloatProgress(value=0.0, bar_style='info', description='Loading Files...:', max=1.0)"
236 ]
237 },
238 "metadata": {},
239 "output_type": "display_data"
240 }
241 ],
242 "source": [
243 "infos = []\n",
244 "# read all files\n",
245 "counter = 0.0\n",
246 "size = len(file_names)\n",
247 "#display progress bar\n",
248 "display(w2)\n",
249 "for name in file_names:\n",
250 " infos.append(GraphStat(name))\n",
251 "\n",
252 "info_dic = {}\n",
253 "for info in infos:\n",
254 " w2.value = (counter/size)\n",
255 " counter+=1\n",
256 " info = GraphDistance(info, human)\n",
257 " info_dic[info.graph.id] = info"
258 ]
259 },
260 {
261 "cell_type": "markdown",
262 "metadata": {},
263 "source": [
264 "#### Plot Graphs"
265 ]
266 },
267 {
268 "cell_type": "markdown",
269 "metadata": {},
270 "source": [
271 "* widget for select trajectory"
272 ]
273 },
274 {
275 "cell_type": "code",
276 "execution_count": 57,
277 "metadata": {},
278 "outputs": [],
279 "source": [
280 "filenames = reader.readmultiplefiles('../statistics/trajectories/', 10, False)\n",
281 "trajectories = {}\n",
282 "for name in filenames:\n",
283 " trajectories[name] = reader.readTrajectory(name)\n",
284 "\n",
285 "w = widgets.SelectMultiple(\n",
286 " options = trajectories,\n",
287 " value = [trajectories[filenames[0]]],\n",
288 " description='Trajectory:',\n",
289 " disabled=False,\n",
290 ")\n",
291 "\n",
292 "#generate random color for each line\n",
293 "colors = []\n",
294 "\n",
295 "for i in range(0, len(trajectories)):\n",
296 " color = \"#%06x\" % random.randint(0, 0xFFFFFF)\n",
297 " colors.append(color)"
298 ]
299 },
300 {
301 "cell_type": "markdown",
302 "metadata": {},
303 "source": [
304 "#### Out Degree"
305 ]
306 },
307 {
308 "cell_type": "code",
309 "execution_count": 63,
310 "metadata": {},
311 "outputs": [
312 {
313 "data": {
314 "application/vnd.jupyter.widget-view+json": {
315 "model_id": "08da62cb0c3f4e6e9591c7dc811d27cc",
316 "version_major": 2,
317 "version_minor": 0
318 },
319 "text/plain": [
320 "interactive(children=(SelectMultiple(description='Trajectory:', index=(1,), options={'../statistics/trajectori…"
321 ]
322 },
323 "metadata": {},
324 "output_type": "display_data"
325 },
326 {
327 "data": {
328 "text/plain": [
329 "<function __main__.plot_out_degree(lines)>"
330 ]
331 },
332 "execution_count": 63,
333 "metadata": {},
334 "output_type": "execute_result"
335 }
336 ],
337 "source": [
338 "def plot_out_degree(lines):\n",
339 " plot(info_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree')\n",
340 "interact(plot_out_degree, lines=w)"
341 ]
342 },
343 {
344 "cell_type": "markdown",
345 "metadata": {},
346 "source": [
347 "#### Node Activity"
348 ]
349 },
350 {
351 "cell_type": "code",
352 "execution_count": 64,
353 "metadata": {
354 "scrolled": true
355 },
356 "outputs": [
357 {
358 "data": {
359 "application/vnd.jupyter.widget-view+json": {
360 "model_id": "a708f43645a24bd2b15b53ea12c7d88f",
361 "version_major": 2,
362 "version_minor": 0
363 },
364 "text/plain": [
365 "interactive(children=(SelectMultiple(description='Trajectory:', index=(1,), options={'../statistics/trajectori…"
366 ]
367 },
368 "metadata": {},
369 "output_type": "display_data"
370 },
371 {
372 "data": {
373 "text/plain": [
374 "<function __main__.plot_na(lines)>"
375 ]
376 },
377 "execution_count": 64,
378 "metadata": {},
379 "output_type": "execute_result"
380 }
381 ],
382 "source": [
383 "def plot_na(lines):\n",
384 " plot(info_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity')\n",
385 "interact(plot_na, lines=w)"
386 ]
387 },
388 {
389 "cell_type": "markdown",
390 "metadata": {},
391 "source": [
392 "#### MPC"
393 ]
394 },
395 {
396 "cell_type": "code",
397 "execution_count": null,
398 "metadata": {},
399 "outputs": [],
400 "source": []
401 },
402 {
403 "cell_type": "code",
404 "execution_count": 65,
405 "metadata": {},
406 "outputs": [
407 {
408 "data": {
409 "application/vnd.jupyter.widget-view+json": {
410 "model_id": "124a0cb0ebfb4225bf4ced24c09032f7",
411 "version_major": 2,
412 "version_minor": 0
413 },
414 "text/plain": [
415 "interactive(children=(SelectMultiple(description='Trajectory:', index=(1,), options={'../statistics/trajectori…"
416 ]
417 },
418 "metadata": {},
419 "output_type": "display_data"
420 },
421 {
422 "data": {
423 "text/plain": [
424 "<function __main__.plot_out_degree(lines)>"
425 ]
426 },
427 "execution_count": 65,
428 "metadata": {},
429 "output_type": "execute_result"
430 }
431 ],
432 "source": [
433 "def plot_out_degree(lines):\n",
434 " plot(info_dic, lines, 0, lambda a: a.mpc_distance, colors, 'MPC')\n",
435 "interact(plot_out_degree, lines=w)"
436 ]
437 },
438 {
439 "cell_type": "code",
440 "execution_count": 19,
441 "metadata": {},
442 "outputs": [],
443 "source": [
444 "for name in file_names:\n",
445 " contents = reader.readcsvfile(name)\n",
446 " if(contents['State Id'][0] == 1032396643):\n",
447 " print(name)"
448 ]
449 }
450 ],
451 "metadata": {
452 "kernelspec": {
453 "display_name": "Python 3",
454 "language": "python",
455 "name": "python3"
456 },
457 "language_info": {
458 "codemirror_mode": {
459 "name": "ipython",
460 "version": 3
461 },
462 "file_extension": ".py",
463 "mimetype": "text/x-python",
464 "name": "python",
465 "nbconvert_exporter": "python",
466 "pygments_lexer": "ipython3",
467 "version": "3.7.3"
468 },
469 "pycharm": {
470 "stem_cell": {
471 "cell_type": "raw",
472 "metadata": {
473 "collapsed": false
474 },
475 "source": []
476 }
477 }
478 },
479 "nbformat": 4,
480 "nbformat_minor": 2
481}
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance_with_selector.ipynb b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance_with_selector.ipynb
new file mode 100644
index 00000000..000822bf
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance_with_selector.ipynb
@@ -0,0 +1,1600 @@
1{
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# Measuremments with Representative"
8 ]
9 },
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
14 "### Imports"
15 ]
16 },
17 {
18 "cell_type": "code",
19 "execution_count": 1,
20 "metadata": {},
21 "outputs": [],
22 "source": [
23 "import os, sys\n",
24 "lib_path = os.path.abspath(os.path.join('..', '..', 'utils'))\n",
25 "sys.path.append(lib_path)\n",
26 "from GraphType import GraphStat\n",
27 "from GraphType import GraphCollection\n",
28 "from scipy import stats\n",
29 "from ipywidgets import interact, fixed, interactive\n",
30 "import readCSV as reader\n",
31 "import ipywidgets as widgets\n",
32 "import matplotlib.pyplot as plt\n",
33 "import random\n",
34 "import numpy as np\n",
35 "import constants\n"
36 ]
37 },
38 {
39 "cell_type": "markdown",
40 "metadata": {},
41 "source": [
42 "### Classes"
43 ]
44 },
45 {
46 "cell_type": "markdown",
47 "metadata": {},
48 "source": [
49 "* Record the distances of different metrics using a representative"
50 ]
51 },
52 {
53 "cell_type": "code",
54 "execution_count": 2,
55 "metadata": {},
56 "outputs": [],
57 "source": [
58 "class GraphDistanceWithRep:\n",
59 " #init with a graph stat and a collection of graph stats\n",
60 " def __init__(self, graphStat, rep):\n",
61 " self.graph = graphStat\n",
62 " self.rep = rep\n",
63 " self.out_d_distance, _ = stats.ks_2samp(graphStat.out_d, rep.out_d)\n",
64 " self.na_distance,_ = stats.ks_2samp(graphStat.na, rep.na)\n",
65 " self.mpc_distance,_ = stats.ks_2samp(graphStat.mpc, rep.mpc)\n"
66 ]
67 },
68 {
69 "cell_type": "markdown",
70 "metadata": {},
71 "source": [
72 "### Methods\n"
73 ]
74 },
75 {
76 "cell_type": "markdown",
77 "metadata": {},
78 "source": [
79 "* Find the median ks distance of the same number of nodes"
80 ]
81 },
82 {
83 "cell_type": "code",
84 "execution_count": 3,
85 "metadata": {},
86 "outputs": [],
87 "source": [
88 "def find_median(x, metric_distances):\n",
89 " distance_dic = {}\n",
90 " for index, num_of_nodes in enumerate(x):\n",
91 " if num_of_nodes[0] not in distance_dic:\n",
92 " distance_dic[num_of_nodes[0]] = []\n",
93 " distance_dic[num_of_nodes[0]].append(metric_distances[index])\n",
94 " median_x = []\n",
95 " y = []\n",
96 " for num_of_nodes, distances in distance_dic.items():\n",
97 " median_x.append(num_of_nodes)\n",
98 " y.append(np.median(distances))\n",
99 " order = np.argsort(median_x)\n",
100 " median_x = np.array(median_x)[order]\n",
101 " median_y = np.array(y)[order]\n",
102 " return median_x, median_y\n"
103 ]
104 },
105 {
106 "cell_type": "markdown",
107 "metadata": {},
108 "source": [
109 "* Plot Diagram"
110 ]
111 },
112 {
113 "cell_type": "code",
114 "execution_count": 4,
115 "metadata": {},
116 "outputs": [],
117 "source": [
118 "# metric_selector: GraphDistance -> float\n",
119 "def plot(infos, lines, id, metric_selector,colors, title, foldername):\n",
120 " metric_distances = retrive_info_from_list(metric_selector, list(infos.values()))\n",
121 " x = retrive_info_from_list(lambda a : a.graph.num_nodes, list(infos.values()))\n",
122 " graph = plt.figure(id,figsize=(18, 10))\n",
123 " plt.title(title)\n",
124 " plt.plot(x, metric_distances, color='red', linestyle='', marker='o',alpha=0.7)\n",
125 " #plot ks distance median\n",
126 " median_x, median_y = find_median(x, metric_distances)\n",
127 " plt.plot(median_x, median_y, color='black',marker='o')\n",
128 " for i in range(0, len(lines)):\n",
129 " line_infos = retrive_info_from_list(lambda a: infos[a], lines[i])\n",
130 " line_y = retrive_info_from_list(metric_selector, line_infos)\n",
131 " line_x = retrive_info_from_list(lambda a : a.graph.num_nodes, line_infos)\n",
132 " plt.plot(line_x, line_y, marker='o', color=colors[i])\n",
133 " mkdir_p(foldername)\n",
134 " plt.savefig(fname = foldername+title+'.jpg', dpi=150)\n",
135 " #graph.show()"
136 ]
137 },
138 {
139 "cell_type": "markdown",
140 "metadata": {},
141 "source": [
142 "* Retrieve information from a list "
143 ]
144 },
145 {
146 "cell_type": "code",
147 "execution_count": 5,
148 "metadata": {},
149 "outputs": [],
150 "source": [
151 "def retrive_info_from_list(selector, distances):\n",
152 " return list(map(selector, distances))"
153 ]
154 },
155 {
156 "cell_type": "code",
157 "execution_count": 6,
158 "metadata": {},
159 "outputs": [],
160 "source": [
161 "def readStats(path, numModels):\n",
162 " names = reader.readmultiplefiles(path, numModels, False)\n",
163 " stats = []\n",
164 " for name in names:\n",
165 " stats.append(GraphStat(name))\n",
166 " return stats"
167 ]
168 },
169 {
170 "cell_type": "code",
171 "execution_count": 7,
172 "metadata": {},
173 "outputs": [],
174 "source": [
175 "def calDistanceDic(stats, rep):\n",
176 " dic = {}\n",
177 " for info in stats:\n",
178 " info = GraphDistanceWithRep(info, rep)\n",
179 " dic[info.graph.id] = info\n",
180 " return dic"
181 ]
182 },
183 {
184 "cell_type": "code",
185 "execution_count": 8,
186 "metadata": {},
187 "outputs": [],
188 "source": [
189 "def createRandomColors(size):\n",
190 " #generate random color for each line\n",
191 " colors = []\n",
192 "\n",
193 " for i in range(0, size):\n",
194 " color = \"#%06x\" % random.randint(0, 0xFFFFFF)\n",
195 " colors.append(color)\n",
196 " return colors"
197 ]
198 },
199 {
200 "cell_type": "code",
201 "execution_count": 9,
202 "metadata": {},
203 "outputs": [],
204 "source": [
205 "def createSelectionWidge(options):\n",
206 " w = widgets.SelectMultiple(\n",
207 " options = options,\n",
208 " value = [],\n",
209 " description='Trajectory:',\n",
210 " disabled=False,\n",
211 " )\n",
212 " return w"
213 ]
214 },
215 {
216 "cell_type": "code",
217 "execution_count": 10,
218 "metadata": {},
219 "outputs": [],
220 "source": [
221 "def mkdir_p(mypath):\n",
222 " '''Creates a directory. equivalent to using mkdir -p on the command line'''\n",
223 "\n",
224 " from errno import EEXIST\n",
225 " from os import makedirs,path\n",
226 "\n",
227 " try:\n",
228 " makedirs(mypath)\n",
229 " except OSError as exc: # Python >2.5\n",
230 " if exc.errno == EEXIST and path.isdir(mypath):\n",
231 " pass\n",
232 " else: raise"
233 ]
234 },
235 {
236 "cell_type": "markdown",
237 "metadata": {},
238 "source": [
239 "## Metrics During GenerationPlots"
240 ]
241 },
242 {
243 "cell_type": "markdown",
244 "metadata": {},
245 "source": [
246 "### Read Human Representatives"
247 ]
248 },
249 {
250 "cell_type": "code",
251 "execution_count": 11,
252 "metadata": {},
253 "outputs": [],
254 "source": [
255 "### Read Models\n",
256 "#read representative\n",
257 "human_rep = GraphStat(constants.HUMAN_OUT_D_REP)\n",
258 "human_na = GraphStat(constants.HUMAN_NA_REP)\n",
259 "human_mpc = GraphStat(constants.HUMAN_MPC_REP)\n",
260 "\n",
261 "# assign rep distributions to human_rep\n",
262 "human_rep.na = human_na.na\n",
263 "human_rep.mpc = human_mpc.mpc"
264 ]
265 },
266 {
267 "cell_type": "markdown",
268 "metadata": {},
269 "source": [
270 "## Viatra No Constraint"
271 ]
272 },
273 {
274 "cell_type": "code",
275 "execution_count": 12,
276 "metadata": {},
277 "outputs": [],
278 "source": [
279 "# Read generated models\n",
280 "viatra_no_con_stats = readStats('../input/viatra_nocon_output/', 5000)\n",
281 "viatra_no_con_dic = calDistanceDic(viatra_no_con_stats, human_rep)"
282 ]
283 },
284 {
285 "cell_type": "code",
286 "execution_count": 13,
287 "metadata": {},
288 "outputs": [],
289 "source": [
290 "filenames = reader.readmultiplefiles('../input/viatra_nocon_output/trajectories/', 15, False)\n",
291 "trajectories = {}\n",
292 "for name in filenames:\n",
293 " trajectories[name] = reader.readTrajectory(name)\n",
294 "w = createSelectionWidge(trajectories)\n",
295 "colors = createRandomColors(len(trajectories))"
296 ]
297 },
298 {
299 "cell_type": "code",
300 "execution_count": 14,
301 "metadata": {},
302 "outputs": [
303 {
304 "data": {
305 "application/vnd.jupyter.widget-view+json": {
306 "model_id": "a8471e4dd66a47ecb6abb2371be43321",
307 "version_major": 2,
308 "version_minor": 0
309 },
310 "text/plain": [
311 "interactive(children=(SelectMultiple(description='Trajectory:', options={'../input/viatra_nocon_output/traject…"
312 ]
313 },
314 "metadata": {},
315 "output_type": "display_data"
316 },
317 {
318 "data": {
319 "text/plain": [
320 "<function __main__.plot_out_degree(lines)>"
321 ]
322 },
323 "execution_count": 14,
324 "metadata": {},
325 "output_type": "execute_result"
326 }
327 ],
328 "source": [
329 "def plot_out_degree(lines):\n",
330 " plot(viatra_no_con_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree', '../output/viatra_no_constraints/')\n",
331 "interact(plot_out_degree, lines=w)"
332 ]
333 },
334 {
335 "cell_type": "code",
336 "execution_count": 15,
337 "metadata": {},
338 "outputs": [
339 {
340 "data": {
341 "application/vnd.jupyter.widget-view+json": {
342 "model_id": "ad6e466cc3fe44d393d2c82d48244d83",
343 "version_major": 2,
344 "version_minor": 0
345 },
346 "text/plain": [
347 "interactive(children=(SelectMultiple(description='Trajectory:', options={'../input/viatra_nocon_output/traject…"
348 ]
349 },
350 "metadata": {},
351 "output_type": "display_data"
352 },
353 {
354 "data": {
355 "text/plain": [
356 "<function __main__.plot_out_na(lines)>"
357 ]
358 },
359 "execution_count": 15,
360 "metadata": {},
361 "output_type": "execute_result"
362 }
363 ],
364 "source": [
365 "def plot_out_na(lines):\n",
366 " plot(viatra_no_con_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity', '../output/viatra_no_constraints/')\n",
367 "interact(plot_out_na, lines=w)"
368 ]
369 },
370 {
371 "cell_type": "code",
372 "execution_count": 16,
373 "metadata": {},
374 "outputs": [
375 {
376 "data": {
377 "application/vnd.jupyter.widget-view+json": {
378 "model_id": "d88ebc8e4062473a96ac35fe800028ef",
379 "version_major": 2,
380 "version_minor": 0
381 },
382 "text/plain": [
383 "interactive(children=(SelectMultiple(description='Trajectory:', options={'../input/viatra_nocon_output/traject…"
384 ]
385 },
386 "metadata": {},
387 "output_type": "display_data"
388 },
389 {
390 "data": {
391 "text/plain": [
392 "<function __main__.plot_out_mpc(lines)>"
393 ]
394 },
395 "execution_count": 16,
396 "metadata": {},
397 "output_type": "execute_result"
398 }
399 ],
400 "source": [
401 "def plot_out_mpc(lines):\n",
402 " plot(viatra_no_con_dic, lines, 0, lambda a: a.mpc_distance, colors, 'MPC', '../output/viatra_no_constraints/')\n",
403 "interact(plot_out_mpc, lines=w)"
404 ]
405 },
406 {
407 "cell_type": "markdown",
408 "metadata": {},
409 "source": [
410 "## Viatra with constraints"
411 ]
412 },
413 {
414 "cell_type": "code",
415 "execution_count": 17,
416 "metadata": {},
417 "outputs": [],
418 "source": [
419 "viatra_con_stats = readStats('../input/viatra_con_output/',5000)\n",
420 "viatra_con_dic = calDistanceDic(viatra_con_stats, human_rep)\n",
421 "\n",
422 "# trajectories and colors\n",
423 "trajectories = {}\n",
424 "w = createSelectionWidge(trajectories)\n",
425 "colors = createRandomColors(len(trajectories))"
426 ]
427 },
428 {
429 "cell_type": "code",
430 "execution_count": 18,
431 "metadata": {},
432 "outputs": [
433 {
434 "data": {
435 "application/vnd.jupyter.widget-view+json": {
436 "model_id": "1eb2ba5848a048389bca8d804fc8340a",
437 "version_major": 2,
438 "version_minor": 0
439 },
440 "text/plain": [
441 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
442 ]
443 },
444 "metadata": {},
445 "output_type": "display_data"
446 },
447 {
448 "data": {
449 "text/plain": [
450 "<function __main__.plot_out_degree(lines)>"
451 ]
452 },
453 "execution_count": 18,
454 "metadata": {},
455 "output_type": "execute_result"
456 }
457 ],
458 "source": [
459 "def plot_out_degree(lines):\n",
460 " plot(viatra_con_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree', '../output/viatra_constraints/')\n",
461 "interact(plot_out_degree, lines=[[]])"
462 ]
463 },
464 {
465 "cell_type": "code",
466 "execution_count": 19,
467 "metadata": {},
468 "outputs": [
469 {
470 "data": {
471 "application/vnd.jupyter.widget-view+json": {
472 "model_id": "6e5840f7a5ad4515bce9080088b644f2",
473 "version_major": 2,
474 "version_minor": 0
475 },
476 "text/plain": [
477 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
478 ]
479 },
480 "metadata": {},
481 "output_type": "display_data"
482 },
483 {
484 "data": {
485 "text/plain": [
486 "<function __main__.plot_na(lines)>"
487 ]
488 },
489 "execution_count": 19,
490 "metadata": {},
491 "output_type": "execute_result"
492 }
493 ],
494 "source": [
495 "def plot_na(lines):\n",
496 " plot(viatra_con_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity', '../output/viatra_constraints/')\n",
497 "interact(plot_na, lines=[[]])"
498 ]
499 },
500 {
501 "cell_type": "code",
502 "execution_count": 20,
503 "metadata": {},
504 "outputs": [
505 {
506 "data": {
507 "application/vnd.jupyter.widget-view+json": {
508 "model_id": "9e30f267b092491ba1ffe8f83c5f68ce",
509 "version_major": 2,
510 "version_minor": 0
511 },
512 "text/plain": [
513 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
514 ]
515 },
516 "metadata": {},
517 "output_type": "display_data"
518 },
519 {
520 "data": {
521 "text/plain": [
522 "<function __main__.plot_mpc(lines)>"
523 ]
524 },
525 "execution_count": 20,
526 "metadata": {},
527 "output_type": "execute_result"
528 }
529 ],
530 "source": [
531 "def plot_mpc(lines):\n",
532 " plot(viatra_con_dic, lines, 0, lambda a: a.mpc_distance, colors, 'MPC', '../output/viatra_constraints/')\n",
533 "interact(plot_mpc, lines=[[]])"
534 ]
535 },
536 {
537 "cell_type": "markdown",
538 "metadata": {},
539 "source": [
540 "## Controlled RandomEMF"
541 ]
542 },
543 {
544 "cell_type": "code",
545 "execution_count": 21,
546 "metadata": {},
547 "outputs": [],
548 "source": [
549 "random_emf_stats = readStats('../input/random_emf_output/',5000)\n",
550 "random_emf_dic = calDistanceDic(random_emf_stats, human_rep)\n",
551 "\n",
552 "# trajectories and colors\n",
553 "trajectories = {}\n",
554 "w = createSelectionWidge(trajectories)\n",
555 "colors = createRandomColors(len(trajectories))"
556 ]
557 },
558 {
559 "cell_type": "code",
560 "execution_count": 22,
561 "metadata": {},
562 "outputs": [
563 {
564 "data": {
565 "application/vnd.jupyter.widget-view+json": {
566 "model_id": "cc1f64c92e814c32a81cd5ec5d4e50dc",
567 "version_major": 2,
568 "version_minor": 0
569 },
570 "text/plain": [
571 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
572 ]
573 },
574 "metadata": {},
575 "output_type": "display_data"
576 },
577 {
578 "data": {
579 "text/plain": [
580 "<function __main__.plot_out_degree(lines)>"
581 ]
582 },
583 "execution_count": 22,
584 "metadata": {},
585 "output_type": "execute_result"
586 }
587 ],
588 "source": [
589 "def plot_out_degree(lines):\n",
590 " plot(random_emf_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree', '../output/random_emf/')\n",
591 "interact(plot_out_degree, lines=[[]])"
592 ]
593 },
594 {
595 "cell_type": "code",
596 "execution_count": 23,
597 "metadata": {},
598 "outputs": [
599 {
600 "data": {
601 "application/vnd.jupyter.widget-view+json": {
602 "model_id": "75021f4f68db4a809ce7c86c0d25ef1b",
603 "version_major": 2,
604 "version_minor": 0
605 },
606 "text/plain": [
607 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
608 ]
609 },
610 "metadata": {},
611 "output_type": "display_data"
612 },
613 {
614 "data": {
615 "text/plain": [
616 "<function __main__.plot_node_activity(lines)>"
617 ]
618 },
619 "execution_count": 23,
620 "metadata": {},
621 "output_type": "execute_result"
622 }
623 ],
624 "source": [
625 "def plot_node_activity(lines):\n",
626 " plot(random_emf_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity', '../output/random_emf/')\n",
627 "interact(plot_node_activity, lines=[[]])"
628 ]
629 },
630 {
631 "cell_type": "code",
632 "execution_count": 24,
633 "metadata": {},
634 "outputs": [
635 {
636 "data": {
637 "application/vnd.jupyter.widget-view+json": {
638 "model_id": "86f5c376905a4759a7b44ad52804424d",
639 "version_major": 2,
640 "version_minor": 0
641 },
642 "text/plain": [
643 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
644 ]
645 },
646 "metadata": {},
647 "output_type": "display_data"
648 },
649 {
650 "data": {
651 "text/plain": [
652 "<function __main__.plot_mpc(lines)>"
653 ]
654 },
655 "execution_count": 24,
656 "metadata": {},
657 "output_type": "execute_result"
658 }
659 ],
660 "source": [
661 "def plot_mpc(lines):\n",
662 " plot(random_emf_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/random_emf/')\n",
663 "interact(plot_mpc, lines=[[]])"
664 ]
665 },
666 {
667 "cell_type": "markdown",
668 "metadata": {},
669 "source": [
670 "## Controlled Viatra with MPC"
671 ]
672 },
673 {
674 "cell_type": "code",
675 "execution_count": 25,
676 "metadata": {},
677 "outputs": [],
678 "source": [
679 "con_viatra_stats = readStats('../input/controled_viatra_mpc/',5000)\n",
680 "con_viatra_dic = calDistanceDic(con_viatra_stats, human_rep)\n",
681 "\n",
682 "# trajectories and colors\n",
683 "trajectories = {}\n",
684 "w = createSelectionWidge(trajectories)\n",
685 "colors = createRandomColors(len(trajectories))"
686 ]
687 },
688 {
689 "cell_type": "code",
690 "execution_count": 26,
691 "metadata": {},
692 "outputs": [
693 {
694 "data": {
695 "application/vnd.jupyter.widget-view+json": {
696 "model_id": "57ba4d8443c145ad845fb862e3ef7519",
697 "version_major": 2,
698 "version_minor": 0
699 },
700 "text/plain": [
701 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
702 ]
703 },
704 "metadata": {},
705 "output_type": "display_data"
706 },
707 {
708 "data": {
709 "text/plain": [
710 "<function __main__.plot_out_degree(lines)>"
711 ]
712 },
713 "execution_count": 26,
714 "metadata": {},
715 "output_type": "execute_result"
716 }
717 ],
718 "source": [
719 "def plot_out_degree(lines):\n",
720 " plot(con_viatra_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out_degree', '../output/controled_viatra_with_mpc/')\n",
721 "interact(plot_out_degree, lines=w)"
722 ]
723 },
724 {
725 "cell_type": "code",
726 "execution_count": 27,
727 "metadata": {},
728 "outputs": [
729 {
730 "data": {
731 "application/vnd.jupyter.widget-view+json": {
732 "model_id": "c020ecb466c14f3ca1bfc0fd2fe03b7b",
733 "version_major": 2,
734 "version_minor": 0
735 },
736 "text/plain": [
737 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
738 ]
739 },
740 "metadata": {},
741 "output_type": "display_data"
742 },
743 {
744 "data": {
745 "text/plain": [
746 "<function __main__.plot_na(lines)>"
747 ]
748 },
749 "execution_count": 27,
750 "metadata": {},
751 "output_type": "execute_result"
752 }
753 ],
754 "source": [
755 "def plot_na(lines):\n",
756 " plot(con_viatra_dic, lines, 0, lambda a: a.na_distance, colors, 'Node Activity', '../output/controled_viatra_with_mpc/')\n",
757 "interact(plot_na, lines=w)"
758 ]
759 },
760 {
761 "cell_type": "code",
762 "execution_count": 28,
763 "metadata": {},
764 "outputs": [
765 {
766 "data": {
767 "application/vnd.jupyter.widget-view+json": {
768 "model_id": "2165668057fd47ad92459e749ec68bad",
769 "version_major": 2,
770 "version_minor": 0
771 },
772 "text/plain": [
773 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
774 ]
775 },
776 "metadata": {},
777 "output_type": "display_data"
778 },
779 {
780 "data": {
781 "text/plain": [
782 "<function __main__.plot_mpc(lines)>"
783 ]
784 },
785 "execution_count": 28,
786 "metadata": {},
787 "output_type": "execute_result"
788 }
789 ],
790 "source": [
791 "def plot_mpc(lines):\n",
792 " plot(con_viatra_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/controled_viatra_with_mpc/')\n",
793 "interact(plot_mpc, lines=w)"
794 ]
795 },
796 {
797 "cell_type": "markdown",
798 "metadata": {},
799 "source": [
800 "## (Pseudo) Random EMF instantiator"
801 ]
802 },
803 {
804 "cell_type": "code",
805 "execution_count": 29,
806 "metadata": {},
807 "outputs": [],
808 "source": [
809 "random_emf_stats = readStats('../input/real_random_output/',5000)\n",
810 "random_emf_dic = calDistanceDic(random_emf_stats, human_rep)\n",
811 "\n",
812 "# trajectories and colors\n",
813 "trajectories = {}\n",
814 "w = createSelectionWidge(trajectories)\n",
815 "colors = createRandomColors(len(trajectories))"
816 ]
817 },
818 {
819 "cell_type": "code",
820 "execution_count": 30,
821 "metadata": {},
822 "outputs": [
823 {
824 "data": {
825 "application/vnd.jupyter.widget-view+json": {
826 "model_id": "907d7824033b4dfe980c391db0da63eb",
827 "version_major": 2,
828 "version_minor": 0
829 },
830 "text/plain": [
831 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
832 ]
833 },
834 "metadata": {},
835 "output_type": "display_data"
836 },
837 {
838 "data": {
839 "text/plain": [
840 "<function __main__.plot_out_degree(lines)>"
841 ]
842 },
843 "execution_count": 30,
844 "metadata": {},
845 "output_type": "execute_result"
846 }
847 ],
848 "source": [
849 "def plot_out_degree(lines):\n",
850 " plot(random_emf_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out_degree', '../output/random_emf_instantiator/')\n",
851 "interact(plot_out_degree, lines=w)"
852 ]
853 },
854 {
855 "cell_type": "code",
856 "execution_count": 31,
857 "metadata": {},
858 "outputs": [
859 {
860 "data": {
861 "application/vnd.jupyter.widget-view+json": {
862 "model_id": "08a32c21d0b64217a556715caa8db7b5",
863 "version_major": 2,
864 "version_minor": 0
865 },
866 "text/plain": [
867 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
868 ]
869 },
870 "metadata": {},
871 "output_type": "display_data"
872 },
873 {
874 "data": {
875 "text/plain": [
876 "<function __main__.plot_na(lines)>"
877 ]
878 },
879 "execution_count": 31,
880 "metadata": {},
881 "output_type": "execute_result"
882 }
883 ],
884 "source": [
885 "def plot_na(lines):\n",
886 " plot(random_emf_dic, lines, 0, lambda a: a.na_distance, colors, 'Node Activity', '../output/random_emf_instantiator/')\n",
887 "interact(plot_na, lines=w)"
888 ]
889 },
890 {
891 "cell_type": "code",
892 "execution_count": 32,
893 "metadata": {},
894 "outputs": [
895 {
896 "data": {
897 "application/vnd.jupyter.widget-view+json": {
898 "model_id": "9dad041ff05d46ce969cfacb07c2ba98",
899 "version_major": 2,
900 "version_minor": 0
901 },
902 "text/plain": [
903 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
904 ]
905 },
906 "metadata": {},
907 "output_type": "display_data"
908 },
909 {
910 "data": {
911 "text/plain": [
912 "<function __main__.plot_mpc(lines)>"
913 ]
914 },
915 "execution_count": 32,
916 "metadata": {},
917 "output_type": "execute_result"
918 }
919 ],
920 "source": [
921 "def plot_mpc(lines):\n",
922 " plot(random_emf_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/random_emf_instantiator/')\n",
923 "interact(plot_mpc, lines=w)"
924 ]
925 },
926 {
927 "cell_type": "markdown",
928 "metadata": {},
929 "source": [
930 "## Controlled Viatra with Out Degree"
931 ]
932 },
933 {
934 "cell_type": "code",
935 "execution_count": 33,
936 "metadata": {},
937 "outputs": [],
938 "source": [
939 "con_viatra_stats = readStats('../input/controlled_viatra_out_degree/',10000)\n",
940 "con_viatra_dic = calDistanceDic(con_viatra_stats, human_rep)\n",
941 "\n",
942 "# trajectories and colors\n",
943 "trajectories = {}\n",
944 "w = createSelectionWidge(trajectories)\n",
945 "colors = createRandomColors(len(trajectories))"
946 ]
947 },
948 {
949 "cell_type": "code",
950 "execution_count": 34,
951 "metadata": {},
952 "outputs": [
953 {
954 "data": {
955 "application/vnd.jupyter.widget-view+json": {
956 "model_id": "cd77560284d9419daec57192a64b75ec",
957 "version_major": 2,
958 "version_minor": 0
959 },
960 "text/plain": [
961 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
962 ]
963 },
964 "metadata": {},
965 "output_type": "display_data"
966 },
967 {
968 "data": {
969 "text/plain": [
970 "<function __main__.plot_out_degree(lines)>"
971 ]
972 },
973 "execution_count": 34,
974 "metadata": {},
975 "output_type": "execute_result"
976 }
977 ],
978 "source": [
979 "def plot_out_degree(lines):\n",
980 " plot(con_viatra_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out_degree', '../output/controled_viatra_with_out_degree/')\n",
981 "interact(plot_out_degree, lines=w)"
982 ]
983 },
984 {
985 "cell_type": "code",
986 "execution_count": 35,
987 "metadata": {},
988 "outputs": [
989 {
990 "data": {
991 "application/vnd.jupyter.widget-view+json": {
992 "model_id": "ab11afebf7674cebae8d7318c661cf3c",
993 "version_major": 2,
994 "version_minor": 0
995 },
996 "text/plain": [
997 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
998 ]
999 },
1000 "metadata": {},
1001 "output_type": "display_data"
1002 },
1003 {
1004 "data": {
1005 "text/plain": [
1006 "<function __main__.plot_na(lines)>"
1007 ]
1008 },
1009 "execution_count": 35,
1010 "metadata": {},
1011 "output_type": "execute_result"
1012 }
1013 ],
1014 "source": [
1015 "def plot_na(lines):\n",
1016 " plot(con_viatra_dic, lines, 0, lambda a: a.na_distance, colors, 'Node Activity', '../output/controled_viatra_with_out_degree/')\n",
1017 "interact(plot_na, lines=w)"
1018 ]
1019 },
1020 {
1021 "cell_type": "code",
1022 "execution_count": 36,
1023 "metadata": {
1024 "scrolled": false
1025 },
1026 "outputs": [
1027 {
1028 "data": {
1029 "application/vnd.jupyter.widget-view+json": {
1030 "model_id": "c20b42abcba646c18d7caa6eeb54c403",
1031 "version_major": 2,
1032 "version_minor": 0
1033 },
1034 "text/plain": [
1035 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1036 ]
1037 },
1038 "metadata": {},
1039 "output_type": "display_data"
1040 },
1041 {
1042 "data": {
1043 "text/plain": [
1044 "<function __main__.plot_mpc(lines)>"
1045 ]
1046 },
1047 "execution_count": 36,
1048 "metadata": {},
1049 "output_type": "execute_result"
1050 }
1051 ],
1052 "source": [
1053 "def plot_mpc(lines):\n",
1054 " plot(con_viatra_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/controled_viatra_with_out_degree/')\n",
1055 "interact(plot_mpc, lines=w)"
1056 ]
1057 },
1058 {
1059 "cell_type": "markdown",
1060 "metadata": {},
1061 "source": [
1062 "## Controlled Viatra with Node Activity"
1063 ]
1064 },
1065 {
1066 "cell_type": "code",
1067 "execution_count": 37,
1068 "metadata": {},
1069 "outputs": [],
1070 "source": [
1071 "con_viatra_stats = readStats('../input/controlled_viatra_out_degree_node_activity/',20000)\n",
1072 "con_viatra_dic = calDistanceDic(con_viatra_stats, human_rep)\n",
1073 "\n",
1074 "# trajectories and colors\n",
1075 "trajectories = {}\n",
1076 "w = createSelectionWidge(trajectories)\n",
1077 "colors = createRandomColors(len(trajectories))"
1078 ]
1079 },
1080 {
1081 "cell_type": "code",
1082 "execution_count": 38,
1083 "metadata": {},
1084 "outputs": [
1085 {
1086 "data": {
1087 "application/vnd.jupyter.widget-view+json": {
1088 "model_id": "902b580a11fa4c8db9d03508ad629067",
1089 "version_major": 2,
1090 "version_minor": 0
1091 },
1092 "text/plain": [
1093 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1094 ]
1095 },
1096 "metadata": {},
1097 "output_type": "display_data"
1098 },
1099 {
1100 "data": {
1101 "text/plain": [
1102 "<function __main__.plot_out_degree(lines)>"
1103 ]
1104 },
1105 "execution_count": 38,
1106 "metadata": {},
1107 "output_type": "execute_result"
1108 }
1109 ],
1110 "source": [
1111 "def plot_out_degree(lines):\n",
1112 " plot(con_viatra_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out_degree', '../output/controled_viatra_with_node_activity/')\n",
1113 "interact(plot_out_degree, lines=w)"
1114 ]
1115 },
1116 {
1117 "cell_type": "code",
1118 "execution_count": 39,
1119 "metadata": {},
1120 "outputs": [
1121 {
1122 "data": {
1123 "application/vnd.jupyter.widget-view+json": {
1124 "model_id": "851b567e745940288b577d9bd27e6f08",
1125 "version_major": 2,
1126 "version_minor": 0
1127 },
1128 "text/plain": [
1129 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1130 ]
1131 },
1132 "metadata": {},
1133 "output_type": "display_data"
1134 },
1135 {
1136 "data": {
1137 "text/plain": [
1138 "<function __main__.plot_na(lines)>"
1139 ]
1140 },
1141 "execution_count": 39,
1142 "metadata": {},
1143 "output_type": "execute_result"
1144 }
1145 ],
1146 "source": [
1147 "def plot_na(lines):\n",
1148 " plot(con_viatra_dic, lines, 0, lambda a: a.na_distance, colors, 'Node Activity', '../output/controled_viatra_with_node_activity/')\n",
1149 "interact(plot_na, lines=w)"
1150 ]
1151 },
1152 {
1153 "cell_type": "code",
1154 "execution_count": 40,
1155 "metadata": {},
1156 "outputs": [
1157 {
1158 "data": {
1159 "application/vnd.jupyter.widget-view+json": {
1160 "model_id": "7de173291f394b10b5113e3312b7b2e1",
1161 "version_major": 2,
1162 "version_minor": 0
1163 },
1164 "text/plain": [
1165 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1166 ]
1167 },
1168 "metadata": {},
1169 "output_type": "display_data"
1170 },
1171 {
1172 "data": {
1173 "text/plain": [
1174 "<function __main__.plot_mpc(lines)>"
1175 ]
1176 },
1177 "execution_count": 40,
1178 "metadata": {},
1179 "output_type": "execute_result"
1180 }
1181 ],
1182 "source": [
1183 "def plot_mpc(lines):\n",
1184 " plot(con_viatra_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/controled_viatra_with_node_activity/')\n",
1185 "interact(plot_mpc, lines=w)"
1186 ]
1187 },
1188 {
1189 "cell_type": "markdown",
1190 "metadata": {},
1191 "source": [
1192 "# Random EMF With Normal(2,1)"
1193 ]
1194 },
1195 {
1196 "cell_type": "code",
1197 "execution_count": 41,
1198 "metadata": {},
1199 "outputs": [],
1200 "source": [
1201 "random_emf_stats = readStats('../input/random_emf_normal/',6000)\n",
1202 "random_emf_dic = calDistanceDic(random_emf_stats, human_rep)\n",
1203 "\n",
1204 "# trajectories and colors\n",
1205 "trajectories = {}\n",
1206 "w = createSelectionWidge(trajectories)\n",
1207 "colors = createRandomColors(len(trajectories))"
1208 ]
1209 },
1210 {
1211 "cell_type": "code",
1212 "execution_count": 42,
1213 "metadata": {},
1214 "outputs": [
1215 {
1216 "data": {
1217 "application/vnd.jupyter.widget-view+json": {
1218 "model_id": "6b9ee873d9ca41649cf05f3b713d9142",
1219 "version_major": 2,
1220 "version_minor": 0
1221 },
1222 "text/plain": [
1223 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
1224 ]
1225 },
1226 "metadata": {},
1227 "output_type": "display_data"
1228 },
1229 {
1230 "data": {
1231 "text/plain": [
1232 "<function __main__.plot_out_degree(lines)>"
1233 ]
1234 },
1235 "execution_count": 42,
1236 "metadata": {},
1237 "output_type": "execute_result"
1238 }
1239 ],
1240 "source": [
1241 "def plot_out_degree(lines):\n",
1242 " plot(random_emf_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree', '../output/random_emf_normal/')\n",
1243 "interact(plot_out_degree, lines=[[]])"
1244 ]
1245 },
1246 {
1247 "cell_type": "code",
1248 "execution_count": 43,
1249 "metadata": {},
1250 "outputs": [
1251 {
1252 "data": {
1253 "application/vnd.jupyter.widget-view+json": {
1254 "model_id": "88f258a0b0ac4417aba320beca7508cf",
1255 "version_major": 2,
1256 "version_minor": 0
1257 },
1258 "text/plain": [
1259 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
1260 ]
1261 },
1262 "metadata": {},
1263 "output_type": "display_data"
1264 },
1265 {
1266 "data": {
1267 "text/plain": [
1268 "<function __main__.plot_node_activity(lines)>"
1269 ]
1270 },
1271 "execution_count": 43,
1272 "metadata": {},
1273 "output_type": "execute_result"
1274 }
1275 ],
1276 "source": [
1277 "def plot_node_activity(lines):\n",
1278 " plot(random_emf_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity', '../output/random_emf_normal/')\n",
1279 "interact(plot_node_activity, lines=[[]])"
1280 ]
1281 },
1282 {
1283 "cell_type": "code",
1284 "execution_count": 44,
1285 "metadata": {},
1286 "outputs": [
1287 {
1288 "data": {
1289 "application/vnd.jupyter.widget-view+json": {
1290 "model_id": "d71cf26018184ee6953c50b74908f52d",
1291 "version_major": 2,
1292 "version_minor": 0
1293 },
1294 "text/plain": [
1295 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
1296 ]
1297 },
1298 "metadata": {},
1299 "output_type": "display_data"
1300 },
1301 {
1302 "data": {
1303 "text/plain": [
1304 "<function __main__.plot_mpc(lines)>"
1305 ]
1306 },
1307 "execution_count": 44,
1308 "metadata": {},
1309 "output_type": "execute_result"
1310 }
1311 ],
1312 "source": [
1313 "def plot_mpc(lines):\n",
1314 " plot(random_emf_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/random_emf_normal/')\n",
1315 "interact(plot_mpc, lines=[[]])"
1316 ]
1317 },
1318 {
1319 "cell_type": "code",
1320 "execution_count": 45,
1321 "metadata": {},
1322 "outputs": [],
1323 "source": [
1324 "con_viatra_stats = readStats('../input/controlled_viatra_all/',20000)\n",
1325 "con_viatra_dic = calDistanceDic(con_viatra_stats, human_rep)\n",
1326 "\n",
1327 "# trajectories and colors\n",
1328 "trajectories = {}\n",
1329 "w = createSelectionWidge(trajectories)\n",
1330 "colors = createRandomColors(len(trajectories))"
1331 ]
1332 },
1333 {
1334 "cell_type": "code",
1335 "execution_count": 46,
1336 "metadata": {},
1337 "outputs": [
1338 {
1339 "data": {
1340 "application/vnd.jupyter.widget-view+json": {
1341 "model_id": "db15ac26aad84683b9da99fc54749850",
1342 "version_major": 2,
1343 "version_minor": 0
1344 },
1345 "text/plain": [
1346 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1347 ]
1348 },
1349 "metadata": {},
1350 "output_type": "display_data"
1351 },
1352 {
1353 "data": {
1354 "text/plain": [
1355 "<function __main__.plot_out_degree(lines)>"
1356 ]
1357 },
1358 "execution_count": 46,
1359 "metadata": {},
1360 "output_type": "execute_result"
1361 }
1362 ],
1363 "source": [
1364 "def plot_out_degree(lines):\n",
1365 " plot(con_viatra_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out_degree', '../output/controled_viatra_all/')\n",
1366 "interact(plot_out_degree, lines=w)"
1367 ]
1368 },
1369 {
1370 "cell_type": "code",
1371 "execution_count": 47,
1372 "metadata": {},
1373 "outputs": [
1374 {
1375 "data": {
1376 "application/vnd.jupyter.widget-view+json": {
1377 "model_id": "30bfaf8dd45d4b21b0b43afe5e9fdb8a",
1378 "version_major": 2,
1379 "version_minor": 0
1380 },
1381 "text/plain": [
1382 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1383 ]
1384 },
1385 "metadata": {},
1386 "output_type": "display_data"
1387 },
1388 {
1389 "data": {
1390 "text/plain": [
1391 "<function __main__.plot_na(lines)>"
1392 ]
1393 },
1394 "execution_count": 47,
1395 "metadata": {},
1396 "output_type": "execute_result"
1397 }
1398 ],
1399 "source": [
1400 "def plot_na(lines):\n",
1401 " plot(con_viatra_dic, lines, 0, lambda a: a.na_distance, colors, 'Node Activity', '../output/controled_viatra_all/')\n",
1402 "interact(plot_na, lines=w)"
1403 ]
1404 },
1405 {
1406 "cell_type": "code",
1407 "execution_count": 48,
1408 "metadata": {},
1409 "outputs": [
1410 {
1411 "data": {
1412 "application/vnd.jupyter.widget-view+json": {
1413 "model_id": "5636d37b4416474db5441fe47e7a8a30",
1414 "version_major": 2,
1415 "version_minor": 0
1416 },
1417 "text/plain": [
1418 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1419 ]
1420 },
1421 "metadata": {},
1422 "output_type": "display_data"
1423 },
1424 {
1425 "data": {
1426 "text/plain": [
1427 "<function __main__.plot_mpc(lines)>"
1428 ]
1429 },
1430 "execution_count": 48,
1431 "metadata": {},
1432 "output_type": "execute_result"
1433 }
1434 ],
1435 "source": [
1436 "def plot_mpc(lines):\n",
1437 " plot(con_viatra_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/controled_viatra_all/')\n",
1438 "interact(plot_mpc, lines=w)"
1439 ]
1440 },
1441 {
1442 "cell_type": "markdown",
1443 "metadata": {},
1444 "source": [
1445 "### Viatra With Both metric and consistency"
1446 ]
1447 },
1448 {
1449 "cell_type": "code",
1450 "execution_count": 53,
1451 "metadata": {},
1452 "outputs": [],
1453 "source": [
1454 "con_viatra_stats = readStats('../input/viatra_control_all_with_consistency_1/',20000)\n",
1455 "con_viatra_dic = calDistanceDic(con_viatra_stats, human_rep)\n",
1456 "\n",
1457 "# trajectories and colors\n",
1458 "trajectories = {}\n",
1459 "w = createSelectionWidge(trajectories)\n",
1460 "colors = createRandomColors(len(trajectories))"
1461 ]
1462 },
1463 {
1464 "cell_type": "code",
1465 "execution_count": 54,
1466 "metadata": {},
1467 "outputs": [
1468 {
1469 "data": {
1470 "application/vnd.jupyter.widget-view+json": {
1471 "model_id": "e5c7231686544d959527cff36c1f1a5e",
1472 "version_major": 2,
1473 "version_minor": 0
1474 },
1475 "text/plain": [
1476 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1477 ]
1478 },
1479 "metadata": {},
1480 "output_type": "display_data"
1481 },
1482 {
1483 "data": {
1484 "text/plain": [
1485 "<function __main__.plot_out_degree(lines)>"
1486 ]
1487 },
1488 "execution_count": 54,
1489 "metadata": {},
1490 "output_type": "execute_result"
1491 }
1492 ],
1493 "source": [
1494 "def plot_out_degree(lines):\n",
1495 " plot(con_viatra_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out_degree', '../output/viatra_control_all_with_consistency_1/')\n",
1496 "interact(plot_out_degree, lines=w)"
1497 ]
1498 },
1499 {
1500 "cell_type": "code",
1501 "execution_count": 55,
1502 "metadata": {},
1503 "outputs": [
1504 {
1505 "data": {
1506 "application/vnd.jupyter.widget-view+json": {
1507 "model_id": "e043705333bb474e89582ea9358c57c3",
1508 "version_major": 2,
1509 "version_minor": 0
1510 },
1511 "text/plain": [
1512 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1513 ]
1514 },
1515 "metadata": {},
1516 "output_type": "display_data"
1517 },
1518 {
1519 "data": {
1520 "text/plain": [
1521 "<function __main__.plot_na(lines)>"
1522 ]
1523 },
1524 "execution_count": 55,
1525 "metadata": {},
1526 "output_type": "execute_result"
1527 }
1528 ],
1529 "source": [
1530 "def plot_na(lines):\n",
1531 " plot(con_viatra_dic, lines, 0, lambda a: a.na_distance, colors, 'Node Activity', '../output/viatra_control_all_with_consistency_1/')\n",
1532 "interact(plot_na, lines=w)"
1533 ]
1534 },
1535 {
1536 "cell_type": "code",
1537 "execution_count": 56,
1538 "metadata": {},
1539 "outputs": [
1540 {
1541 "data": {
1542 "application/vnd.jupyter.widget-view+json": {
1543 "model_id": "ee4723b62293402e87e6a3f798019b36",
1544 "version_major": 2,
1545 "version_minor": 0
1546 },
1547 "text/plain": [
1548 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
1549 ]
1550 },
1551 "metadata": {},
1552 "output_type": "display_data"
1553 },
1554 {
1555 "data": {
1556 "text/plain": [
1557 "<function __main__.plot_mpc(lines)>"
1558 ]
1559 },
1560 "execution_count": 56,
1561 "metadata": {},
1562 "output_type": "execute_result"
1563 }
1564 ],
1565 "source": [
1566 "def plot_mpc(lines):\n",
1567 " plot(con_viatra_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/viatra_control_all_with_consistency_1/')\n",
1568 "interact(plot_mpc, lines=w)"
1569 ]
1570 },
1571 {
1572 "cell_type": "code",
1573 "execution_count": null,
1574 "metadata": {},
1575 "outputs": [],
1576 "source": []
1577 }
1578 ],
1579 "metadata": {
1580 "kernelspec": {
1581 "display_name": "Python 3",
1582 "language": "python",
1583 "name": "python3"
1584 },
1585 "language_info": {
1586 "codemirror_mode": {
1587 "name": "ipython",
1588 "version": 3
1589 },
1590 "file_extension": ".py",
1591 "mimetype": "text/x-python",
1592 "name": "python",
1593 "nbconvert_exporter": "python",
1594 "pygments_lexer": "ipython3",
1595 "version": "3.7.3"
1596 }
1597 },
1598 "nbformat": 4,
1599 "nbformat_minor": 2
1600}
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/representative_selector .ipynb b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/representative_selector .ipynb
new file mode 100644
index 00000000..32edb00c
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/representative_selector .ipynb
@@ -0,0 +1,392 @@
1{
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "## Use K-medoid algorithm to find the suitable human model representitives"
8 ]
9 },
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
14 "### Imports"
15 ]
16 },
17 {
18 "cell_type": "code",
19 "execution_count": 2,
20 "metadata": {},
21 "outputs": [],
22 "source": [
23 "import os, sys\n",
24 "lib_path = os.path.abspath(os.path.join('..', '..', 'utils'))\n",
25 "sys.path.append(lib_path)\n",
26 "from GraphType import GraphStat\n",
27 "import readCSV as reader\n",
28 "from scipy import stats\n",
29 "from ipywidgets import interact, fixed, interactive\n",
30 "import ipywidgets as widgets\n",
31 "from pyclustering.cluster.kmedoids import kmedoids\n",
32 "from pyclustering.utils.metric import distance_metric, type_metric\n",
33 "import random\n",
34 "import numpy as np"
35 ]
36 },
37 {
38 "cell_type": "markdown",
39 "metadata": {},
40 "source": [
41 "### Define a new distance metric"
42 ]
43 },
44 {
45 "cell_type": "code",
46 "execution_count": 3,
47 "metadata": {},
48 "outputs": [],
49 "source": [
50 "def ks_value(dest1, dest2):\n",
51 " value, p = stats.ks_2samp(dest1, dest2)\n",
52 " return value\n",
53 "\n",
54 "\n",
55 "ks_metric = distance_metric(type_metric.USER_DEFINED, func=ks_value)"
56 ]
57 },
58 {
59 "cell_type": "markdown",
60 "metadata": {},
61 "source": [
62 "### Read Human Models"
63 ]
64 },
65 {
66 "cell_type": "code",
67 "execution_count": 4,
68 "metadata": {},
69 "outputs": [
70 {
71 "data": {
72 "text/plain": [
73 "304"
74 ]
75 },
76 "execution_count": 4,
77 "metadata": {},
78 "output_type": "execute_result"
79 }
80 ],
81 "source": [
82 "# Progress Widge\n",
83 "w = widgets.FloatProgress(\n",
84 " value=0,\n",
85 " min=0,\n",
86 " max=1.0,\n",
87 " step=0.1,\n",
88 " description='Loading Files...:',\n",
89 " bar_style='info',\n",
90 " orientation='horizontal'\n",
91 ")\n",
92 "\n",
93 "humanFiles = reader.readmultiplefiles('../input/Human/', 1300, False)\n",
94 "modelToFileName = {}\n",
95 "for name in humanFiles:\n",
96 " modelToFileName[GraphStat(name)] = name\n",
97 "\n",
98 "models = list(modelToFileName.keys())\n",
99 "len(humanFiles)"
100 ]
101 },
102 {
103 "cell_type": "markdown",
104 "metadata": {},
105 "source": [
106 "### Find Representative by K-medroid for different dists on GraphStat"
107 ]
108 },
109 {
110 "cell_type": "markdown",
111 "metadata": {},
112 "source": [
113 "* Returns the index of the representative"
114 ]
115 },
116 {
117 "cell_type": "code",
118 "execution_count": 5,
119 "metadata": {},
120 "outputs": [],
121 "source": [
122 "def findRep(graphStats, func):\n",
123 " out_ds = list(map(func, models))\n",
124 "\n",
125 " #choose a random starting point\n",
126 " start_index = random.randint(0, len(out_ds))\n",
127 "\n",
128 " # start with one initial metrid [start_index]\n",
129 " outdegree_kmedoid = kmedoids(out_ds, [start_index], metric=ks_metric)\n",
130 "\n",
131 " outdegree_kmedoid.process()\n",
132 " centoids = outdegree_kmedoid.get_medoids()\n",
133 " return centoids[0]"
134 ]
135 },
136 {
137 "cell_type": "markdown",
138 "metadata": {},
139 "source": [
140 "## Find representative for out degree"
141 ]
142 },
143 {
144 "cell_type": "markdown",
145 "metadata": {},
146 "source": [
147 "### For Yakindumm\n",
148 "#### For all human models\n",
149 "* the rep found is ../input/humanOutput\\R_20158_run_1.csv\n",
150 "* the average distance between it and others is 0.05515988287586802\n",
151 "\n",
152 "#### For human models with $100 \\pm 10$ nodes\n",
153 "* the rep found is ../input/human_output_100\\R_2015225_run_1.csv\n",
154 "* the average distance between it and others is $0.046150929558524685$\n",
155 "\n",
156 "#### for human model with $100 \\pm 10$ nodes and new metric\n",
157 "* the rep found is ../input/human_output_100\\R_2015248_run_1.csv\n",
158 "* average distance: 0.052753778714861366\n",
159 "* median: 0.0468131868131868\n",
160 "* std: 0.0246917800149673\n",
161 "* max: 0.15993907083015996\n",
162 "* min: 0.0"
163 ]
164 },
165 {
166 "cell_type": "code",
167 "execution_count": 6,
168 "metadata": {},
169 "outputs": [
170 {
171 "name": "stdout",
172 "output_type": "stream",
173 "text": [
174 "../input/Human\\33_run_1.csv\n",
175 "../input/Human\\33_run_1.csv\n"
176 ]
177 }
178 ],
179 "source": [
180 "od_rep_index = findRep(models, lambda m: m.out_d)\n",
181 "print(list(modelToFileName.values())[od_rep_index])\n",
182 "od_rep_model = models[od_rep_index]\n",
183 "print(modelToFileName[od_rep_model])\n"
184 ]
185 },
186 {
187 "cell_type": "code",
188 "execution_count": 7,
189 "metadata": {},
190 "outputs": [
191 {
192 "name": "stdout",
193 "output_type": "stream",
194 "text": [
195 "average distance: 0.04615092955852465\n",
196 "median: 0.04402137483980782\n",
197 "std: 0.017305709419913242\n",
198 "max: 0.1411706837186424\n",
199 "min: 0.0\n"
200 ]
201 }
202 ],
203 "source": [
204 "distances = []\n",
205 "for model in models:\n",
206 " distances.append(ks_value(od_rep_model.out_d, model.out_d))\n",
207 "print('average distance: ', np.mean(distances))\n",
208 "print('median: ', np.median(distances))\n",
209 "print('std: ', np.std(distances))\n",
210 "print('max:', max(distances))\n",
211 "print('min:', min(distances))"
212 ]
213 },
214 {
215 "cell_type": "markdown",
216 "metadata": {},
217 "source": [
218 "## Find Representative for node activities"
219 ]
220 },
221 {
222 "cell_type": "markdown",
223 "metadata": {},
224 "source": [
225 "### For Yakindumm\n",
226 "#### For all human models\n",
227 "* the rep found is ../input/humanOutput\\R_2016176_run_1.csv\n",
228 "* the average distance between it and others is 0.05275267434589047\n",
229 "\n",
230 "#### For human models with $100 \\pm 10$ nodes\n",
231 "* the rep found is ../input/human_output_100\\R_2017419_run_1.csv\n",
232 "* the average distance between it and others is $0.04679429311806747$\n",
233 "\n",
234 "#### for human model with $100 \\pm 10$ nodes and new metric\n",
235 "* the rep found is ../input/human_output_100\\R_2017131_run_1.csv\n",
236 "* average distance: 0.024629205820449567\n",
237 "* median: 0.023787888564682946\n",
238 "* std: 0.013845547883198073\n",
239 "* max: 0.09044674910251294\n",
240 "* min: 0.0"
241 ]
242 },
243 {
244 "cell_type": "code",
245 "execution_count": 8,
246 "metadata": {},
247 "outputs": [
248 {
249 "name": "stdout",
250 "output_type": "stream",
251 "text": [
252 "../input/Human\\288_run_1.csv\n",
253 "../input/Human\\288_run_1.csv\n"
254 ]
255 }
256 ],
257 "source": [
258 "na_rep_index = findRep(models, lambda m: m.na)\n",
259 "print(list(modelToFileName.values())[na_rep_index])\n",
260 "na_rep_model = models[na_rep_index]\n",
261 "print(modelToFileName[na_rep_model])\n"
262 ]
263 },
264 {
265 "cell_type": "code",
266 "execution_count": 9,
267 "metadata": {},
268 "outputs": [
269 {
270 "name": "stdout",
271 "output_type": "stream",
272 "text": [
273 "average distance: 0.046794293118067494\n",
274 "median: 0.03898868458274401\n",
275 "std: 0.02880119213919405\n",
276 "max: 0.18702970297029703\n",
277 "min: 0.0\n"
278 ]
279 }
280 ],
281 "source": [
282 "distances = []\n",
283 "for model in models:\n",
284 " distances.append(ks_value(na_rep_model.na, model.na))\n",
285 "print('average distance: ', np.mean(distances))\n",
286 "print('median: ', np.median(distances))\n",
287 "print('std: ', np.std(distances))\n",
288 "print('max:', max(distances))\n",
289 "print('min:', min(distances))"
290 ]
291 },
292 {
293 "cell_type": "markdown",
294 "metadata": {},
295 "source": [
296 "## Find Representative for MPC"
297 ]
298 },
299 {
300 "cell_type": "markdown",
301 "metadata": {},
302 "source": [
303 "### For Yakindumm\n",
304 "\n",
305 "#### For all human models\n",
306 "* the rep found is ../input/humanOutput\\R_2015246_run_1.csv\n",
307 "* the average distance between it and others is 0.08556632702185384\n",
308 "\n",
309 "#### For human models with $100 \\pm 10$ nodes\n",
310 "* the rep found is ../input/human_output_100\\R_2016324_run_1.csv\n",
311 "* the average distance between it and others is $0.07028909225833631$\n",
312 "\n",
313 "#### for human model with $100 \\pm 10$ nodes and new metric\n",
314 "* average distance: 0.054782550772603904\n",
315 "* median: 0.048330503678551184\n",
316 "* std: 0.028208257424907526\n",
317 "* max: 0.21181525241675614\n",
318 "* min: 0.0"
319 ]
320 },
321 {
322 "cell_type": "code",
323 "execution_count": 10,
324 "metadata": {},
325 "outputs": [
326 {
327 "name": "stdout",
328 "output_type": "stream",
329 "text": [
330 "../input/Human\\151_run_1.csv\n",
331 "../input/Human\\151_run_1.csv\n"
332 ]
333 }
334 ],
335 "source": [
336 "mpc_rep_index = findRep(models, lambda m: m.mpc)\n",
337 "print(list(modelToFileName.values())[mpc_rep_index])\n",
338 "mpc_rep_model = models[mpc_rep_index]\n",
339 "print(modelToFileName[mpc_rep_model])"
340 ]
341 },
342 {
343 "cell_type": "code",
344 "execution_count": 11,
345 "metadata": {},
346 "outputs": [
347 {
348 "name": "stdout",
349 "output_type": "stream",
350 "text": [
351 "average distance: 0.07028909225833632\n",
352 "median: 0.06254480286738351\n",
353 "std: 0.037281890512224164\n",
354 "max: 0.21961550993809065\n",
355 "min: 0.0\n"
356 ]
357 }
358 ],
359 "source": [
360 "distances = []\n",
361 "for model in models:\n",
362 " distances.append(ks_value(mpc_rep_model.mpc, model.mpc))\n",
363 "print('average distance: ', np.mean(distances))\n",
364 "print('median: ', np.median(distances))\n",
365 "print('std: ', np.std(distances))\n",
366 "print('max:', max(distances))\n",
367 "print('min:', min(distances))"
368 ]
369 }
370 ],
371 "metadata": {
372 "kernelspec": {
373 "display_name": "Python 3",
374 "language": "python",
375 "name": "python3"
376 },
377 "language_info": {
378 "codemirror_mode": {
379 "name": "ipython",
380 "version": 3
381 },
382 "file_extension": ".py",
383 "mimetype": "text/x-python",
384 "name": "python",
385 "nbconvert_exporter": "python",
386 "pygments_lexer": "ipython3",
387 "version": "3.7.3"
388 }
389 },
390 "nbformat": 4,
391 "nbformat_minor": 2
392}