1
0
Fork 0

Add memory performance tests

better_develop
Filippo Martini 4 years ago
parent 50140c367c
commit 56e9c5b847
  1. 29
      PyCTBN/tests/performance_comparisons.py

@ -3,6 +3,7 @@ import os
import glob
import numpy as np
import pandas as pd
import networkx as nx
import timeit
import psutil
@ -21,6 +22,7 @@ class PerformanceComparisons(unittest.TestCase):
cls.s1 = None
cls.importer = None
cls.original_algo = None
cls.real_net_graph = None
cls.original_times = []
cls.optimized_times = []
cls.results = []
@ -45,11 +47,19 @@ class PerformanceComparisons(unittest.TestCase):
self.original_times.append(original_time)
self.optimized_times.append(opt_time)
self.results.append((original_res, opt_res))
try:
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.original_times[:] = []
self.optimized_times[:] = []
"""
def test_memory_usage(self):
for file_path in self.read_files:
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
self.memory_usages.append((mem / 10 ** 6))
self.save_memory_usage_data(self.memory_usages)
"""
def aux_build_importer(self, indx):
self.importer.import_data(indx)
@ -94,5 +105,21 @@ class PerformanceComparisons(unittest.TestCase):
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__':
unittest.main()