def test_add_point(self, denstream): case_list = [] case_1 = Case('1') case_1.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00)) case_1.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10)) case_1.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20)) case_list.append(case_1) case_2 = Case('2') case_2.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00)) case_2.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10)) case_list.append(case_2) graph = nx.DiGraph() graph = initialize_graph(graph, case_list) case_3 = Case('3') case_3.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00)) case_3.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10)) case_3.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20)) case_3.set_activity('activityD', datetime(2015, 5, 10, 8, 00, 30)) trace_distance, time_distance = extract_case_distances(graph, case_3) case_3.graph_distance = trace_distance case_3.time_distance = time_distance micro_cluster = MicroCluster(10, 2, 0, 0.15) micro_cluster.CF = np.array([0.5, -0.5]) micro_cluster.CF2 = np.array([0.5, -0.1]) micro_cluster.weight = 10 denstream.p_micro_clusters.append(micro_cluster) micro_cluster = MicroCluster(11, 2, 0, 0.15) micro_cluster.CF = np.array([0.0, 0.0]) micro_cluster.CF2 = np.array([0.0, 0.0]) micro_cluster.weight = 5 denstream.o_micro_clusters.append(micro_cluster) denstream.mc_id = 2 mc_id = denstream.add_point(case_3) assert mc_id == 2 assert len(denstream.o_micro_clusters) == 2 assert denstream.o_micro_clusters[1].radius == 0 assert denstream.o_micro_clusters[1].weight == 1 assert np.all(denstream.o_micro_clusters[1].CF == case_3.point) assert np.all(denstream.o_micro_clusters[1].CF2 == case_3.point * case_3.point) cf = denstream.o_micro_clusters[1].CF.copy() cf2 = denstream.o_micro_clusters[1].CF2.copy() mc_id = denstream.add_point(case_3) assert mc_id == 2 assert len(denstream.o_micro_clusters) == 1 assert len(denstream.p_micro_clusters) == 2 assert denstream.p_micro_clusters[1].weight == 2 assert np.all(denstream.p_micro_clusters[1].CF == cf + case_3.point) assert np.all(denstream.p_micro_clusters[1].CF2 == cf2 + case_3.point * case_3.point)
def test_release_cases_from_memory(self, process): case1 = Case('1') case2 = Case('2') case3 = Case('3') case4 = Case('4') case4.set_activity('activity1', datetime(2015, 5, 10, 8, 30, 00)) case1.set_activity('activity1', datetime(2015, 5, 10, 9, 00, 00)) case3.set_activity('activity1', datetime(2015, 5, 10, 9, 30, 00)) case2.set_activity('activity1', datetime(2015, 5, 10, 10, 00, 00)) process.cases = [case2, case3, case1, case4] process.release_cases_from_memory() assert process.cases == [] process.cases = [case2, case3, case1, case4] process.nyquist = 1 process.release_cases_from_memory() assert process.cases == [case2] process.cases = [case2, case3, case1, case4] process.nyquist = 2 process.release_cases_from_memory() assert process.cases == [case2, case3] process.cases = [case2, case3, case1, case4] process.nyquist = 3 process.release_cases_from_memory() assert process.cases == [case2, case3, case1] process.cases = [case2, case3, case1, case4] process.nyquist = 4 process.release_cases_from_memory() assert process.cases == [case2, case3, case1, case4]
def cases_list(self): case_1 = Case('1') case_1.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00)) case_1.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10)) case_1.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20)) case_2 = Case('2') case_2.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00)) case_2.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10)) case_3 = Case('3') case_3.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00)) case_3.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10)) case_3.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20)) case_3.set_activity('activityD', datetime(2015, 5, 10, 8, 00, 30)) return [case_3, case_2, case_1]
def test_initialize_cdesf(self, process, cases_list): assert process.nyquist == 0 assert process.check_point_cases == 0 assert len(process.process_model_graph.edges) == 0 assert len(process.process_model_graph.nodes) == 0 assert process.cases == [] with pytest.raises(Exception): assert initialize_graph(nx.DiGraph(), []) case4 = Case('4') case4.set_activity('activityA', datetime(2015, 5, 10, 8, 00, 00)) case4.set_activity('activityB', datetime(2015, 5, 10, 8, 00, 10)) case4.set_activity('activityC', datetime(2015, 5, 10, 8, 00, 20)) process.cases = cases_list process.cases.insert(0, case4) process.process_model_graph = initialize_graph(nx.DiGraph(), process.cases) pmg = initialize_graph(nx.DiGraph(), cases_list) for case in cases_list: graph_distance, time_distance = extract_case_distances(pmg, case) case.graph_distance = graph_distance case.time_distance = time_distance case_4 = process.cases[0] process.initialize_cdesf() graph_dist_4, time_dist_4 = extract_case_distances(pmg, case_4) assert case_4.graph_distance == graph_dist_4 assert case_4.time_distance == time_dist_4 assert len(process.denstream.p_micro_clusters) == 1 assert process.denstream.all_cases.keys() == {'1', '4'} new_p_mc = process.denstream.p_micro_clusters[0] assert new_p_mc.weight == 2 assert new_p_mc.creation_time == 0 assert new_p_mc.lambda_ == 0.15 assert process.initialized