aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb
diff options
context:
space:
mode:
authorLibravatar 20001LastOrder <boqi.chen@mail.mcgill.ca>2019-05-27 15:40:43 -0400
committerLibravatar 20001LastOrder <boqi.chen@mail.mcgill.ca>2019-05-27 15:40:43 -0400
commit77b37ddbb27f9bf185b8803746b1b3448c77b97c (patch)
treec44a98fc0ac81e845ee88bb139e986abb042d038 /Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb
parentREALMET: implement incoming edges in visualisation. multips need fix (diff)
downloadVIATRA-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 .ipynb207
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}