diff options
author | 2019-05-27 15:40:43 -0400 | |
---|---|---|
committer | 2019-05-27 15:40:43 -0400 | |
commit | 77b37ddbb27f9bf185b8803746b1b3448c77b97c (patch) | |
tree | c44a98fc0ac81e845ee88bb139e986abb042d038 /Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb | |
parent | REALMET: implement incoming edges in visualisation. multips need fix (diff) | |
download | VIATRA-Generator-77b37ddbb27f9bf185b8803746b1b3448c77b97c.tar.gz VIATRA-Generator-77b37ddbb27f9bf185b8803746b1b3448c77b97c.tar.zst VIATRA-Generator-77b37ddbb27f9bf185b8803746b1b3448c77b97c.zip |
add metrics data plot tool
Diffstat (limited to 'Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb')
-rw-r--r-- | Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb b/Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb new file mode 100644 index 00000000..17ad1253 --- /dev/null +++ b/Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb | |||
@@ -0,0 +1,207 @@ | |||
1 | { | ||
2 | "cells": [ | ||
3 | { | ||
4 | "cell_type": "markdown", | ||
5 | "metadata": {}, | ||
6 | "source": [ | ||
7 | "## Metric comparison preperation" | ||
8 | ] | ||
9 | }, | ||
10 | { | ||
11 | "cell_type": "code", | ||
12 | "execution_count": 2, | ||
13 | "metadata": {}, | ||
14 | "outputs": [], | ||
15 | "source": [ | ||
16 | "import readCSV as reader\n", | ||
17 | "import glob\n", | ||
18 | "import random \n", | ||
19 | "from sklearn.manifold import MDS\n", | ||
20 | "import matplotlib.pyplot as plt\n", | ||
21 | "from scipy import stats\n", | ||
22 | "import numpy as np" | ||
23 | ] | ||
24 | }, | ||
25 | { | ||
26 | "cell_type": "code", | ||
27 | "execution_count": 3, | ||
28 | "metadata": {}, | ||
29 | "outputs": [], | ||
30 | "source": [ | ||
31 | "def calculateKSMatrix(dists):\n", | ||
32 | " dist = []\n", | ||
33 | "\n", | ||
34 | " for i in range(len(dists)):\n", | ||
35 | " dist = dist + dists[i]\n", | ||
36 | " matrix = np.empty((len(dist),len(dist)))\n", | ||
37 | "\n", | ||
38 | " for i in range(len(dist)):\n", | ||
39 | " matrix[i,i] = 0\n", | ||
40 | " for j in range(i+1, len(dist)):\n", | ||
41 | " value, p = stats.ks_2samp(dist[i], dist[j])\n", | ||
42 | " matrix[i, j] = value\n", | ||
43 | " matrix[j, i] = value\n", | ||
44 | " value, p = stats.ks_2samp(dist[j], dist[i])\n", | ||
45 | " return matrix\n" | ||
46 | ] | ||
47 | }, | ||
48 | { | ||
49 | "cell_type": "code", | ||
50 | "execution_count": 4, | ||
51 | "metadata": {}, | ||
52 | "outputs": [], | ||
53 | "source": [ | ||
54 | "def calculateMDS(dissimilarities):\n", | ||
55 | " embedding = MDS(n_components=2, dissimilarity='precomputed')\n", | ||
56 | " trans = embedding.fit_transform(X=dissimilarities)\n", | ||
57 | " return trans" | ||
58 | ] | ||
59 | }, | ||
60 | { | ||
61 | "cell_type": "code", | ||
62 | "execution_count": 5, | ||
63 | "metadata": {}, | ||
64 | "outputs": [], | ||
65 | "source": [ | ||
66 | "def plot(names, coords, index = 0, title=''):\n", | ||
67 | " half_length = int(coords.shape[0] / len(names))\n", | ||
68 | " color = ['blue', 'red', 'green']\n", | ||
69 | " graph = plt.figure(index)\n", | ||
70 | " plt.title(title)\n", | ||
71 | " for i in range(len(names)):\n", | ||
72 | " x = (coords[(i*half_length):((i+1)*half_length), 0].tolist())\n", | ||
73 | " y = (coords[(i*half_length):((i+1)*half_length), 1].tolist())\n", | ||
74 | " plt.plot(x, y, color=color[i], marker='o', label = names[i], linestyle='', alpha=0.7)\n", | ||
75 | " plt.legend(loc='upper right')\n", | ||
76 | " plt.savefig(fname = title+'.png', dpi=150)\n", | ||
77 | " #graph.show()\n" | ||
78 | ] | ||
79 | }, | ||
80 | { | ||
81 | "cell_type": "markdown", | ||
82 | "metadata": {}, | ||
83 | "source": [ | ||
84 | "## Read Files\n", | ||
85 | "1. define class for metric reading of each graph type" | ||
86 | ] | ||
87 | }, | ||
88 | { | ||
89 | "cell_type": "code", | ||
90 | "execution_count": 6, | ||
91 | "metadata": {}, | ||
92 | "outputs": [], | ||
93 | "source": [ | ||
94 | "class GraphType:\n", | ||
95 | " \n", | ||
96 | " # init with path contrain files and number of files to read reader is imported from (readCSV)\n", | ||
97 | " def __init__(self, path, number):\n", | ||
98 | " self.out_ds = []\n", | ||
99 | " self.nas = []\n", | ||
100 | " self.mpcs = []\n", | ||
101 | " models = reader.readmultiplefiles(path, number)\n", | ||
102 | " for i in range(len(models)):\n", | ||
103 | " out_d, na, mpc = reader.getmetrics(models[i])\n", | ||
104 | " self.out_ds.append(out_d)\n", | ||
105 | " self.nas.append(na)\n", | ||
106 | " self.mpcs.append(mpc)" | ||
107 | ] | ||
108 | }, | ||
109 | { | ||
110 | "cell_type": "markdown", | ||
111 | "metadata": {}, | ||
112 | "source": [ | ||
113 | "2. read metrics for each graph type" | ||
114 | ] | ||
115 | }, | ||
116 | { | ||
117 | "cell_type": "code", | ||
118 | "execution_count": 9, | ||
119 | "metadata": {}, | ||
120 | "outputs": [], | ||
121 | "source": [ | ||
122 | "human = GraphType('../statistics/humanOutput/', 300)\n", | ||
123 | "viatra30 = GraphType('../statistics/viatraOutput30/', 300)\n", | ||
124 | "viatra100 = GraphType('../statistics/viatraOutput100/', 300)\n", | ||
125 | "random = GraphType('../statistics/randomOutput/', 300)\n", | ||
126 | "alloy = GraphType('../statistics/alloyOutput/', 300)" | ||
127 | ] | ||
128 | }, | ||
129 | { | ||
130 | "cell_type": "markdown", | ||
131 | "metadata": {}, | ||
132 | "source": [ | ||
133 | "* outdegree comparison for human, Viatra30, and alloy" | ||
134 | ] | ||
135 | }, | ||
136 | { | ||
137 | "cell_type": "code", | ||
138 | "execution_count": 11, | ||
139 | "metadata": {}, | ||
140 | "outputs": [ | ||
141 | { | ||
142 | "ename": "KeyboardInterrupt", | ||
143 | "evalue": "", | ||
144 | "output_type": "error", | ||
145 | "traceback": [ | ||
146 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", | ||
147 | "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", | ||
148 | "\u001b[1;32m<ipython-input-11-5692e29d4679>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mout_d_coords\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcalculateMDS\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcalculateKSMatrix\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mviatra30\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mout_ds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0malloy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mout_ds\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhuman\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mout_ds\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Viatra (30 nodes)'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Alloy (30 nodes)'\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;34m'Human'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mout_d_coords\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'Out Degree'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | ||
149 | "\u001b[1;32m<ipython-input-3-37c4264e6073>\u001b[0m in \u001b[0;36mcalculateKSMatrix\u001b[1;34m(dists)\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[0mmatrix\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[0mmatrix\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 14\u001b[1;33m \u001b[0mvalue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstats\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mks_2samp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdist\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdist\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 15\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mmatrix\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | ||
150 | "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\scipy\\stats\\stats.py\u001b[0m in \u001b[0;36mks_2samp\u001b[1;34m(data1, data2)\u001b[0m\n\u001b[0;32m 4854\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4855\u001b[0m \"\"\"\n\u001b[1;32m-> 4856\u001b[1;33m \u001b[0mdata1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msort\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4857\u001b[0m \u001b[0mdata2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msort\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4858\u001b[0m \u001b[0mn1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | ||
151 | "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py\u001b[0m in \u001b[0;36msort\u001b[1;34m(a, axis, kind, order)\u001b[0m\n\u001b[0;32m 932\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 933\u001b[0m \u001b[0ma\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0masanyarray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0morder\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"K\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 934\u001b[1;33m \u001b[0ma\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msort\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkind\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mkind\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0morder\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0morder\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 935\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0ma\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 936\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", | ||
152 | "\u001b[1;31mKeyboardInterrupt\u001b[0m: " | ||
153 | ] | ||
154 | } | ||
155 | ], | ||
156 | "source": [ | ||
157 | "out_d_coords = calculateMDS(calculateKSMatrix([viatra30.out_ds, alloy.out_ds, human.out_ds]))\n", | ||
158 | "plot(['Viatra (30 nodes)', 'Alloy (30 nodes)' , 'Human'], out_d_coords,0, 'Out Degree')" | ||
159 | ] | ||
160 | }, | ||
161 | { | ||
162 | "cell_type": "markdown", | ||
163 | "metadata": {}, | ||
164 | "source": [ | ||
165 | "* outdegree comparison for human, Viatra30, and alloy" | ||
166 | ] | ||
167 | }, | ||
168 | { | ||
169 | "cell_type": "code", | ||
170 | "execution_count": null, | ||
171 | "metadata": {}, | ||
172 | "outputs": [], | ||
173 | "source": [ | ||
174 | "out_d_coords = calculateMDS(calculateKSMatrix([viatra30.nas, alloy.nas, human.nas]))\n", | ||
175 | "plot(['Viatra (30 nodes)', 'Alloy (30 nodes)' , 'Human'], out_d_coords,0, 'Node Activity')" | ||
176 | ] | ||
177 | }, | ||
178 | { | ||
179 | "cell_type": "code", | ||
180 | "execution_count": null, | ||
181 | "metadata": {}, | ||
182 | "outputs": [], | ||
183 | "source": [] | ||
184 | } | ||
185 | ], | ||
186 | "metadata": { | ||
187 | "kernelspec": { | ||
188 | "display_name": "Python 3", | ||
189 | "language": "python", | ||
190 | "name": "python3" | ||
191 | }, | ||
192 | "language_info": { | ||
193 | "codemirror_mode": { | ||
194 | "name": "ipython", | ||
195 | "version": 3 | ||
196 | }, | ||
197 | "file_extension": ".py", | ||
198 | "mimetype": "text/x-python", | ||
199 | "name": "python", | ||
200 | "nbconvert_exporter": "python", | ||
201 | "pygments_lexer": "ipython3", | ||
202 | "version": "3.7.3" | ||
203 | } | ||
204 | }, | ||
205 | "nbformat": 4, | ||
206 | "nbformat_minor": 2 | ||
207 | } | ||