|
|
@ -3,6 +3,7 @@ import os |
|
|
|
import glob |
|
|
|
import glob |
|
|
|
import numpy as np |
|
|
|
import numpy as np |
|
|
|
import pandas as pd |
|
|
|
import pandas as pd |
|
|
|
|
|
|
|
import networkx as nx |
|
|
|
import timeit |
|
|
|
import timeit |
|
|
|
import psutil |
|
|
|
import psutil |
|
|
|
|
|
|
|
|
|
|
@ -21,6 +22,7 @@ class PerformanceComparisons(unittest.TestCase): |
|
|
|
cls.s1 = None |
|
|
|
cls.s1 = None |
|
|
|
cls.importer = None |
|
|
|
cls.importer = None |
|
|
|
cls.original_algo = None |
|
|
|
cls.original_algo = None |
|
|
|
|
|
|
|
cls.real_net_graph = None |
|
|
|
cls.original_times = [] |
|
|
|
cls.original_times = [] |
|
|
|
cls.optimized_times = [] |
|
|
|
cls.optimized_times = [] |
|
|
|
cls.results = [] |
|
|
|
cls.results = [] |
|
|
@ -45,11 +47,19 @@ class PerformanceComparisons(unittest.TestCase): |
|
|
|
self.original_times.append(original_time) |
|
|
|
self.original_times.append(original_time) |
|
|
|
self.optimized_times.append(opt_time) |
|
|
|
self.optimized_times.append(opt_time) |
|
|
|
self.results.append((original_res, opt_res)) |
|
|
|
self.results.append((original_res, opt_res)) |
|
|
|
|
|
|
|
try: |
|
|
|
self.assertTrue(np.array_equal(original_res, opt_res)) |
|
|
|
self.assertTrue(np.array_equal(original_res, opt_res)) |
|
|
|
|
|
|
|
except AssertionError: |
|
|
|
|
|
|
|
self.real_net_graph = self.real_net_structure_builder() |
|
|
|
|
|
|
|
original_algo_net_graph = self.build_graph_from_adj_matrix(original_res, self.s1.structure.nodes_labels) |
|
|
|
|
|
|
|
original_spurius_edges = self.compute_edges_difference(self.real_net_graph, original_algo_net_graph) |
|
|
|
|
|
|
|
opt_spurius_edges = self.compute_edges_difference(self.real_net_graph, se1._complete_graph) |
|
|
|
|
|
|
|
self.assertLessEqual(opt_spurius_edges, original_spurius_edges) |
|
|
|
|
|
|
|
continue |
|
|
|
self.save_datas(self.original_times, self.optimized_times) |
|
|
|
self.save_datas(self.original_times, self.optimized_times) |
|
|
|
self.original_times[:] = [] |
|
|
|
self.original_times[:] = [] |
|
|
|
self.optimized_times[:] = [] |
|
|
|
self.optimized_times[:] = [] |
|
|
|
|
|
|
|
""" |
|
|
|
def test_memory_usage(self): |
|
|
|
def test_memory_usage(self): |
|
|
|
for file_path in self.read_files: |
|
|
|
for file_path in self.read_files: |
|
|
|
self.importer = JsonImporter(file_path, 'samples', 'dyn.str', 'variables', 'Time', 'Name') |
|
|
|
self.importer = JsonImporter(file_path, 'samples', 'dyn.str', 'variables', 'Time', 'Name') |
|
|
@ -60,6 +70,7 @@ class PerformanceComparisons(unittest.TestCase): |
|
|
|
mem = current_process.memory_info().rss |
|
|
|
mem = current_process.memory_info().rss |
|
|
|
self.memory_usages.append((mem / 10 ** 6)) |
|
|
|
self.memory_usages.append((mem / 10 ** 6)) |
|
|
|
self.save_memory_usage_data(self.memory_usages) |
|
|
|
self.save_memory_usage_data(self.memory_usages) |
|
|
|
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
def aux_build_importer(self, indx): |
|
|
|
def aux_build_importer(self, indx): |
|
|
|
self.importer.import_data(indx) |
|
|
|
self.importer.import_data(indx) |
|
|
@ -94,5 +105,21 @@ class PerformanceComparisons(unittest.TestCase): |
|
|
|
df_results.to_csv(file_dest, index=False) |
|
|
|
df_results.to_csv(file_dest, index=False) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def real_net_structure_builder(self): |
|
|
|
|
|
|
|
graph = nx.DiGraph() |
|
|
|
|
|
|
|
graph.add_nodes_from(self.s1.structure.nodes_labels) |
|
|
|
|
|
|
|
graph.add_edges_from(self.s1.structure.edges) |
|
|
|
|
|
|
|
return graph |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def build_graph_from_adj_matrix(self, original_res, nodes_labels): |
|
|
|
|
|
|
|
graph = nx.from_numpy_matrix(original_res, create_using=nx.DiGraph) |
|
|
|
|
|
|
|
mapping = dict(zip(graph.nodes, nodes_labels)) |
|
|
|
|
|
|
|
graph = nx.relabel_nodes(graph, mapping) |
|
|
|
|
|
|
|
return graph |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def compute_edges_difference(self, g1, g2): |
|
|
|
|
|
|
|
return len(nx.difference(g1, g2)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
if __name__ == '__main__': |
|
|
|
unittest.main() |
|
|
|
unittest.main() |
|
|
|