aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/DistancePlot.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/DistancePlot.ipynb')
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/DistancePlot.ipynb199
1 files changed, 199 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/DistancePlot.ipynb b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/DistancePlot.ipynb
new file mode 100644
index 00000000..44842cf4
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/DistancePlot.ipynb
@@ -0,0 +1,199 @@
1{
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 6,
6 "metadata": {},
7 "outputs": [],
8 "source": [
9 "import os, sys\n",
10 "lib_path = os.path.abspath(os.path.join('..','..', '..', 'utils'))\n",
11 "sys.path.append(lib_path)\n",
12 "import glob\n",
13 "import matplotlib.pyplot as plt\n",
14 "from GraphType import GraphCollection\n",
15 "import DistributionMetrics as metrics\n",
16 "from GraphType import GraphStat\n",
17 "import readCSV as reader\n"
18 ]
19 },
20 {
21 "cell_type": "code",
22 "execution_count": 7,
23 "metadata": {},
24 "outputs": [],
25 "source": [
26 "def getModels(folderName, numberOfModels):\n",
27 " filenames = reader.readmultiplefiles(folderName, numberOfModels, False)\n",
28 " graphStats = [GraphStat(filename) for filename in filenames]\n",
29 " return graphStats"
30 ]
31 },
32 {
33 "cell_type": "code",
34 "execution_count": 109,
35 "metadata": {},
36 "outputs": [],
37 "source": [
38 "# read models\n",
39 "domain = 'ecore'\n",
40 "rep = getModels('../input/{}/MPC_REP/'.format(domain), 1)[0]\n",
41 "na_rep = getModels('../input/{}/NA_REP/'.format(domain), 1)[0]\n",
42 "od_rep = getModels('../input/{}/OUT_DEGREE_REP/'.format(domain), 1)[0]\n",
43 "rep.na = na_rep.na\n",
44 "rep.out_d = od_rep.out_d\n",
45 "\n",
46 "human_models = getModels('../input/{}/Human/'.format(domain), 304)\n",
47 "folder = '../output/distances/{}/'.format(domain)\n",
48 "mkdir(folder)"
49 ]
50 },
51 {
52 "cell_type": "code",
53 "execution_count": 111,
54 "metadata": {},
55 "outputs": [],
56 "source": [
57 "if domain == 'yakindumm':\n",
58 " rep.nodeTypeStat = {'Entry': 0.04257802080554814, 'Choice': 0.1267671379034409, 'State': 0.1596092291277674, 'Transition': 0.6138636969858629, 'Statechart': 0.010136036276340358, 'Region': 0.04467858095492131, 'Exit': 0.0018338223526273673, 'FinalState': 0.0005334755934915977}\n",
59 "elif domain == 'ecpre':\n",
60 " rep.nodeTypeStat = {'EAttribute': 0.23539778449144008, 'EClass': 0.30996978851963747, 'EReference': 0.33081570996978854, 'EPackage': 0.012789526686807653, 'EAnnotation': 0.002517623363544813, 'EEnumLiteral': 0.07275931520644502, 'EEnum': 0.013645518630412891, 'EDataType': 0.004028197381671702, 'EParameter': 0.005941591137965764, 'EGenericType': 0.002014098690835851, 'EOperation': 0.009415911379657605, 'ETypeParameter': 0.0007049345417925478}\n",
61 "node_types = sorted(rep.nodeTypeStat.keys())"
62 ]
63 },
64 {
65 "cell_type": "code",
66 "execution_count": 112,
67 "metadata": {},
68 "outputs": [],
69 "source": [
70 "def plot_diagram(name, models, rep, metric, distance_metric):\n",
71 " model_metrics = list(map(metric, models))\n",
72 " rep = metric(rep)\n",
73 " distances= list(map(lambda m: distance_metric(m,rep), model_metrics))\n",
74 " plt.figure()\n",
75 " plt.title('{} for {}'.format(name, domain))\n",
76 " plt.hist(distances)\n",
77 " plt.savefig('{}/{}.png'.format(folder, name), dpi = 500)"
78 ]
79 },
80 {
81 "cell_type": "code",
82 "execution_count": 113,
83 "metadata": {},
84 "outputs": [],
85 "source": [
86 "def mpc(model):\n",
87 " return model.mpc\n",
88 "def na(model):\n",
89 " return model.na\n",
90 "def od(model):\n",
91 " return model.out_d\n",
92 "\n",
93 "def nt(model):\n",
94 " nd_dict = model.nodeTypeStat\n",
95 " dist = []\n",
96 " for key in node_types:\n",
97 " dist.append(nd_dict.get(key, 0))\n",
98 " return dist\n",
99 "\n",
100 "def mkdir(path):\n",
101 " if not os.path.exists(path):\n",
102 " os.makedirs(path)\n",
103 "\n",
104 "def ks_distance(s1, s2):\n",
105 " value, p = metrics.ks_distance(s1, s2)\n",
106 " return value"
107 ]
108 },
109 {
110 "cell_type": "code",
111 "execution_count": 114,
112 "metadata": {},
113 "outputs": [
114 {
115 "data": {
116 "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAR3ElEQVR4nO3de3CldX3H8fcHVrwBctlAYRcM6lJFtMWJ1MtMta5aBAvMFCp4WxXdqbVeiq2COkOrdQbvrTPWdiuW9YYi2kJFqxRxsLZQFgF1QWS5CCtbNqDghalK++0f51kbY0JOcpKc5Lfv10wm5/md35PfN79JPnnO7+R5nlQVkqS27DLsAiRJ889wl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOGunVKSVya5I8mPk+w77Hqk+Wa4a6iS3JLkZ0lWTmq/OkklGe22z+76/TjJ95NclOTRE/ofmuTTSe5Mck+SbyQ5NcmuU4z5AOC9wLOravequmthv0tp8RnuWgpuBk7esZHkccCDp+j3zqraHVgNbAfO7vo/ErgcuA14XFU9DDgRGAP2mOLr7A88CNg820LTs+i/N8MaV8uXPyxaCj4KvHjC9jrgI9N1rqp7gU8Ah3dNfwH8e1WdWlXbuj7XV9Xzq+ruifsmORS4vtu8O8mXu/anJLmiO+q/IslTJuzzlSRvT/I14F7gEZNrSnJgks8kGU9yc5LXTHhu1yRvSnJjkh8luTLJQXMZN8nDkpyVZFuS7yX5y6lenUiGu5aCy4A9kzymC6rnAR+brnOS3YEXAFd1Tc8EzutnoKr6DvDYbnOvqnpGkn2AC4H3A/vSW7K5cNJa/IuA9fReCXx3Uj27AP8MXAOsAtYCr0vyu12XU+m9Mjka2BN4GXDvHMfdCNwHPAo4Ang28PJ+vnftXAx3LRU7jt6fBXwb+N4Uff40yd3AFmB34CVd+77AtgHGPga4oao+WlX3VdU5XQ2/N6HP2VW1uXv+55P2fyIwUlVvraqfVdVNwN8DJ3XPvxx4S/dqoqrqmm6df1bjAvsAzwFeV1U/qartwPsmjCP9wophFyB1PgpcChzC9Esy766qt0zRfhdwwABjH8iko/Fue9WE7dvuZ/+HAwd2f3h22BX4avf4IODGeRj34cADgG1JdrTtMkNt2kl55K4loaq+S++N1aOBz85y938Ffn+A4W+nF5wTHcwvv3q4v8un3gbcXFV7TfjYo6qOnvD8I+dh3NuAnwIrJ4yzZ1U9FmkSw11LySnAM6rqJ7Pc7wzgKUneleTXAJI8KsnHkuzVx/6fBw5N8vwkK5I8DzgM+Fyf4/8n8MMkb0zy4O4N1MOTPLF7/kPA25Ks6f7r5fHduvqsxu3eLP4S8J4keybZJckjkzytzzq1EzHctWRU1Y1VtWku+wFPBkaBzUnuAT4DbAJ+1Mf+dwHPBV5Pb4nnDcBzq+rOPsf/H3rr5L9J79XHnfQC/WFdl/cC59IL5h8CZwEPnuO4LwZ2A64FfkDvjeRBlqTUqHizDklqj0fuktQgw12SGmS4S1KDDHdJatCSOIlp5cqVNTo6OuwyJGlZufLKK++sqpGpnlsS4T46OsqmTbP+DzhJ2qklmXyG8y+4LCNJDTLcJalBhrskNchwl6QGzRjuST6cZHuSb01oe1eSb3f3qfzHiRdnSnJ6ki1Jrp9wswJJ0iLq58j9bOCoSW0XAYdX1eOB7wCnAyQ5jN6NAx7b7fM33gJMkhbfjOFeVZcC35/U9qXuzjDQu0Xa6u7xccAnq+qnVXUzvTvmHDmP9UqS+jAfa+4vA77QPV7FL98VZiu/fFeZX0iyPsmmJJvGx8fnoQxJ0g4DhXuSN9O7We/HdzRN0W3KawpX1YaqGquqsZGRKU+wkiTN0ZzPUE2yjt6NBtbW/18Ufiu9+0XusJrercSaNHrahUMZ95YzjxnKuJKWjzkduSc5CngjcGxV3TvhqQuAk5I8MMkhwBp6tyCTJC2iGY/ck5wDPB1YmWQrvftVng48ELiouwv7ZVX1h1W1Ocm59G4Bdh/wqu4WZJKkRTRjuFfVyVM0n3U//d8OvH2QoiRJg/EMVUlqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ2aMdyTfDjJ9iTfmtC2T5KLktzQfd67a0+S9yfZkuQbSZ6wkMVLkqbWz5H72cBRk9pOAy6uqjXAxd02wHOANd3HeuCD81OmJGk2Zgz3qroU+P6k5uOAjd3jjcDxE9o/Uj2XAXslOWC+ipUk9Weua+77V9U2gO7zfl37KuC2Cf22dm2/Isn6JJuSbBofH59jGZKkqcz3G6qZoq2m6lhVG6pqrKrGRkZG5rkMSdq5zTXc79ix3NJ93t61bwUOmtBvNXD73MuTJM3FXMP9AmBd93gdcP6E9hd3/zXzJOCeHcs3kqTFs2KmDknOAZ4OrEyyFTgDOBM4N8kpwK3AiV33zwNHA1uAe4GXLkDNkqQZzBjuVXXyNE+tnaJvAa8atChJ0mA8Q1WSGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGjRQuCf5kySbk3wryTlJHpTkkCSXJ7khyaeS7DZfxUqS+jPncE+yCngNMFZVhwO7AicB7wDeV1VrgB8Ap8xHoZKk/g26LLMCeHCSFcBDgG3AM4Dzuuc3AscPOIYkaZbmHO5V9T3g3cCt9EL9HuBK4O6quq/rthVYNWiRkqTZGWRZZm/gOOAQ4EDgocBzpuha0+y/PsmmJJvGx8fnWoYkaQqDLMs8E7i5qsar6ufAZ4GnAHt1yzQAq4Hbp9q5qjZU1VhVjY2MjAxQhiRpskHC/VbgSUkekiTAWuBa4BLghK7POuD8wUqUJM3WIGvul9N74/TrwDe7r7UBeCNwapItwL7AWfNQpyRpFlbM3GV6VXUGcMak5puAIwf5upKkwXiGqiQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYNFO5J9kpyXpJvJ7kuyZOT7JPkoiQ3dJ/3nq9iJUn9GfTI/a+Bf6mqRwO/AVwHnAZcXFVrgIu7bUnSIppzuCfZE/ht4CyAqvpZVd0NHAds7LptBI4ftEhJ0uwMcuT+CGAc+IckVyX5UJKHAvtX1TaA7vN+U+2cZH2STUk2jY+PD1CGJGmyQcJ9BfAE4INVdQTwE2axBFNVG6pqrKrGRkZGBihDkjTZIOG+FdhaVZd32+fRC/s7khwA0H3ePliJkqTZmnO4V9V/Abcl+fWuaS1wLXABsK5rWwecP1CFkqRZWzHg/q8GPp5kN+Am4KX0/mCcm+QU4FbgxAHHkCTN0kDhXlVXA2NTPLV2kK8rSRqMZ6hKUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lq0MDhnmTXJFcl+Vy3fUiSy5PckORTSXYbvExJ0mzMx5H7a4HrJmy/A3hfVa0BfgCcMg9jSJJmYaBwT7IaOAb4ULcd4BnAeV2XjcDxg4whSZq9FQPu/1fAG4A9uu19gbur6r5ueyuwaqodk6wH1gMcfPDBcy5g9LQL57yvJLVqzkfuSZ4LbK+qKyc2T9G1ptq/qjZU1VhVjY2MjMy1DEnSFAY5cn8qcGySo4EHAXvSO5LfK8mK7uh9NXD74GVKkmZjzkfuVXV6Va2uqlHgJODLVfUC4BLghK7bOuD8gauUJM3KQvyf+xuBU5NsobcGf9YCjCFJuh+DvqEKQFV9BfhK9/gm4Mj5+LqSpLnxDFVJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDVgy7AM3e6GkXDm3sW848ZmhjS+qfR+6S1KA5h3uSg5JckuS6JJuTvLZr3yfJRUlu6D7vPX/lSpL6MciR+33A66vqMcCTgFclOQw4Dbi4qtYAF3fbkqRFNOdwr6ptVfX17vGPgOuAVcBxwMau20bg+EGLlCTNzrysuScZBY4ALgf2r6pt0PsDAOw3zT7rk2xKsml8fHw+ypAkdQYO9yS7A58BXldVP+x3v6raUFVjVTU2MjIyaBmSpAkGCvckD6AX7B+vqs92zXckOaB7/gBg+2AlSpJma5D/lglwFnBdVb13wlMXAOu6x+uA8+deniRpLgY5iempwIuAbya5umt7E3AmcG6SU4BbgRMHK1GSNFtzDveq+jcg0zy9dq5fV5I0OM9QlaQGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGD3KxDO6HR0y4cyri3nHnMUMaVliuP3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkN8iQmLQvDOnkKPIFKy5PhLs3As3K1HC3YskySo5Jcn2RLktMWahxJ0q9akCP3JLsCHwCeBWwFrkhyQVVduxDjSS0a5lLUsAzr1UqLy34LdeR+JLClqm6qqp8BnwSOW6CxJEmTLNSa+yrgtgnbW4HfmtghyXpgfbf54yTXz3GslcCdc9y3dc7N9Jyb6Q1tbvKOYYw6K/M+NwN+zw+f7omFCvdM0Va/tFG1Adgw8EDJpqoaG/TrtMi5mZ5zMz3nZnrLaW4WallmK3DQhO3VwO0LNJYkaZKFCvcrgDVJDkmyG3AScMECjSVJmmRBlmWq6r4kfwx8EdgV+HBVbV6IsZiHpZ2GOTfTc26m59xMb9nMTapq5l6SpGXFa8tIUoMMd0lq0LIJ95kuZ5DkgUk+1T1/eZLRxa9yOPqYm1OTXJvkG0kuTjLt/8a2pt/LYCQ5IUklWRb/5jYf+pmbJH/Q/exsTvKJxa5xWPr4nTo4ySVJrup+r44eRp33q6qW/Ae9N2VvBB4B7AZcAxw2qc8fAX/bPT4J+NSw615Cc/M7wEO6x690bn6l3x7ApcBlwNiw614qcwOsAa4C9u629xt23UtobjYAr+weHwbcMuy6J38slyP3fi5ncBywsXt8HrA2yVQnU7Vmxrmpqkuq6t5u8zJ65x3sDPq9DMbbgHcC/72YxQ1ZP3PzCuADVfUDgKravsg1Dks/c1PAnt3jh7EEz+NZLuE+1eUMVk3Xp6ruA+4B9l2U6oarn7mZ6BTgCwta0dIx49wkOQI4qKo+t5iFLQH9/NwcChya5GtJLkty1KJVN1z9zM2fAy9MshX4PPDqxSmtf8vleu4zXs6gzz4t6vv7TvJCYAx42oJWtHTc79wk2QV4H/CSxSpoCenn52YFvaWZp9N7tffVJIdX1d0LXNuw9TM3JwNnV9V7kjwZ+Gg3N/+78OX1Z7kcufdzOYNf9Emygt5Lpe8vSnXD1delHpI8E3gzcGxV/XSRahu2meZmD+Bw4CtJbgGeBFywk7yp2u/v1PlV9fOquhm4nl7Yt66fuTkFOBegqv4DeBC9i4otGcsl3Pu5nMEFwLru8QnAl6t7t6NxM85Nt/Twd/SCfWdZN4UZ5qaq7qmqlVU1WlWj9N6POLaqNg2n3EXVz+/UP9F7M54kK+kt09y0qFUORz9zcyuwFiDJY+iF+/iiVjmDZRHu3Rr6jssZXAecW1Wbk7w1ybFdt7OAfZNsAU4Fdoq7P/U5N+8Cdgc+neTqJDvFdX76nJudUp9z80XgriTXApcAf1ZVdw2n4sXT59y8HnhFkmuAc4CXLLWDSS8/IEkNWhZH7pKk2THcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoP+D59k1Cf7AAB6AAAAAElFTkSuQmCC\n",
117 "text/plain": [
118 "<Figure size 432x288 with 1 Axes>"
119 ]
120 },
121 "metadata": {
122 "needs_background": "light"
123 },
124 "output_type": "display_data"
125 },
126 {
127 "data": {
128 "image/png": "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\n",
129 "text/plain": [
130 "<Figure size 432x288 with 1 Axes>"
131 ]
132 },
133 "metadata": {
134 "needs_background": "light"
135 },
136 "output_type": "display_data"
137 },
138 {
139 "data": {
140 "image/png": "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\n",
141 "text/plain": [
142 "<Figure size 432x288 with 1 Axes>"
143 ]
144 },
145 "metadata": {
146 "needs_background": "light"
147 },
148 "output_type": "display_data"
149 },
150 {
151 "data": {
152 "image/png": "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\n",
153 "text/plain": [
154 "<Figure size 432x288 with 1 Axes>"
155 ]
156 },
157 "metadata": {
158 "needs_background": "light"
159 },
160 "output_type": "display_data"
161 }
162 ],
163 "source": [
164 "plot_diagram('MPC', human_models, rep, mpc, ks_distance)\n",
165 "plot_diagram('Node_Activity', human_models, rep, na, ks_distance)\n",
166 "plot_diagram('Out_Degree', human_models, rep, od, ks_distance)\n",
167 "plot_diagram('Node_Type', human_models, rep, nt, metrics.manual_ks)\n"
168 ]
169 },
170 {
171 "cell_type": "code",
172 "execution_count": null,
173 "metadata": {},
174 "outputs": [],
175 "source": []
176 }
177 ],
178 "metadata": {
179 "kernelspec": {
180 "display_name": "Python 3",
181 "language": "python",
182 "name": "python3"
183 },
184 "language_info": {
185 "codemirror_mode": {
186 "name": "ipython",
187 "version": 3
188 },
189 "file_extension": ".py",
190 "mimetype": "text/x-python",
191 "name": "python",
192 "nbconvert_exporter": "python",
193 "pygments_lexer": "ipython3",
194 "version": "3.7.3"
195 }
196 },
197 "nbformat": 4,
198 "nbformat_minor": 2
199}