aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/metrics_plot/src/Metrics Comparison .ipynb
diff options
context:
space:
mode:
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}