diff --git a/main_package/classes/estimators/parameters_estimator.py.bak b/main_package/classes/estimators/parameters_estimator.py.bak deleted file mode 100644 index 2805819..0000000 --- a/main_package/classes/estimators/parameters_estimator.py.bak +++ /dev/null @@ -1,143 +0,0 @@ -import sys -sys.path.append('../') -import numpy as np - -from ..structure_graph.network_graph import NetworkGraph -from ..structure_graph.sample_path import SetOfCims -from ..structure_graph.trajectory import Trajectory - - -class ParametersEstimator(object): - """Has the task of computing the cims of particular node given the trajectories and the net structure - in the graph ``_net_graph``. - - :param trajectories: the trajectories - :type trajectories: Trajectory - :param net_graph: the net structure - :type net_graph: NetworkGraph - :_single_set_of_cims: the set of cims object that will hold the cims of the node - """ - - def __init__(self, trajectories: Trajectory, net_graph: NetworkGraph): - """Constructor Method - """ - self._trajectories = trajectories - self._net_graph = net_graph - self._single_set_of_cims = None - - def fast_init(self, node_id: str) -> None: - """Initializes all the necessary structures for the parameters estimation for the node ``node_id``. - - :param node_id: the node label - :type node_id: string - """ - p_vals = self._net_graph._aggregated_info_about_nodes_parents[2] - node_states_number = self._net_graph.get_states_number(node_id) - self._single_set_of_cims = SetOfCims(node_id, p_vals, node_states_number, self._net_graph.p_combs) - - def compute_parameters_for_node(self, node_id: str) -> SetOfCims: - """Compute the CIMS of the node identified by the label ``node_id``. - - :param node_id: the node label - :type node_id: string - :return: A SetOfCims object filled with the computed CIMS - :rtype: SetOfCims - """ - node_indx = self._net_graph.get_node_indx(node_id) - state_res_times = self._single_set_of_cims._state_residence_times - transition_matrices = self._single_set_of_cims._transition_matrices - ParametersEstimator.compute_state_res_time_for_node(self._trajectories.times, - self._trajectories.trajectory, - self._net_graph.time_filtering, - self._net_graph.time_scalar_indexing_strucure, - state_res_times) - ParametersEstimator.compute_state_transitions_for_a_node(node_indx, self._trajectories.complete_trajectory, - self._net_graph.transition_filtering, - self._net_graph.transition_scalar_indexing_structure, - transition_matrices) - self._single_set_of_cims.build_cims(state_res_times, transition_matrices) - return self._single_set_of_cims - - @staticmethod - def compute_state_res_time_for_node(times: np.ndarray, trajectory: np.ndarray, - cols_filter: np.ndarray, scalar_indexes_struct: np.ndarray, - T: np.ndarray) -> None: - """Compute the state residence times for a node and fill the matrix ``T`` with the results - - :param node_indx: the index of the node - :type node_indx: int - :param times: the times deltas vector - :type times: numpy.array - :param trajectory: the trajectory - :type trajectory: numpy.ndArray - :param cols_filter: the columns filtering structure - :type cols_filter: numpy.array - :param scalar_indexes_struct: the indexing structure - :type scalar_indexes_struct: numpy.array - :param T: the state residence times vectors - :type T: numpy.ndArray - """ - T[:] = np.bincount(np.sum(trajectory[:, cols_filter] * scalar_indexes_struct / scalar_indexes_struct[0], axis=1) - .astype(np.int), \ - times, - minlength=scalar_indexes_struct[-1]).reshape(-1, T.shape[1]) - - @staticmethod - def compute_state_transitions_for_a_node(node_indx: int, trajectory: np.ndarray, cols_filter: np.ndarray, - scalar_indexing: np.ndarray, M: np.ndarray) -> None: - """Compute the state residence times for a node and fill the matrices ``M`` with the results. - - :param node_indx: the index of the node - :type node_indx: int - :param trajectory: the trajectory - :type trajectory: numpy.ndArray - :param cols_filter: the columns filtering structure - :type cols_filter: numpy.array - :param scalar_indexing: the indexing structure - :type scalar_indexing: numpy.array - :param M: the state transitions matrices - :type M: numpy.ndArray - """ - diag_indices = np.array([x * M.shape[1] + x % M.shape[1] for x in range(M.shape[0] * M.shape[1])], - dtype=np.int64) - trj_tmp = trajectory[trajectory[:, int(trajectory.shape[1] / 2) + node_indx].astype(np.int) >= 0] - M[:] = np.bincount(np.sum(trj_tmp[:, cols_filter] * scalar_indexing / scalar_indexing[0], axis=1).astype(np.int) - , minlength=scalar_indexing[-1]).reshape(-1, M.shape[1], M.shape[2]) - M_raveled = M.ravel() - M_raveled[diag_indices] = 0 - M_raveled[diag_indices] = np.sum(M, axis=2).ravel() - - def init_sets_cims_container(self): - self.sets_of_cims_struct = acims.SetsOfCimsContainer(self.net_graph.nodes, - self.net_graph.nodes_values, - self.net_graph.get_ordered_by_indx_parents_values_for_all_nodes(), - self.net_graph.p_combs) - - def compute_parameters(self): - #print(self.net_graph.get_nodes()) - #print(self.amalgamated_cims_struct.sets_of_cims) - #enumerate(zip(self.net_graph.get_nodes(), self.amalgamated_cims_struct.sets_of_cims)) - for indx, aggr in enumerate(zip(self.net_graph.nodes, self.sets_of_cims_struct.sets_of_cims)): - #print(self.net_graph.time_filtering[indx]) - #print(self.net_graph.time_scalar_indexing_strucure[indx]) - self.compute_state_res_time_for_node(self.net_graph.get_node_indx(aggr[0]), self.sample_path.trajectories.times, - self.sample_path.trajectories.trajectory, - self.net_graph.time_filtering[indx], - self.net_graph.time_scalar_indexing_strucure[indx], - aggr[1]._state_residence_times) - #print(self.net_graph.transition_filtering[indx]) - #print(self.net_graph.transition_scalar_indexing_structure[indx]) - self.compute_state_transitions_for_a_node(self.net_graph.get_node_indx(aggr[0]), - self.sample_path.trajectories.complete_trajectory, - self.net_graph.transition_filtering[indx], - self.net_graph.transition_scalar_indexing_structure[indx], - aggr[1]._transition_matrices) - aggr[1].build_cims(aggr[1]._state_residence_times, aggr[1]._transition_matrices) - - - - - - - - diff --git a/main_package/classes/estimators/structure_constraint_based_estimator.py.bak b/main_package/classes/estimators/structure_constraint_based_estimator.py.bak deleted file mode 100644 index 558a625..0000000 --- a/main_package/classes/estimators/structure_constraint_based_estimator.py.bak +++ /dev/null @@ -1,245 +0,0 @@ -import sys -sys.path.append('../') -import itertools -import json -import typing - -import networkx as nx -import numpy as np -from networkx.readwrite import json_graph -import os -from scipy.stats import chi2 as chi2_dist -from scipy.stats import f as f_dist -from tqdm import tqdm - -from ..utility.cache as ch -from ..structure_graph.conditional_intensity_matrix import ConditionalIntensityMatrix -from ..structure_graph.network_graph import NetworkGraph -from .parameters_estimator import ParametersEstimator -from .structure_estimator import StructureEstimator -from ..structure_graph.sample_path import SamplePath -from ..structure_graph.structure import Structure -from ..optimizers.constraint_based_optimizer import ConstraintBasedOptimizer - -import concurrent.futures - -from utility.decorators import timing,timing_write - -import multiprocessing -from multiprocessing import Pool - - -class StructureConstraintBasedEstimator(se.StructureEstimator): - """ - Has the task of estimating the network structure given the trajectories in samplepath by using a constraint-based approach. - - :param sample_path: the _sample_path object containing the trajectories and the real structure - :type sample_path: SamplePath - :param exp_test_alfa: the significance level for the exponential Hp test - :type exp_test_alfa: float - :param chi_test_alfa: the significance level for the chi Hp test - :type chi_test_alfa: float - :_nodes: the nodes labels - :_nodes_vals: the nodes cardinalities - :_nodes_indxs: the nodes indexes - :_complete_graph: the complete directed graph built using the nodes labels in ``_nodes`` - :_cache: the Cache object - """ - - def __init__(self, sample_path: SamplePath, exp_test_alfa: float, chi_test_alfa: float,known_edges: typing.List= [],thumb_threshold:int = 25): - super().__init__(sample_path,known_edges) - self._exp_test_sign = exp_test_alfa - self._chi_test_alfa = chi_test_alfa - self._thumb_threshold = thumb_threshold - tot_vars_count: int, parent_indx, child_indx) -> bool: - - def complete_test(self, test_parent: str, test_child: str, parent_set: typing.List, child_states_numb: int, - tot_vars_count: int, parent_indx, child_indx) -> bool: - """Performs a complete independence test on the directed graphs G1 = {test_child U parent_set} - G2 = {G1 U test_parent} (added as an additional parent of the test_child). - Generates all the necessary structures and datas to perform the tests. - - :param test_parent: the node label of the test parent - :type test_parent: string - :param test_child: the node label of the child - :type test_child: string - :param parent_set: the common parent set - :type parent_set: List - :param child_states_numb: the cardinality of the ``test_child`` - :type child_states_numb: int - :param tot_vars_count: the total number of variables in the net - :type tot_vars_count: int - :return: True iff test_child and test_parent are independent given the sep_set parent_set. False otherwise - :rtype: bool - """ - p_set = parent_set[:] - complete_info = parent_set[:] - complete_info.append(test_child) - - parents = np.array(parent_set) - parents = np.append(parents, test_parent) - sorted_parents = self._nodes[np.isin(self._nodes, parents)] - cims_filter = sorted_parents != test_parent - - p_set.insert(0, test_parent) - sofc2 = self._cache.find(set(p_set)) - - if not sofc2: - complete_info.append(test_parent) - bool_mask2 = np.isin(self._nodes, complete_info) - l2 = list(self._nodes[bool_mask2]) - indxs2 = self._nodes_indxs[bool_mask2] - vals2 = self._nodes_vals[bool_mask2] - eds2 = list(itertools.product(p_set, test_child)) - s2 = Structure(l2, indxs2, vals2, eds2, tot_vars_count) - g2 = NetworkGraph(s2) - g2.fast_init(test_child) - p2 = ParametersEstimator(self._sample_path.trajectories, g2) - p2.fast_init(test_child) - sofc2 = p2.compute_parameters_for_node(test_child) - self._cache.put(set(p_set), sofc2) - - del p_set[0] - sofc1 = self._cache.find(set(p_set)) - if not sofc1: - g2.remove_node(test_parent) - g2.fast_init(test_child) - p2 = ParametersEstimator(self._sample_path.trajectories, g2) - p2.fast_init(test_child) - sofc1 = p2.compute_parameters_for_node(test_child) - self._cache.put(set(p_set), sofc1) - thumb_value = 0.0 - if child_states_numb > 2: - parent_val = self._sample_path.structure.get_states_number(test_parent) - bool_mask_vals = np.isin(self._nodes, parent_set) - parents_vals = self._nodes_vals[bool_mask_vals] - thumb_value = self.compute_thumb_value(parent_val, child_states_numb, parents_vals) - for cim1, p_comb in zip(sofc1.actual_cims, sofc1.p_combs): - cond_cims = sofc2.filter_cims_with_mask(cims_filter, p_comb) - for cim2 in cond_cims: - if not self.independence_test(child_states_numb, cim1, cim2, thumb_value, parent_indx, child_indx): - return False - return True - - def independence_test(self, child_states_numb: int, cim1: ConditionalIntensityMatrix, - cim2: ConditionalIntensityMatrix, thumb_value: float, parent_indx, child_indx) -> bool: - """Compute the actual independence test using two cims. - It is performed first the exponential test and if the null hypothesis is not rejected, - it is performed also the chi_test. - - :param child_states_numb: the cardinality of the test child - :type child_states_numb: int - :param cim1: a cim belonging to the graph without test parent - :type cim1: ConditionalIntensityMatrix - :param cim2: a cim belonging to the graph with test parent - :type cim2: ConditionalIntensityMatrix - :return: True iff both tests do NOT reject the null hypothesis of independence. False otherwise. - :rtype: bool - """ - M1 = cim1.state_transition_matrix - M2 = cim2.state_transition_matrix - r1s = M1.diagonal() - r2s = M2.diagonal() - C1 = cim1.cim - C2 = cim2.cim - if child_states_numb > 2: - if (np.sum(np.diagonal(M1)) / thumb_value) < self._thumb_threshold: - self._removable_edges_matrix[parent_indx][child_indx] = False - return False - F_stats = C2.diagonal() / C1.diagonal() - exp_alfa = self._exp_test_sign - for val in range(0, child_states_numb): - if F_stats[val] < f_dist.ppf(exp_alfa / 2, r1s[val], r2s[val]) or \ - F_stats[val] > f_dist.ppf(1 - exp_alfa / 2, r1s[val], r2s[val]): - return False - M1_no_diag = M1[~np.eye(M1.shape[0], dtype=bool)].reshape(M1.shape[0], -1) - M2_no_diag = M2[~np.eye(M2.shape[0], dtype=bool)].reshape( - M2.shape[0], -1) - chi_2_quantile = chi2_dist.ppf(1 - self._chi_test_alfa, child_states_numb - 1) - Ks = np.sqrt(r1s / r2s) - Ls = np.sqrt(r2s / r1s) - for val in range(0, child_states_numb): - Chi = np.sum(np.power(Ks[val] * M2_no_diag[val] - Ls[val] *M1_no_diag[val], 2) / - (M1_no_diag[val] + M2_no_diag[val])) - if Chi > chi_2_quantile: - return False - return True - - def compute_thumb_value(self, parent_val, child_val, parent_set_vals): - """Compute the value to test against the thumb_threshold. - - :param parent_val: test parent's variable cardinality - :type parent_val: int - :param child_val: test child's variable cardinality - :type child_val: int - :param parent_set_vals: the cardinalities of the nodes in the current sep-set - :type parent_set_vals: List - :return: the thumb value for the current independence test - :rtype: int - """ - df = (child_val - 1) ** 2 - df = df * parent_val - for v in parent_set_vals: - df = df * v - return df - - def one_iteration_of_CTPC_algorithm(self, var_id: str, tot_vars_count: int)-> typing.List: - """Performs an iteration of the CTPC algorithm using the node ``var_id`` as ``test_child``. - - :param var_id: the node label of the test child - :type var_id: string - """ - optimizer_obj = optimizer.ConstraintBasedOptimizer( - node_id = var_id, - structure_estimator = self, - tot_vars_count = tot_vars_count) - return optimizer_obj.optimize_structure() - - - def ctpc_algorithm(self,disable_multiprocessing:bool= False ): - """ - Compute the CTPC algorithm. - Parameters: - void - Returns: - void - """ - ctpc_algo = self.one_iteration_of_CTPC_algorithm - total_vars_numb = self._sample_path.total_variables_count - - n_nodes= len(self.nodes) - - total_vars_numb_array = [total_vars_numb] * n_nodes - - 'get the number of CPU' - cpu_count = multiprocessing.cpu_count() - - - - 'Remove all the edges from the structure' - self._sample_path.structure.clean_structure_edges() - - 'Estimate the best parents for each node' - #with multiprocessing.Pool(processes=cpu_count) as pool: - #with get_context("spawn").Pool(processes=cpu_count) as pool: - if disable_multiprocessing: - print("DISABILITATO") - cpu_count = 1 - list_edges_partial = [ctpc_algo(n,total_vars_numb) for n in self.nodes] - else: - with concurrent.futures.ProcessPoolExecutor(max_workers=cpu_count) as executor: - list_edges_partial = executor.map(ctpc_algo, - self.nodes, - total_vars_numb_array) - #list_edges_partial = [ctpc_algo(n,total_vars_numb) for n in self.nodes] - - return set(itertools.chain.from_iterable(list_edges_partial)) - - - @timing - def estimate_structure(self,disable_multiprocessing:bool=False): - return self.ctpc_algorithm(disable_multiprocessing=disable_multiprocessing) - - - - diff --git a/main_package/classes/estimators/structure_estimator.py.bak b/main_package/classes/estimators/structure_estimator.py.bak deleted file mode 100644 index 36fcb04..0000000 --- a/main_package/classes/estimators/structure_estimator.py.bak +++ /dev/null @@ -1,189 +0,0 @@ -import sys -sys.path.append('../') -import itertools -import json -import typing - -import matplotlib.pyplot as plt -import networkx as nx -import numpy as np -from networkx.readwrite import json_graph - -from abc import ABC - -import abc - -import ..utility.cache as ch -import ..structure_graph.conditional_intensity_matrix import ConditionalIntensityMatrix -import ..structure_graph.network_graph import NetworkGraph -import .parameters_estimator import ParametersEstimator -import ..structure_graph.sample_path import SamplePath -from ..structure_graph.structure import Structure - - -class StructureEstimator(object): - """Has the task of estimating the network structure given the trajectories in ``samplepath``. - - :param sample_path: the _sample_path object containing the trajectories and the real structure - :type sample_path: SamplePath - :_nodes: the nodes labels - :_nodes_vals: the nodes cardinalities - :_nodes_indxs: the nodes indexes - :_complete_graph: the complete directed graph built using the nodes labels in ``_nodes`` - """ - - def __init__(self, sample_path: SamplePath, known_edges: typing.List = None): - self._sample_path = sample_path - self.nodes = np.array(self._sample_path.structure.nodes_labels) - self.nodes_vals = self._sample_path.structure.nodes_values - self.nodes_indxs = self._sample_path.structure.nodes_indexes - self._removable_edges_matrix = self. - (known_edges) - self.complete_graph = self.build_complete_graph(self._sample_path.structure.nodes_labels) - self.cache = ch.Cache() - - def build_removable_edges_matrix(self, known_edges: typing.List): - """Builds a boolean matrix who shows if a edge could be removed or not, based on prior knowledge given: - - :param known_edges: the list of nodes labels - :type known_edges: List - :return: a boolean matrix - :rtype: np.ndarray - """ - tot_vars_count = self._sample_path.total_variables_count - complete_adj_matrix = np.full((tot_vars_count, tot_vars_count), True) - if known_edges: - for edge in known_edges: - i = self._sample_path.structure.get_node_indx(edge[0]) - j = self._sample_path.structure.get_node_indx(edge[1]) - complete_adj_matrix[i][j] = False - return complete_adj_matrix - - @staticmethod - def build_complete_graph(node_ids: typing.List) -> nx.DiGraph: - """Builds a complete directed graph (no self loops) given the nodes labels in the list ``node_ids``: - - :param node_ids: the list of nodes labels - :type node_ids: List - :return: a complete Digraph Object - :rtype: networkx.DiGraph - """ - complete_graph = nx.DiGraph() - complete_graph.add_nodes_from(node_ids) - complete_graph.add_edges_from(itertools.permutations(node_ids, 2)) - return complete_graph - - - - def generate_possible_sub_sets_of_size(self, u: typing.List, size: int, parent_label: str): - """Creates a list containing all possible subsets of the list ``u`` of size ``size``, - that do not contains a the node identified by ``parent_label``. - - :param u: the list of nodes - :type u: List - :param size: the size of the subsets - :type size: int - :param parent_label: the node to exclude in the subsets generation - :type parent_label: string - :return: an Iterator Object containing a list of lists - :rtype: Iterator - """ - list_without_test_parent = u[:] - list_without_test_parent.remove(parent_label) - return map(list, itertools.combinations(list_without_test_parent, size)) - - def save_results(self) -> None: - """Save the estimated Structure to a .json file in the path where the data are loaded from. - The file is named as the input dataset but the `results_` word is appended to the results file. - """ - res = json_graph.node_link_data(self._complete_graph) - name = self._sample_path._importer.file_path.rsplit('/', 1)[-1] - name = name.split('.', 1)[0] - name += '_' + str(self._sample_path._importer.dataset_id()) - name += '.json' - file_name = 'results_' + name - with open(file_name, 'w') as f: - json.dump(res, f) - - - def remove_diagonal_elements(self, matrix): - m = matrix.shape[0] - strided = np.lib.stride_tricks.as_strided - s0, s1 = matrix.strides - return strided(matrix.ravel()[1:], shape=(m - 1, m), strides=(s0 + s1, s1)).reshape(m, -1) - - - @abc.abstractmethod - def estimate_structure(self) -> typing.List: - """Abstract method to estimate the structure - - :return: List of estimated edges - :rtype: Typing.List - """ - pass - - - def adjacency_matrix(self) -> np.ndarray: - """Converts the estimated structure ``_complete_graph`` to a boolean adjacency matrix representation. - - :return: The adjacency matrix of the graph ``_complete_graph`` - :rtype: numpy.ndArray - """ - return nx.adj_matrix(self._complete_graph).toarray().astype(bool) - - def spurious_edges(self) -> typing.List: - """Return the spurious edges present in the estimated structure, if a prior net structure is present in - ``_sample_path.structure``. - - :return: A list containing the spurious edges - :rtype: List - """ - if not self._sample_path.has_prior_net_structure: - raise RuntimeError("Can not compute spurious edges with no prior net structure!") - real_graph = nx.DiGraph() - real_graph.add_nodes_from(self._sample_path.structure.nodes_labels) - real_graph.add_edges_from(self._sample_path.structure.edges) - return nx.difference(real_graph, self._complete_graph).edges - - def save_plot_estimated_structure_graph(self) -> None: - """Plot the estimated structure in a graphical model style. - Spurious edges are colored in red. - """ - graph_to_draw = nx.DiGraph() - spurious_edges = self.spurious_edges() - non_spurious_edges = list(set(self._complete_graph.edges) - set(spurious_edges)) - print(non_spurious_edges) - edges_colors = ['red' if edge in spurious_edges else 'black' for edge in self._complete_graph.edges] - graph_to_draw.add_edges_from(spurious_edges) - graph_to_draw.add_edges_from(non_spurious_edges) - pos = nx.spring_layout(graph_to_draw, k=0.5*1/np.sqrt(len(graph_to_draw.nodes())), iterations=50,scale=10) - options = { - "node_size": 2000, - "node_color": "white", - "edgecolors": "black", - 'linewidths':2, - "with_labels":True, - "font_size":13, - 'connectionstyle': 'arc3, rad = 0.1', - "arrowsize": 15, - "arrowstyle": '<|-', - "width": 1, - "edge_color":edges_colors, - } - - nx.draw(graph_to_draw, pos, **options) - ax = plt.gca() - ax.margins(0.20) - plt.axis("off") - name = self._sample_path._importer.file_path.rsplit('/', 1)[-1] - name = name.split('.', 1)[0] - name += '_' + str(self._sample_path._importer.dataset_id()) - name += '.png' - plt.savefig(name) - plt.clf() - print("Estimated Structure Plot Saved At: ", os.path.abspath(name)) - - - - - diff --git a/main_package/classes/estimators/structure_score_based_estimator.py b/main_package/classes/estimators/structure_score_based_estimator.py index 19e7fc4..2903db3 100644 --- a/main_package/classes/estimators/structure_score_based_estimator.py +++ b/main_package/classes/estimators/structure_score_based_estimator.py @@ -23,7 +23,6 @@ from .fam_score_calculator import FamScoreCalculator from ..optimizers.hill_climbing_search import HillClimbing from ..optimizers.tabu_search import TabuSearch -from ..utility.decorators import timing,timing_write import multiprocessing from multiprocessing import Pool @@ -53,7 +52,6 @@ class StructureScoreBasedEstimator(StructureEstimator): self.alpha_xu=alpha_xu - @timing def estimate_structure(self, max_parents:int = None, iterations_number:int= 40, patience:int = None, tabu_length:int = None, tabu_rules_duration:int = None, optimizer: str = 'tabu',disable_multiprocessing:bool= False ): diff --git a/main_package/classes/structure_graph/abstract_sample_path.py b/main_package/classes/structure_graph/abstract_sample_path.py deleted file mode 100644 index 36965b0..0000000 --- a/main_package/classes/structure_graph/abstract_sample_path.py +++ /dev/null @@ -1,41 +0,0 @@ -from abc import ABC, abstractmethod - -import sys -sys.path.append('../') - -import utility.abstract_importer as ai - - -class AbstractSamplePath(ABC): - - def __init__(self, importer: ai.AbstractImporter): - self.importer = importer - self._trajectories = None - self._structure = None - super().__init__() - - @abstractmethod - def build_trajectories(self): - """ - Builds the Trajectory object that will contain all the trajectories. - Assigns the Trajectoriy object to the instance attribute _trajectories - Clears all the unused dataframes in Importer Object - - Parameters: - void - Returns: - void - """ - pass - - @abstractmethod - def build_structure(self): - """ - Builds the Structure object that aggregates all the infos about the net. - Assigns the Structure object to the instance attribuite _structure - Parameters: - void - Returns: - void - """ - pass diff --git a/main_package/classes/structure_graph/conditional_intensity_matrix.py.bak b/main_package/classes/structure_graph/conditional_intensity_matrix.py.bak deleted file mode 100644 index e87b662..0000000 --- a/main_package/classes/structure_graph/conditional_intensity_matrix.py.bak +++ /dev/null @@ -1,44 +0,0 @@ -import numpy as np - -import sys -sys.path.append('../') - -class ConditionalIntensityMatrix: - """Abstracts the Conditional Intesity matrix of a node as aggregation of the state residence times vector - and state transition matrix and the actual CIM matrix. - - :param state_residence_times: state residence times vector - :type state_residence_times: numpy.array - :param state_transition_matrix: the transitions count matrix - :type state_transition_matrix: numpy.ndArray - :_cim: the actual cim of the node - """ - def __init__(self, state_residence_times: np.array, state_transition_matrix: np.array): - """Constructor Method - """ - self._state_residence_times = state_residence_times - self._state_transition_matrix = state_transition_matrix - self._cim = self.state_transition_matrix.astype(np.float64) - - def compute_cim_coefficients(self): - """Compute the coefficients of the matrix _cim by using the following equality q_xx' = M[x, x'] / T[x]. - The class member ``_cim`` will contain the computed cim - """ - np.fill_diagonal(self._cim, self._cim.diagonal() * -1) - self._cim = ((self._cim.T + 1) / (self._state_residence_times + 1)).T - - @property - def state_residence_times(self): - return self._state_residence_times - - @property - def state_transition_matrix(self): - return self._state_transition_matrix - - @property - def cim(self): - return self._cim - - def __repr__(self): - return 'CIM:\n' + str(self.cim) - diff --git a/main_package/classes/structure_graph/network_graph.py.bak b/main_package/classes/structure_graph/network_graph.py.bak deleted file mode 100644 index b1ced85..0000000 --- a/main_package/classes/structure_graph/network_graph.py.bak +++ /dev/null @@ -1,285 +0,0 @@ - -import typing - -import networkx as nx -import numpy as np - -from .structure import Structure - - -class NetworkGraph(object): - """Abstracts the infos contained in the Structure class in the form of a directed graph. - Has the task of creating all the necessary filtering and indexing structures for parameters estimation - - :param graph_struct: the ``Structure`` object from which infos about the net will be extracted - :type graph_struct: Structure - :_graph: directed graph - :_aggregated_info_about_nodes_parents: a structure that contains all the necessary infos - about every parents of the node of which all the indexing and filtering structures will be constructed. - :_time_scalar_indexing_structure: the indexing structure for state res time estimation - :_transition_scalar_indexing_structure: the indexing structure for transition computation - :_time_filtering: the columns filtering structure used in the computation of the state res times - :_transition_filtering: the columns filtering structure used in the computation of the transition - from one state to another - :_p_combs_structure: all the possible parents states combination for the node of interest - """ - - def __init__(self, graph_struct: Structure): - """Constructor Method - """ - self._graph_struct = graph_struct - self._graph = nx.DiGraph() - self._aggregated_info_about_nodes_parents = None - self._time_scalar_indexing_structure = None - self._transition_scalar_indexing_structure = None - self._time_filtering = None - self._transition_filtering = None - self._p_combs_structure = None - - def init_graph(self): - self.add_nodes(self._nodes_labels) - self.add_edges(self.graph_struct.edges) - self.aggregated_info_about_nodes_parents = self.get_ord_set_of_par_of_all_nodes() - self._fancy_indexing = self.build_fancy_indexing_structure(0) - self.build_scalar_indexing_structures() - self.build_time_columns_filtering_structure() - self.build_transition_columns_filtering_structure() - self._p_combs_structure = self.build_p_combs_structure() - - def fast_init(self, node_id: str) -> None: - """Initializes all the necessary structures for parameters estimation of the node identified by the label - node_id - - :param node_id: the label of the node - :type node_id: string - """ - self.add_nodes(self._graph_struct.nodes_labels) - self.add_edges(self._graph_struct.edges) - self._aggregated_info_about_nodes_parents = self.get_ordered_by_indx_set_of_parents(node_id) - p_indxs = self._aggregated_info_about_nodes_parents[1] - p_vals = self._aggregated_info_about_nodes_parents[2] - node_states = self.get_states_number(node_id) - node_indx = self.get_node_indx(node_id) - cols_number = self._graph_struct.total_variables_number - self._time_scalar_indexing_structure = NetworkGraph.\ - build_time_scalar_indexing_structure_for_a_node(node_states, p_vals) - self._transition_scalar_indexing_structure = NetworkGraph.\ - build_transition_scalar_indexing_structure_for_a_node(node_states, p_vals) - self._time_filtering = NetworkGraph.build_time_columns_filtering_for_a_node(node_indx, p_indxs) - self._transition_filtering = NetworkGraph.build_transition_filtering_for_a_node(node_indx, p_indxs, cols_number) - self._p_combs_structure = NetworkGraph.build_p_comb_structure_for_a_node(p_vals) - - def add_nodes(self, list_of_nodes: typing.List) -> None: - """Adds the nodes to the ``_graph`` contained in the list of nodes ``list_of_nodes``. - Sets all the properties that identify a nodes (index, positional index, cardinality) - - :param list_of_nodes: the nodes to add to ``_graph`` - :type list_of_nodes: List - """ - nodes_indxs = self._graph_struct.nodes_indexes - nodes_vals = self._graph_struct.nodes_values - pos = 0 - for id, node_indx, node_val in zip(list_of_nodes, nodes_indxs, nodes_vals): - self._graph.add_node(id, indx=node_indx, val=node_val, pos_indx=pos) - pos += 1 - - def has_edge(self,edge:tuple)-> bool: - """ - Check if the graph contains a specific edge - - Parameters: - edge: a tuple that rappresents the edge - Returns: - bool - """ - return self.graph.has_edge(edge[0],edge[1]) - - def add_edges(self, list_of_edges: typing.List) -> None: - """Add the edges to the ``_graph`` contained in the list ``list_of_edges``. - - :param list_of_edges: the list containing of tuples containing the edges - :type list_of_edges: List - """ - self._graph.add_edges_from(list_of_edges) - - def remove_node(self, node_id: str) -> None: - """Remove the node ``node_id`` from all the class members. - Initialize all the filtering/indexing structures. - """ - self._graph.remove_node(node_id) - self._graph_struct.remove_node(node_id) - self.clear_indexing_filtering_structures() - - def clear_indexing_filtering_structures(self) -> None: - """Initialize all the filtering/indexing structures. - """ - self._aggregated_info_about_nodes_parents = None - self._time_scalar_indexing_structure = None - self._transition_scalar_indexing_structure = None - self._time_filtering = None - self._transition_filtering = None - self._p_combs_structure = None - - def get_ordered_by_indx_set_of_parents(self, node: str) -> typing.Tuple: - """Builds the aggregated structure that holds all the infos relative to the parent set of the node, namely - (parents_labels, parents_indexes, parents_cardinalities). - - :param node: the label of the node - :type node: string - :return: a tuple containing all the parent set infos - :rtype: Tuple - """ - parents = self.get_parents_by_id(node) - nodes = self._graph_struct.nodes_labels - d = {v: i for i, v in enumerate(nodes)} - sorted_parents = sorted(parents, key=lambda v: d[v]) - get_node_indx = self.get_node_indx - p_indxes = [get_node_indx(node) for node in sorted_parents] - p_values = [self.get_states_number(node) for node in sorted_parents] - return sorted_parents, p_indxes, p_values - - @staticmethod - def build_time_scalar_indexing_structure_for_a_node(node_states: int, - parents_vals: typing.List) -> np.ndarray: - """Builds an indexing structure for the computation of state residence times values. - - :param node_states: the node cardinality - :type node_states: int - :param parents_vals: the caridinalites of the node's parents - :type parents_vals: List - :return: The time indexing structure - :rtype: numpy.ndArray - """ - T_vector = np.array([node_states]) - T_vector = np.append(T_vector, parents_vals) - T_vector = T_vector.cumprod().astype(np.int) - return T_vector - - @staticmethod - def build_transition_scalar_indexing_structure_for_a_node(node_states_number: int, parents_vals: typing.List) \ - -> np.ndarray: - """Builds an indexing structure for the computation of state transitions values. - - :param node_states_number: the node cardinality - :type node_states_number: int - :param parents_vals: the caridinalites of the node's parents - :type parents_vals: List - :return: The transition indexing structure - :rtype: numpy.ndArray - """ - M_vector = np.array([node_states_number, - node_states_number]) - M_vector = np.append(M_vector, parents_vals) - M_vector = M_vector.cumprod().astype(np.int) - return M_vector - - @staticmethod - def build_time_columns_filtering_for_a_node(node_indx: int, p_indxs: typing.List) -> np.ndarray: - """ - Builds the necessary structure to filter the desired columns indicated by ``node_indx`` and ``p_indxs`` - in the dataset. - This structute will be used in the computation of the state res times. - :param node_indx: the index of the node - :type node_indx: int - :param p_indxs: the indexes of the node's parents - :type p_indxs: List - :return: The filtering structure for times estimation - :rtype: numpy.ndArray - """ - return np.append(np.array([node_indx], dtype=np.int), p_indxs).astype(np.int) - - @staticmethod - def build_transition_filtering_for_a_node(node_indx: int, p_indxs: typing.List, nodes_number: int) \ - -> np.ndarray: - """Builds the necessary structure to filter the desired columns indicated by ``node_indx`` and ``p_indxs`` - in the dataset. - This structure will be used in the computation of the state transitions values. - :param node_indx: the index of the node - :type node_indx: int - :param p_indxs: the indexes of the node's parents - :type p_indxs: List - :param nodes_number: the total number of nodes in the dataset - :type nodes_number: int - :return: The filtering structure for transitions estimation - :rtype: numpy.ndArray - """ - return np.array([node_indx + nodes_number, node_indx, *p_indxs], dtype=np.int) - - @staticmethod - def build_p_comb_structure_for_a_node(parents_values: typing.List) -> np.ndarray: - """ - Builds the combinatorial structure that contains the combinations of all the values contained in - ``parents_values``. - - :param parents_values: the cardinalities of the nodes - :type parents_values: List - :return: A numpy matrix containing a grid of the combinations - :rtype: numpy.ndArray - """ - tmp = [] - for val in parents_values: - tmp.append([x for x in range(val)]) - if len(parents_values) > 0: - parents_comb = np.array(np.meshgrid(*tmp)).T.reshape(-1, len(parents_values)) - if len(parents_values) > 1: - tmp_comb = parents_comb[:, 1].copy() - parents_comb[:, 1] = parents_comb[:, 0].copy() - parents_comb[:, 0] = tmp_comb - else: - parents_comb = np.array([[]], dtype=np.int) - return parents_comb - - def get_parents_by_id(self, node_id) -> typing.List: - """Returns a list of labels of the parents of the node ``node_id`` - - :param node_id: the node label - :type node_id: string - :return: a List of labels of the parents - :rtype: List - """ - return list(self._graph.predecessors(node_id)) - - def get_states_number(self, node_id) -> int: - return self._graph.nodes[node_id]['val'] - - def get_node_indx(self, node_id) -> int: - return nx.get_node_attributes(self._graph, 'indx')[node_id] - - def get_positional_node_indx(self, node_id) -> int: - return self._graph.nodes[node_id]['pos_indx'] - - @property - def nodes(self) -> typing.List: - return self._graph_struct.nodes_labels - - @property - def edges(self) -> typing.List: - return list(self._graph.edges) - - @property - def nodes_indexes(self) -> np.ndarray: - return self._graph_struct.nodes_indexes - - @property - def nodes_values(self) -> np.ndarray: - return self._graph_struct.nodes_values - - @property - def time_scalar_indexing_strucure(self) -> np.ndarray: - return self._time_scalar_indexing_structure - - @property - def time_filtering(self) -> np.ndarray: - return self._time_filtering - - @property - def transition_scalar_indexing_structure(self) -> np.ndarray: - return self._transition_scalar_indexing_structure - - @property - def transition_filtering(self) -> np.ndarray: - return self._transition_filtering - - @property - def p_combs(self) -> np.ndarray: - return self._p_combs_structure \ No newline at end of file diff --git a/main_package/classes/structure_graph/sample_path.py.bak b/main_package/classes/structure_graph/sample_path.py.bak deleted file mode 100644 index 4162b80..0000000 --- a/main_package/classes/structure_graph/sample_path.py.bak +++ /dev/null @@ -1,95 +0,0 @@ -import sys -sys.path.append('../') - - -import numpy as np -import pandas as pd - -import .abstract_sample_path as asam -import ..utility.json_importer as imp -from .structure import Structure -from .trajectory import Trajectory -import ..utility.abstract_importer as ai - - - -class SamplePath(object): - """Aggregates all the informations about the trajectories, the real structure of the sampled net and variables - cardinalites. Has the task of creating the objects ``Trajectory`` and ``Structure`` that will - contain the mentioned data. - - :param importer: the Importer object which contains the imported and processed data - :type importer: AbstractImporter - :_trajectories: the ``Trajectory`` object that will contain all the concatenated trajectories - :_structure: the ``Structure`` Object that will contain all the structural infos about the net - :_total_variables_count: the number of variables in the net - """ - def __init__(self, importer: ai.AbstractImporter): - """Constructor Method - """ - self._importer = importer - if self._importer._df_variables is None or self._importer._concatenated_samples is None: - raise RuntimeError('The importer object has to contain the all processed data!') - if self._importer._df_variables.empty: - raise RuntimeError('The importer object has to contain the all processed data!') - if isinstance(self._importer._concatenated_samples, pd.DataFrame): - if self._importer._concatenated_samples.empty: - raise RuntimeError('The importer object has to contain the all processed data!') - if isinstance(self._importer._concatenated_samples, np.ndarray): - if self._importer._concatenated_samples.size == 0: - raise RuntimeError('The importer object has to contain the all processed data!') - self._trajectories = None - self._structure = None - self._total_variables_count = None - - def build_trajectories(self) -> None: - """Builds the Trajectory object that will contain all the trajectories. - Clears all the unused dataframes in ``_importer`` Object - """ - self._trajectories = \ - Trajectory(self._importer.build_list_of_samples_array(self._importer.concatenated_samples), - len(self._importer.sorter) + 1) - self._importer.clear_concatenated_frame() - - def build_structure(self) -> None: - """ - Builds the ``Structure`` object that aggregates all the infos about the net. - """ - if self._importer.sorter != self._importer.variables.iloc[:, 0].to_list(): - raise RuntimeError("The Dataset columns order have to match the order of labels in the variables Frame!") - - self._total_variables_count = len(self._importer.sorter) - labels = self._importer.variables.iloc[:, 0].to_list() - indxs = self._importer.variables.index.to_numpy() - vals = self._importer.variables.iloc[:, 1].to_numpy() - if self._importer.structure is None or self._importer.structure.empty: - edges = [] - else: - edges = list(self._importer.structure.to_records(index=False)) - self._structure = Structure(labels, indxs, vals, edges, - self._total_variables_count) - - def clear_memory(self): - self._importer._raw_data = [] - - @property - def trajectories(self) -> Trajectory: - return self._trajectories - - @property - def structure(self) -> Structure: - return self._structure - - @property - def total_variables_count(self) -> int: - return self._total_variables_count - - @property - def has_prior_net_structure(self) -> bool: - return bool(self._structure.edges) - - - - - - diff --git a/main_package/classes/structure_graph/set_of_cims.py.bak b/main_package/classes/structure_graph/set_of_cims.py.bak deleted file mode 100644 index 62d2365..0000000 --- a/main_package/classes/structure_graph/set_of_cims.py.bak +++ /dev/null @@ -1,98 +0,0 @@ -import sys -sys.path.append('../') - -import typing - -import numpy as np - -import structure_graph.conditional_intensity_matrix as cim - - -class SetOfCims(object): - """Aggregates all the CIMS of the node identified by the label _node_id. - - :param node_id: the node label - :type node_ind: string - :param parents_states_number: the cardinalities of the parents - :type parents_states_number: List - :param node_states_number: the caridinality of the node - :type node_states_number: int - :param p_combs: the p_comb structure bound to this node - :type p_combs: numpy.ndArray - :_state_residence_time: matrix containing all the state residence time vectors for the node - :_transition_matrices: matrix containing all the transition matrices for the node - :_actual_cims: the cims of the node - """ - - def __init__(self, node_id: str, parents_states_number: typing.List, node_states_number: int, p_combs: np.ndarray): - """Constructor Method - """ - self._node_id = node_id - self._parents_states_number = parents_states_number - self._node_states_number = node_states_number - self._actual_cims = [] - self._state_residence_times = None - self._transition_matrices = None - self._p_combs = p_combs - self.build_times_and_transitions_structures() - - def build_times_and_transitions_structures(self) -> None: - """Initializes at the correct dimensions the state residence times matrix and the state transition matrices. - """ - if not self._parents_states_number: - self._state_residence_times = np.zeros((1, self._node_states_number), dtype=np.float) - self._transition_matrices = np.zeros((1, self._node_states_number, self._node_states_number), dtype=np.int) - else: - self._state_residence_times = \ - np.zeros((np.prod(self._parents_states_number), self._node_states_number), dtype=np.float) - self._transition_matrices = np.zeros([np.prod(self._parents_states_number), self._node_states_number, - self._node_states_number], dtype=np.int) - - def build_cims(self, state_res_times: np.ndarray, transition_matrices: np.ndarray) -> None: - """Build the ``ConditionalIntensityMatrix`` objects given the state residence times and transitions matrices. - Compute the cim coefficients.The class member ``_actual_cims`` will contain the computed cims. - - :param state_res_times: the state residence times matrix - :type state_res_times: numpy.ndArray - :param transition_matrices: the transition matrices - :type transition_matrices: numpy.ndArray - """ - for state_res_time_vector, transition_matrix in zip(state_res_times, transition_matrices): - cim_to_add = cim.ConditionalIntensityMatrix(state_res_time_vector, transition_matrix) - cim_to_add.compute_cim_coefficients() - self._actual_cims.append(cim_to_add) - self._actual_cims = np.array(self._actual_cims) - self._transition_matrices = None - self._state_residence_times = None - - def filter_cims_with_mask(self, mask_arr: np.ndarray, comb: typing.List) -> np.ndarray: - """Filter the cims contained in the array ``_actual_cims`` given the boolean mask ``mask_arr`` and the index - ``comb``. - - :param mask_arr: the boolean mask that indicates which parent to consider - :type mask_arr: numpy.array - :param comb: the state/s of the filtered parents - :type comb: numpy.array - :return: Array of ``ConditionalIntensityMatrix`` objects - :rtype: numpy.array - """ - if mask_arr.size <= 1: - return self._actual_cims - else: - flat_indxs = np.argwhere(np.all(self._p_combs[:, mask_arr] == comb, axis=1)).ravel() - return self._actual_cims[flat_indxs] - - @property - def actual_cims(self) -> np.ndarray: - return self._actual_cims - - @property - def p_combs(self) -> np.ndarray: - return self._p_combs - - def get_cims_number(self): - return len(self._actual_cims) - - - - diff --git a/main_package/classes/structure_graph/sets_of_cims_container.py b/main_package/classes/structure_graph/sets_of_cims_container.py deleted file mode 100644 index 6fa6834..0000000 --- a/main_package/classes/structure_graph/sets_of_cims_container.py +++ /dev/null @@ -1,28 +0,0 @@ -import sys -sys.path.append('../') - -import structure_graph.set_of_cims as socim - - -class SetsOfCimsContainer: - """ - Aggrega un insieme di oggetti SetOfCims - """ - def __init__(self, list_of_keys, states_number_per_node, list_of_parents_states_number, p_combs_list): - self.sets_of_cims = None - self.init_cims_structure(list_of_keys, states_number_per_node, list_of_parents_states_number, p_combs_list) - #self.states_per_variable = states_number - - def init_cims_structure(self, keys, states_number_per_node, list_of_parents_states_number, p_combs_list): - """for indx, key in enumerate(keys): - self.sets_of_cims.append( - socim.SetOfCims(key, list_of_parents_states_number[indx], states_number_per_node[indx]))""" - self.sets_of_cims = [socim.SetOfCims(pair[1], list_of_parents_states_number[pair[0]], states_number_per_node[pair[0]], p_combs_list[pair[0]]) - for pair in enumerate(keys)] - - def get_set_of_cims(self, node_indx): - return self.sets_of_cims[node_indx] - - def get_cims_of_node(self, node_indx, cim_indx): - return self.sets_of_cims[node_indx].get_cim(cim_indx) - diff --git a/main_package/classes/structure_graph/structure.py.bak b/main_package/classes/structure_graph/structure.py.bak deleted file mode 100644 index 0c74b60..0000000 --- a/main_package/classes/structure_graph/structure.py.bak +++ /dev/null @@ -1,128 +0,0 @@ -import sys -sys.path.append('../') - -import typing as ty - -import numpy as np - - -class Structure(object): - """Contains all the infos about the network structure(nodes labels, nodes caridinalites, edges, indexes) - - :param nodes_labels_list: the symbolic names of the variables - :type nodes_labels_list: List - :param nodes_indexes_arr: the indexes of the nodes - :type nodes_indexes_arr: numpy.ndArray - :param nodes_vals_arr: the cardinalites of the nodes - :type nodes_vals_arr: numpy.ndArray - :param edges_list: the edges of the network - :type edges_list: List - :param total_variables_number: the total number of variables in the dataset - :type total_variables_number: int - """ - - def __init__(self, nodes_labels_list: ty.List, nodes_indexes_arr: np.ndarray, nodes_vals_arr: np.ndarray, - edges_list: ty.List, total_variables_number: int): - """Constructor Method - """ - self._nodes_labels_list = nodes_labels_list - self._nodes_indexes_arr = nodes_indexes_arr - self._nodes_vals_arr = nodes_vals_arr - self._edges_list = edges_list - self._total_variables_number = total_variables_number - - def remove_node(self, node_id: str) -> None: - """Remove the node ``node_id`` from all the class members. - The class member ``_total_variables_number`` since it refers to the total number of variables in the dataset. - """ - node_positional_indx = self._nodes_labels_list.index(node_id) - del self._nodes_labels_list[node_positional_indx] - self._nodes_indexes_arr = np.delete(self._nodes_indexes_arr, node_positional_indx) - self._nodes_vals_arr = np.delete(self._nodes_vals_arr, node_positional_indx) - self._edges_list = [(from_node, to_node) for (from_node, to_node) in self._edges_list if (from_node != node_id - and to_node != node_id)] - - @property - def edges(self) -> ty.List: - return self._edges_list - - @property - def nodes_labels(self) -> ty.List: - return self._nodes_labels_list - - @property - def nodes_indexes(self) -> np.ndarray: - return self._nodes_indexes_arr - - @property - def nodes_values(self) -> np.ndarray: - return self._nodes_vals_arr - - @property - def total_variables_number(self) -> int: - return self._total_variables_number - - def get_node_id(self, node_indx: int) -> str: - """ - Given the ``node_index`` returns the node label. - - :param node_indx: the node index - :type node_indx: int - :return: the node label - :rtype: string - """ - return self._nodes_labels_list[node_indx] - - def clean_structure_edges(self): - self._edges_list = list() - - def add_edge(self,edge: tuple): - self._edges_list.append(tuple) - print(self._edges_list) - - def remove_edge(self,edge: tuple): - self._edges_list.remove(tuple) - - def contains_edge(self,edge:tuple) -> bool: - return edge in self._edges_list - - def get_node_indx(self, node_id: str) -> int: - """ - Given the ``node_index`` returns the node label. - - :param node_id: the node label - :type node_id: string - :return: the node index - :rtype: int - """ - pos_indx = self._nodes_labels_list.index(node_id) - return self._nodes_indexes_arr[pos_indx] - - def get_positional_node_indx(self, node_id: str) -> int: - return self._nodes_labels_list.index(node_id) - - def get_states_number(self, node: str) -> int: - """Given the node label ``node`` returns the cardinality of the node. - - :param node: the node label - :type node: string - :return: the node cardinality - :rtype: int - """ - pos_indx = self._nodes_labels_list.index(node) - return self._nodes_vals_arr[pos_indx] - - def __repr__(self): - return "Variables:\n" + str(self._nodes_labels_list) +"\nValues:\n"+ str(self._nodes_vals_arr) +\ - "\nEdges: \n" + str(self._edges_list) - - def __eq__(self, other): - """Overrides the default implementation""" - if isinstance(other, Structure): - return set(self._nodes_labels_list) == set(other._nodes_labels_list) and \ - np.array_equal(self._nodes_vals_arr, other._nodes_vals_arr) and \ - np.array_equal(self._nodes_indexes_arr, other._nodes_indexes_arr) and \ - self._edges_list == other._edges_list - - return False - diff --git a/main_package/classes/utility/decorators.py b/main_package/classes/utility/decorators.py deleted file mode 100644 index 6868307..0000000 --- a/main_package/classes/utility/decorators.py +++ /dev/null @@ -1,28 +0,0 @@ -from functools import wraps -from time import time - -def timing(f): - @wraps(f) - def wrap(*args, **kw): - ts = time() - result = f(*args, **kw) - te = time() - print (f"{f.__name__} args:[{args},{kw}] took: {te-ts} sec") - - return result - return wrap - - -def timing_write(f): - @wraps(f) - def wrap(*args, **kw): - ts = time() - result = f(*args, **kw) - te = time() - print (f"{f.__name__} args:[{args},{kw}] took: {te-ts} sec") - - with open("../results/results.csv", 'a+') as fi: - fi.write(f"\n{round(te-ts,3)},") - - return result - return wrap \ No newline at end of file diff --git a/main_package/tests/results/results copy.csv b/main_package/tests/results/results copy.csv deleted file mode 100644 index 4a83269..0000000 --- a/main_package/tests/results/results copy.csv +++ /dev/null @@ -1,1729 +0,0 @@ -Time,Type,Variables,Density_Network,Cardinality,Index,F1,Precision,Recall -89.185,1,15,0.1,3,0,0.88,0.786,1.0 -96.358,1,15,0.1,3,1,0.939,0.885,1.0 -83.178,1,15,0.1,3,2,0.954,0.913,1.0 -70.18,0,15,0.1,3,0,1.0,1.0,1.0 -77.368,0,15,0.1,3,1,1.0,1.0,1.0 -76.239,0,15,0.1,3,2,1.0,1.0,1.0 -286.024,1,20,0.1,3,0,0.967,0.936,1.0 -285.421,1,20,0.1,3,1,0.98,0.961,1.0 -274.174,1,20,0.1,3,2,0.945,0.896,1.0 -232.594,0,20,0.1,3,0,1.0,1.0,1.0 -224.365,0,20,0.1,3,1,1.0,1.0,1.0 -229.797,0,20,0.1,3,2,0.988,1.0,0.977 -18.538,1,10,0.1,3,0,0.941,0.889,1.0 -20.889,1,10,0.1,3,1,1.0,1.0,1.0 -21.828,1,10,0.1,3,2,0.909,0.833,1.0 -24.52,0,10,0.1,3,0,1.0,1.0,1.0 -22.606,0,10,0.1,3,1,1.0,1.0,1.0 -27.887,0,10,0.1,3,2,1.0,1.0,1.0 -4.285,1,6,0.1,3,0,0.923,0.857,1.0 -3.306,1,6,0.1,3,1,1.0,1.0,1.0 -3.262,1,6,0.1,3,2,1.0,1.0,1.0 -4.285,1,6,0.1,3,3,0.857,0.75,1.0 -4.583,1,6,0.1,3,4,1.0,1.0,1.0 -3.21,1,6,0.1,3,5,1.0,1.0,1.0 -3.262,1,6,0.1,3,6,0.8,0.667,1.0 -4.03,1,6,0.1,3,7,0.909,0.833,1.0 -3.195,1,6,0.1,3,8,1.0,1.0,1.0 -3.52,1,6,0.1,3,9,0.889,0.8,1.0 -9.183,0,6,0.1,3,0,1.0,1.0,1.0 -8.894,0,6,0.1,3,1,1.0,1.0,1.0 -8.882,0,6,0.1,3,2,1.0,1.0,1.0 -8.971,0,6,0.1,3,3,1.0,1.0,1.0 -9.391,0,6,0.1,3,4,1.0,1.0,1.0 -9.114,0,6,0.1,3,5,1.0,1.0,1.0 -8.439,0,6,0.1,3,6,1.0,1.0,1.0 -9.54,0,6,0.1,3,7,1.0,1.0,1.0 -9.043,0,6,0.1,3,8,1.0,1.0,1.0 -9.744,0,6,0.1,3,9,1.0,1.0,1.0 -1.921,1,5,0.1,3,0,0.889,0.8,1.0 -1.567,1,5,0.1,3,1,1.0,1.0,1.0 -2.0,1,5,0.1,3,2,1.0,1.0,1.0 -2.105,1,5,0.1,3,3,0.889,0.8,1.0 -2.264,1,5,0.1,3,4,1.0,1.0,1.0 -2.317,1,5,0.1,3,5,0.769,0.625,1.0 -2.244,1,5,0.1,3,6,0.727,0.571,1.0 -1.998,1,5,0.1,3,7,0.889,0.8,1.0 -1.718,1,5,0.1,3,8,1.0,1.0,1.0 -2.387,1,5,0.1,3,9,1.0,1.0,1.0 -7.091,0,5,0.1,3,0,1.0,1.0,1.0 -6.221,0,5,0.1,3,1,1.0,1.0,1.0 -6.945,0,5,0.1,3,2,1.0,1.0,1.0 -7.138,0,5,0.1,3,3,1.0,1.0,1.0 -6.903,0,5,0.1,3,4,1.0,1.0,1.0 -6.972,0,5,0.1,3,5,1.0,1.0,1.0 -7.052,0,5,0.1,3,6,1.0,1.0,1.0 -6.911,0,5,0.1,3,7,1.0,1.0,1.0 -6.843,0,5,0.1,3,8,1.0,1.0,1.0 -8.103,0,5,0.1,3,9,1.0,1.0,1.0 -5.421,0,4,0.1,3,0,1.0,1.0,1.0 -5.777,0,4,0.1,3,1,1.0,1.0,1.0 -5.247,0,4,0.1,3,2,1.0,1.0,1.0 -5.308,0,4,0.1,3,3,1.0,1.0,1.0 -5.678,0,4,0.1,3,4,1.0,1.0,1.0 -5.654,0,4,0.1,3,5,1.0,1.0,1.0 -5.263,0,4,0.1,3,6,1.0,1.0,1.0 -5.632,0,4,0.1,3,7,1.0,1.0,1.0 -5.377,0,4,0.1,3,8,1.0,1.0,1.0 -5.509,0,4,0.1,3,9,1.0,1.0,1.0 -1.269,1,4,0.1,3,0,0.857,0.75,1.0 -0.866,1,4,0.1,3,1,0.667,0.5,1.0 -0.916,1,4,0.1,3,2,0.857,0.75,1.0 -0.96,1,4,0.1,3,3,1.0,1.0,1.0 -0.855,1,4,0.1,3,4,1.0,1.0,1.0 -1.211,1,4,0.1,3,5,0.75,0.6,1.0 -0.89,1,4,0.1,3,6,1.0,1.0,1.0 -0.932,1,4,0.1,3,7,1.0,1.0,1.0 -0.711,1,4,0.1,3,8,0.8,0.667,1.0 -0.841,1,4,0.1,3,9,1.0,1.0,1.0 -0.318,1,3,0.1,3,0,1.0,1.0,1.0 -0.327,1,3,0.1,3,1,1.0,1.0,1.0 -0.426,1,3,0.1,3,2,1.0,1.0,1.0 -0.358,1,3,0.1,3,3,0.8,0.667,1.0 -0.316,1,3,0.1,3,4,1.0,1.0,1.0 -0.366,1,3,0.1,3,5,1.0,1.0,1.0 -0.343,1,3,0.1,3,6,0.667,0.5,1.0 -0.348,1,3,0.1,3,7,0.8,0.667,1.0 -0.353,1,3,0.1,3,8,0.8,0.667,1.0 -0.343,1,3,0.1,3,9,1.0,1.0,1.0 -3.851,0,3,0.1,3,0,1.0,1.0,1.0 -4.047,0,3,0.1,3,1,1.0,1.0,1.0 -4.129,0,3,0.1,3,2,1.0,1.0,1.0 -4.26,0,3,0.1,3,3,1.0,1.0,1.0 -4.134,0,3,0.1,3,4,1.0,1.0,1.0 -4.353,0,3,0.1,3,5,1.0,1.0,1.0 -4.904,0,3,0.1,3,6,1.0,1.0,1.0 -4.892,0,3,0.1,3,7,1.0,1.0,1.0 -4.609,0,3,0.1,3,8,1.0,1.0,1.0 -4.58,0,3,0.1,3,9,1.0,1.0,1.0 -0.318,1,3,0.2,3,0,1.0,1.0,1.0 -0.41,1,3,0.2,3,1,1.0,1.0,1.0 -0.297,1,3,0.2,3,2,0.8,0.667,1.0 -0.399,1,3,0.2,3,3,1.0,1.0,1.0 -0.384,1,3,0.2,3,4,1.0,1.0,1.0 -0.355,1,3,0.2,3,5,1.0,1.0,1.0 -0.333,1,3,0.2,3,6,1.0,1.0,1.0 -0.32,1,3,0.2,3,7,1.0,1.0,1.0 -0.385,1,3,0.2,3,8,1.0,1.0,1.0 -0.394,1,3,0.2,3,9,0.857,0.75,1.0 -0.915,1,4,0.2,3,0,0.857,0.75,1.0 -1.087,1,4,0.2,3,1,1.0,1.0,1.0 -0.884,1,4,0.2,3,2,0.889,0.8,1.0 -0.95,1,4,0.2,3,3,1.0,1.0,1.0 -1.204,1,4,0.2,3,4,0.889,0.8,1.0 -0.689,1,4,0.2,3,5,1.0,1.0,1.0 -0.907,1,4,0.2,3,6,1.0,1.0,1.0 -0.884,1,4,0.2,3,7,1.0,1.0,1.0 -0.809,1,4,0.2,3,8,0.857,0.75,1.0 -0.685,1,4,0.2,3,9,1.0,1.0,1.0 -1.899,1,5,0.2,3,0,1.0,1.0,1.0 -2.177,1,5,0.2,3,1,1.0,1.0,1.0 -2.276,1,5,0.2,3,2,0.909,0.833,1.0 -3.268,1,5,0.2,3,3,0.941,0.889,1.0 -2.412,1,5,0.2,3,4,1.0,1.0,1.0 -2.218,1,5,0.2,3,5,1.0,1.0,1.0 -2.093,1,5,0.2,3,6,1.0,1.0,1.0 -1.542,1,5,0.2,3,7,0.75,0.6,1.0 -2.438,1,5,0.2,3,8,0.8,0.667,1.0 -2.503,1,5,0.2,3,9,0.909,0.833,1.0 -3.469,1,6,0.2,3,0,1.0,1.0,1.0 -3.45,1,6,0.2,3,1,0.923,0.857,1.0 -4.485,1,6,0.2,3,2,1.0,1.0,1.0 -2.936,1,6,0.2,3,3,1.0,1.0,1.0 -3.17,1,6,0.2,3,4,1.0,1.0,1.0 -3.033,1,6,0.2,3,5,0.727,0.571,1.0 -3.689,1,6,0.2,3,6,1.0,1.0,1.0 -5.302,1,6,0.2,3,7,1.0,1.0,1.0 -4.174,1,6,0.2,3,8,0.933,0.875,1.0 -3.694,1,6,0.2,3,9,1.0,1.0,1.0 -26.953,1,10,0.2,3,0,0.979,0.958,1.0 -26.558,1,10,0.2,3,1,1.0,1.0,1.0 -25.296,1,10,0.2,3,2,0.971,0.944,1.0 -161.151,1,15,0.2,3,0,1.0,1.0,1.0 -119.37,1,15,0.2,3,1,0.94,0.975,0.907 -141.138,1,15,0.2,3,2,1.0,1.0,1.0 -343.127,1,20,0.2,3,0,0.992,0.984,1.0 -369.146,1,20,0.2,3,1,0.993,1.0,0.986 -439.966,1,20,0.2,3,2,0.969,1.0,0.939 -3.64,0,3,0.2,3,0,1.0,1.0,1.0 -3.925,0,3,0.2,3,1,1.0,1.0,1.0 -3.719,0,3,0.2,3,2,1.0,1.0,1.0 -3.953,0,3,0.2,3,3,1.0,1.0,1.0 -3.883,0,3,0.2,3,4,1.0,1.0,1.0 -3.921,0,3,0.2,3,5,1.0,1.0,1.0 -3.84,0,3,0.2,3,6,1.0,1.0,1.0 -3.809,0,3,0.2,3,7,1.0,1.0,1.0 -3.959,0,3,0.2,3,8,1.0,1.0,1.0 -4.031,0,3,0.2,3,9,1.0,1.0,1.0 -4.679,0,4,0.2,3,0,1.0,1.0,1.0 -5.158,0,4,0.2,3,1,1.0,1.0,1.0 -5.014,0,4,0.2,3,2,1.0,1.0,1.0 -5.116,0,4,0.2,3,3,1.0,1.0,1.0 -5.265,0,4,0.2,3,4,1.0,1.0,1.0 -4.814,0,4,0.2,3,5,1.0,1.0,1.0 -4.996,0,4,0.2,3,6,1.0,1.0,1.0 -4.985,0,4,0.2,3,7,1.0,1.0,1.0 -4.949,0,4,0.2,3,8,1.0,1.0,1.0 -4.733,0,4,0.2,3,9,1.0,1.0,1.0 -6.817,0,5,0.2,3,0,1.0,1.0,1.0 -6.581,0,5,0.2,3,1,1.0,1.0,1.0 -6.608,0,5,0.2,3,2,1.0,1.0,1.0 -7.391,0,5,0.2,3,3,1.0,1.0,1.0 -7.426,0,5,0.2,3,4,1.0,1.0,1.0 -6.317,0,5,0.2,3,5,1.0,1.0,1.0 -6.338,0,5,0.2,3,6,1.0,1.0,1.0 -5.979,0,5,0.2,3,7,1.0,1.0,1.0 -6.797,0,5,0.2,3,8,1.0,1.0,1.0 -6.513,0,5,0.2,3,9,1.0,1.0,1.0 -8.725,0,6,0.2,3,0,1.0,1.0,1.0 -9.161,0,6,0.2,3,1,1.0,1.0,1.0 -9.094,0,6,0.2,3,2,1.0,1.0,1.0 -8.358,0,6,0.2,3,3,1.0,1.0,1.0 -8.459,0,6,0.2,3,4,1.0,1.0,1.0 -8.157,0,6,0.2,3,5,1.0,1.0,1.0 -9.043,0,6,0.2,3,6,1.0,1.0,1.0 -9.535,0,6,0.2,3,7,1.0,1.0,1.0 -8.837,0,6,0.2,3,8,1.0,1.0,1.0 -9.336,0,6,0.2,3,9,1.0,1.0,1.0 -28.779,0,10,0.2,3,0,1.0,1.0,1.0 -30.831,0,10,0.2,3,1,1.0,1.0,1.0 -28.31,0,10,0.2,3,2,1.0,1.0,1.0 -96.291,0,15,0.2,3,0,0.876,1.0,0.78 -95.839,0,15,0.2,3,1,0.838,1.0,0.721 -105.675,0,15,0.2,3,2,0.938,1.0,0.884 -234.928,0,20,0.2,3,0,0.95,1.0,0.905 -247.535,0,20,0.2,3,1,0.916,1.0,0.845 -241.698,0,20,0.2,3,2,0.82,1.0,0.695 -0.434,1,3,0.3,3,0,1.0,1.0,1.0 -0.466,1,3,0.3,3,1,1.0,1.0,1.0 -0.363,1,3,0.3,3,2,1.0,1.0,1.0 -0.41,1,3,0.3,3,3,1.0,1.0,1.0 -0.367,1,3,0.3,3,4,1.0,1.0,1.0 -0.453,1,3,0.3,3,5,0.857,0.75,1.0 -0.422,1,3,0.3,3,6,1.0,1.0,1.0 -0.32,1,3,0.3,3,7,1.0,1.0,1.0 -0.325,1,3,0.3,3,8,1.0,1.0,1.0 -0.368,1,3,0.3,3,9,1.0,1.0,1.0 -0.985,1,4,0.3,3,0,1.0,1.0,1.0 -0.974,1,4,0.3,3,1,1.0,1.0,1.0 -0.98,1,4,0.3,3,2,1.0,1.0,1.0 -1.709,1,4,0.3,3,3,1.0,1.0,1.0 -1.145,1,4,0.3,3,4,0.909,0.833,1.0 -0.825,1,4,0.3,3,5,1.0,1.0,1.0 -1.216,1,4,0.3,3,6,0.909,0.833,1.0 -0.994,1,4,0.3,3,7,1.0,1.0,1.0 -1.306,1,4,0.3,3,8,1.0,1.0,1.0 -1.227,1,4,0.3,3,9,1.0,1.0,1.0 -2.314,1,5,0.3,3,0,0.933,0.875,1.0 -2.307,1,5,0.3,3,1,1.0,1.0,1.0 -2.125,1,5,0.3,3,2,1.0,1.0,1.0 -2.773,1,5,0.3,3,3,0.889,0.8,1.0 -2.657,1,5,0.3,3,4,1.0,1.0,1.0 -2.896,1,5,0.3,3,5,0.941,0.889,1.0 -1.592,1,5,0.3,3,6,1.0,1.0,1.0 -2.394,1,5,0.3,3,7,0.923,0.857,1.0 -2.182,1,5,0.3,3,8,1.0,1.0,1.0 -3.725,1,5,0.3,3,9,0.889,0.8,1.0 -4.207,1,6,0.3,3,0,1.0,1.0,1.0 -5.426,1,6,0.3,3,1,0.952,0.909,1.0 -6.049,1,6,0.3,3,2,1.0,1.0,1.0 -3.973,1,6,0.3,3,3,0.933,0.875,1.0 -7.383,1,6,0.3,3,4,1.0,1.0,1.0 -4.478,1,6,0.3,3,5,0.952,0.909,1.0 -6.23,1,6,0.3,3,6,0.96,0.923,1.0 -4.86,1,6,0.3,3,7,0.957,0.917,1.0 -4.145,1,6,0.3,3,8,1.0,1.0,1.0 -4.398,1,6,0.3,3,9,0.8,0.667,1.0 -35.778,1,10,0.3,3,0,0.952,0.938,0.968 -34.75,1,10,0.3,3,1,0.969,0.939,1.0 -21.66,1,10,0.3,3,2,0.966,0.933,1.0 -1336.782,1,15,0.3,3,0,1.0,1.0,1.0 -153.441,1,15,0.3,3,1,0.959,1.0,0.922 -138.906,1,15,0.3,3,2,0.885,1.0,0.794 -483.147,1,20,0.3,3,0,0.92,1.0,0.851 -394.776,1,20,0.3,3,1,0.758,0.986,0.615 -486.95,1,20,0.3,3,2,0.777,0.988,0.64 -0.468,1,3,0.4,3,0,1.0,1.0,1.0 -0.299,1,3,0.4,3,1,0.8,0.667,1.0 -0.475,1,3,0.4,3,2,1.0,1.0,1.0 -0.432,1,3,0.4,3,3,0.889,0.8,1.0 -0.361,1,3,0.4,3,4,1.0,1.0,1.0 -0.316,1,3,0.4,3,5,0.8,0.667,1.0 -0.35,1,3,0.4,3,6,1.0,1.0,1.0 -0.309,1,3,0.4,3,7,1.0,1.0,1.0 -0.309,1,3,0.4,3,8,1.0,1.0,1.0 -0.417,1,3,0.4,3,9,1.0,1.0,1.0 -1.02,1,4,0.4,3,0,1.0,1.0,1.0 -1.45,1,4,0.4,3,1,0.933,0.875,1.0 -1.251,1,4,0.4,3,2,1.0,1.0,1.0 -1.189,1,4,0.4,3,3,1.0,1.0,1.0 -1.338,1,4,0.4,3,4,0.923,0.857,1.0 -1.128,1,4,0.4,3,5,1.0,1.0,1.0 -0.903,1,4,0.4,3,6,0.889,0.8,1.0 -1.013,1,4,0.4,3,7,0.889,0.8,1.0 -1.203,1,4,0.4,3,8,1.0,1.0,1.0 -1.263,1,4,0.4,3,9,0.8,0.667,1.0 -3.298,1,5,0.4,3,0,0.909,0.833,1.0 -2.563,1,5,0.4,3,1,1.0,1.0,1.0 -2.964,1,5,0.4,3,2,0.941,0.889,1.0 -2.236,1,5,0.4,3,3,0.923,0.857,1.0 -2.517,1,5,0.4,3,4,0.923,0.857,1.0 -3.293,1,5,0.4,3,5,0.941,0.889,1.0 -3.982,1,5,0.4,3,6,0.889,0.8,1.0 -3.11,1,5,0.4,3,7,1.0,1.0,1.0 -2.594,1,5,0.4,3,8,1.0,1.0,1.0 -3.682,1,5,0.4,3,9,0.952,0.909,1.0 -5.849,1,6,0.4,3,0,1.0,1.0,1.0 -6.763,1,6,0.4,3,1,0.929,0.867,1.0 -7.578,1,6,0.4,3,2,0.966,0.933,1.0 -4.927,1,6,0.4,3,3,0.857,0.75,1.0 -6.75,1,6,0.4,3,4,0.968,0.938,1.0 -5.433,1,6,0.4,3,5,1.0,1.0,1.0 -4.761,1,6,0.4,3,6,0.947,0.9,1.0 -6.659,1,6,0.4,3,7,0.963,0.929,1.0 -5.526,1,6,0.4,3,8,0.966,0.933,1.0 -4.485,1,6,0.4,3,9,0.947,0.9,1.0 -52.322,1,10,0.4,3,0,1.0,1.0,1.0 -42.89,1,10,0.4,3,1,0.932,0.971,0.895 -53.392,1,10,0.4,3,2,1.0,1.0,1.0 -255.384,1,15,0.4,3,0,0.863,0.985,0.767 -177.34,1,15,0.4,3,1,0.78,0.982,0.647 -221.834,1,15,0.4,3,2,0.958,1.0,0.92 -323.144,1,20,0.4,3,0,0.5,0.98,0.336 -417.004,1,20,0.4,3,1,0.635,1.0,0.465 -358.291,1,20,0.4,3,2,0.436,0.936,0.284 -4.228,0,3,0.3,3,0,1.0,1.0,1.0 -4.679,0,3,0.3,3,1,1.0,1.0,1.0 -4.582,0,3,0.3,3,2,1.0,1.0,1.0 -4.093,0,3,0.3,3,3,1.0,1.0,1.0 -3.755,0,3,0.3,3,4,1.0,1.0,1.0 -3.775,0,3,0.3,3,5,1.0,1.0,1.0 -3.747,0,3,0.3,3,6,1.0,1.0,1.0 -3.714,0,3,0.3,3,7,1.0,1.0,1.0 -3.783,0,3,0.3,3,8,1.0,1.0,1.0 -4.023,0,3,0.3,3,9,1.0,1.0,1.0 -4.831,0,4,0.3,3,0,1.0,1.0,1.0 -4.893,0,4,0.3,3,1,1.0,1.0,1.0 -4.892,0,4,0.3,3,2,1.0,1.0,1.0 -5.289,0,4,0.3,3,3,1.0,1.0,1.0 -5.529,0,4,0.3,3,4,1.0,1.0,1.0 -5.959,0,4,0.3,3,5,1.0,1.0,1.0 -5.57,0,4,0.3,3,6,1.0,1.0,1.0 -5.571,0,4,0.3,3,7,1.0,1.0,1.0 -5.249,0,4,0.3,3,8,1.0,1.0,1.0 -5.728,0,4,0.3,3,9,1.0,1.0,1.0 -6.842,0,5,0.3,3,0,1.0,1.0,1.0 -6.747,0,5,0.3,3,1,1.0,1.0,1.0 -6.873,0,5,0.3,3,2,1.0,1.0,1.0 -7.045,0,5,0.3,3,3,1.0,1.0,1.0 -7.885,0,5,0.3,3,4,1.0,1.0,1.0 -7.335,0,5,0.3,3,5,1.0,1.0,1.0 -7.019,0,5,0.3,3,6,1.0,1.0,1.0 -7.236,0,5,0.3,3,7,1.0,1.0,1.0 -7.869,0,5,0.3,3,8,1.0,1.0,1.0 -7.327,0,5,0.3,3,9,1.0,1.0,1.0 -10.222,0,6,0.3,3,0,1.0,1.0,1.0 -10.859,0,6,0.3,3,1,1.0,1.0,1.0 -10.408,0,6,0.3,3,2,1.0,1.0,1.0 -9.085,0,6,0.3,3,3,1.0,1.0,1.0 -9.771,0,6,0.3,3,4,1.0,1.0,1.0 -9.554,0,6,0.3,3,5,1.0,1.0,1.0 -10.01,0,6,0.3,3,6,1.0,1.0,1.0 -10.31,0,6,0.3,3,7,1.0,1.0,1.0 -9.55,0,6,0.3,3,8,1.0,1.0,1.0 -9.691,0,6,0.3,3,9,1.0,1.0,1.0 -33.645,0,10,0.3,3,0,0.893,1.0,0.806 -35.127,0,10,0.3,3,1,1.0,1.0,1.0 -26.593,0,10,0.3,3,2,1.0,1.0,1.0 -100.709,0,15,0.3,3,0,0.884,1.0,0.792 -108.355,0,15,0.3,3,1,0.887,1.0,0.797 -94.366,0,15,0.3,3,2,0.788,1.0,0.651 -271.388,0,20,0.3,3,0,0.712,1.0,0.553 -228.641,0,20,0.3,3,1,0.51,1.0,0.342 -217.456,0,20,0.3,3,2,0.438,1.0,0.28 -3.896,0,3,0.4,3,0,1.0,1.0,1.0 -3.748,0,3,0.4,3,1,1.0,1.0,1.0 -4.04,0,3,0.4,3,2,1.0,1.0,1.0 -3.987,0,3,0.4,3,3,1.0,1.0,1.0 -3.943,0,3,0.4,3,4,1.0,1.0,1.0 -3.986,0,3,0.4,3,5,1.0,1.0,1.0 -4.047,0,3,0.4,3,6,1.0,1.0,1.0 -4.014,0,3,0.4,3,7,1.0,1.0,1.0 -3.786,0,3,0.4,3,8,1.0,1.0,1.0 -4.12,0,3,0.4,3,9,1.0,1.0,1.0 -5.357,0,4,0.4,3,0,1.0,1.0,1.0 -5.275,0,4,0.4,3,1,1.0,1.0,1.0 -5.11,0,4,0.4,3,2,1.0,1.0,1.0 -5.222,0,4,0.4,3,3,1.0,1.0,1.0 -5.103,0,4,0.4,3,4,1.0,1.0,1.0 -5.235,0,4,0.4,3,5,1.0,1.0,1.0 -4.9,0,4,0.4,3,6,1.0,1.0,1.0 -4.561,0,4,0.4,3,7,1.0,1.0,1.0 -5.0,0,4,0.4,3,8,1.0,1.0,1.0 -5.178,0,4,0.4,3,9,1.0,1.0,1.0 -6.971,0,5,0.4,3,0,1.0,1.0,1.0 -6.964,0,5,0.4,3,1,1.0,1.0,1.0 -7.318,0,5,0.4,3,2,1.0,1.0,1.0 -6.14,0,5,0.4,3,3,1.0,1.0,1.0 -6.472,0,5,0.4,3,4,1.0,1.0,1.0 -6.793,0,5,0.4,3,5,1.0,1.0,1.0 -6.586,0,5,0.4,3,6,1.0,1.0,1.0 -6.891,0,5,0.4,3,7,1.0,1.0,1.0 -6.809,0,5,0.4,3,8,1.0,1.0,1.0 -6.926,0,5,0.4,3,9,1.0,1.0,1.0 -9.546,0,6,0.4,3,0,1.0,1.0,1.0 -9.71,0,6,0.4,3,1,1.0,1.0,1.0 -9.771,0,6,0.4,3,2,1.0,1.0,1.0 -8.987,0,6,0.4,3,3,1.0,1.0,1.0 -10.362,0,6,0.4,3,4,1.0,1.0,1.0 -9.806,0,6,0.4,3,5,1.0,1.0,1.0 -8.892,0,6,0.4,3,6,1.0,1.0,1.0 -9.96,0,6,0.4,3,7,1.0,1.0,1.0 -9.968,0,6,0.4,3,8,1.0,1.0,1.0 -9.02,0,6,0.4,3,9,1.0,1.0,1.0 -29.557,0,10,0.4,3,0,0.807,1.0,0.676 -33.077,0,10,0.4,3,1,0.899,1.0,0.816 -35.888,0,10,0.4,3,2,1.0,1.0,1.0 -83.804,0,15,0.4,3,0,0.45,1.0,0.291 -79.044,0,15,0.4,3,1,0.482,1.0,0.318 -93.742,0,15,0.4,3,2,0.729,1.0,0.573 -188.057,0,20,0.4,3,0,0.205,1.0,0.114 -185.315,0,20,0.4,3,1,0.236,1.0,0.134 -178.808,0,20,0.4,3,2,0.11,1.0,0.058 -0.217,1,3,0.1,2,0,1.0,1.0,1.0 -0.153,1,3,0.1,2,1,1.0,1.0,1.0 -0.186,1,3,0.1,2,2,1.0,1.0,1.0 -0.198,1,3,0.1,2,3,1.0,1.0,1.0 -0.137,1,3,0.1,2,4,1.0,1.0,1.0 -0.135,1,3,0.1,2,5,1.0,1.0,1.0 -0.137,1,3,0.1,2,6,1.0,1.0,1.0 -0.18,1,3,0.1,2,7,1.0,1.0,1.0 -0.152,1,3,0.1,2,8,1.0,1.0,1.0 -0.151,1,3,0.1,2,9,1.0,1.0,1.0 -0.325,1,4,0.1,2,0,1.0,1.0,1.0 -0.35,1,4,0.1,2,1,1.0,1.0,1.0 -0.346,1,4,0.1,2,2,1.0,1.0,1.0 -0.437,1,4,0.1,2,3,1.0,1.0,1.0 -0.409,1,4,0.1,2,4,1.0,1.0,1.0 -0.4,1,4,0.1,2,5,1.0,1.0,1.0 -0.49,1,4,0.1,2,6,1.0,1.0,1.0 -0.35,1,4,0.1,2,7,1.0,1.0,1.0 -0.455,1,4,0.1,2,8,1.0,1.0,1.0 -0.433,1,4,0.1,2,9,1.0,1.0,1.0 -0.656,1,5,0.1,2,0,1.0,1.0,1.0 -0.833,1,5,0.1,2,1,1.0,1.0,1.0 -1.292,1,5,0.1,2,2,1.0,1.0,1.0 -0.776,1,5,0.1,2,3,1.0,1.0,1.0 -1.099,1,5,0.1,2,4,1.0,1.0,1.0 -1.463,1,5,0.1,2,5,1.0,1.0,1.0 -0.946,1,5,0.1,2,6,1.0,1.0,1.0 -0.929,1,5,0.1,2,7,1.0,1.0,1.0 -0.892,1,5,0.1,2,8,1.0,1.0,1.0 -0.857,1,5,0.1,2,9,1.0,1.0,1.0 -1.577,1,6,0.1,2,0,0.889,1.0,0.8 -1.483,1,6,0.1,2,1,1.0,1.0,1.0 -1.563,1,6,0.1,2,2,1.0,1.0,1.0 -1.998,1,6,0.1,2,3,1.0,1.0,1.0 -1.799,1,6,0.1,2,4,1.0,1.0,1.0 -1.461,1,6,0.1,2,5,1.0,1.0,1.0 -1.972,1,6,0.1,2,6,1.0,1.0,1.0 -1.775,1,6,0.1,2,7,1.0,1.0,1.0 -1.498,1,6,0.1,2,8,1.0,1.0,1.0 -1.762,1,6,0.1,2,9,1.0,1.0,1.0 -12.238,1,10,0.1,2,0,1.0,1.0,1.0 -8.715,1,10,0.1,2,1,1.0,1.0,1.0 -9.8,1,10,0.1,2,2,1.0,1.0,1.0 -50.266,1,15,0.1,2,0,0.982,1.0,0.964 -35.118,1,15,0.1,2,1,1.0,1.0,1.0 -43.414,1,15,0.1,2,2,0.984,1.0,0.968 -115.608,1,20,0.1,2,0,1.0,1.0,1.0 -105.992,1,20,0.1,2,1,1.0,1.0,1.0 -105.024,1,20,0.1,2,2,1.0,1.0,1.0 -0.187,1,3,0.2,2,0,1.0,1.0,1.0 -0.184,1,3,0.2,2,1,1.0,1.0,1.0 -0.194,1,3,0.2,2,2,1.0,1.0,1.0 -0.198,1,3,0.2,2,3,1.0,1.0,1.0 -0.171,1,3,0.2,2,4,1.0,1.0,1.0 -0.137,1,3,0.2,2,5,1.0,1.0,1.0 -0.155,1,3,0.2,2,6,1.0,1.0,1.0 -0.187,1,3,0.2,2,7,1.0,1.0,1.0 -0.186,1,3,0.2,2,8,1.0,1.0,1.0 -0.2,1,3,0.2,2,9,1.0,1.0,1.0 -0.413,1,4,0.2,2,0,1.0,1.0,1.0 -0.375,1,4,0.2,2,1,1.0,1.0,1.0 -0.506,1,4,0.2,2,2,1.0,1.0,1.0 -0.413,1,4,0.2,2,3,1.0,1.0,1.0 -0.446,1,4,0.2,2,4,1.0,1.0,1.0 -0.48,1,4,0.2,2,5,1.0,1.0,1.0 -0.348,1,4,0.2,2,6,1.0,1.0,1.0 -0.365,1,4,0.2,2,7,1.0,1.0,1.0 -0.468,1,4,0.2,2,8,1.0,1.0,1.0 -0.516,1,4,0.2,2,9,1.0,1.0,1.0 -0.961,1,5,0.2,2,0,1.0,1.0,1.0 -1.085,1,5,0.2,2,1,1.0,1.0,1.0 -0.894,1,5,0.2,2,2,1.0,1.0,1.0 -1.024,1,5,0.2,2,3,1.0,1.0,1.0 -0.931,1,5,0.2,2,4,1.0,1.0,1.0 -1.093,1,5,0.2,2,5,1.0,1.0,1.0 -0.822,1,5,0.2,2,6,1.0,1.0,1.0 -0.885,1,5,0.2,2,7,1.0,1.0,1.0 -1.115,1,5,0.2,2,8,1.0,1.0,1.0 -0.761,1,5,0.2,2,9,1.0,1.0,1.0 -1.949,1,6,0.2,2,0,1.0,1.0,1.0 -1.572,1,6,0.2,2,1,1.0,1.0,1.0 -1.718,1,6,0.2,2,2,1.0,1.0,1.0 -1.679,1,6,0.2,2,3,1.0,1.0,1.0 -1.721,1,6,0.2,2,4,1.0,1.0,1.0 -1.635,1,6,0.2,2,5,1.0,1.0,1.0 -1.203,1,6,0.2,2,6,1.0,1.0,1.0 -1.927,1,6,0.2,2,7,1.0,1.0,1.0 -2.162,1,6,0.2,2,8,1.0,1.0,1.0 -1.746,1,6,0.2,2,9,1.0,1.0,1.0 -10.011,1,10,0.2,2,0,0.941,0.941,0.941 -11.99,1,10,0.2,2,1,1.0,1.0,1.0 -10.912,1,10,0.2,2,2,0.966,1.0,0.933 -54.015,1,15,0.2,2,0,0.987,1.0,0.974 -71.46,1,15,0.2,2,1,0.976,1.0,0.953 -71.038,1,15,0.2,2,2,0.979,1.0,0.958 -249.455,1,20,0.2,2,0,0.947,1.0,0.9 -205.531,1,20,0.2,2,1,0.984,1.0,0.969 -184.04,1,20,0.2,2,2,0.987,1.0,0.974 -0.188,1,3,0.3,2,0,1.0,1.0,1.0 -0.196,1,3,0.3,2,1,1.0,1.0,1.0 -0.201,1,3,0.3,2,2,1.0,1.0,1.0 -0.184,1,3,0.3,2,3,1.0,1.0,1.0 -0.196,1,3,0.3,2,4,1.0,1.0,1.0 -0.176,1,3,0.3,2,5,1.0,1.0,1.0 -0.214,1,3,0.3,2,6,1.0,1.0,1.0 -0.195,1,3,0.3,2,7,1.0,1.0,1.0 -0.172,1,3,0.3,2,8,1.0,1.0,1.0 -0.194,1,3,0.3,2,9,1.0,1.0,1.0 -0.456,1,4,0.3,2,0,1.0,1.0,1.0 -0.596,1,4,0.3,2,1,1.0,1.0,1.0 -0.681,1,4,0.3,2,2,1.0,1.0,1.0 -0.63,1,4,0.3,2,3,1.0,1.0,1.0 -0.528,1,4,0.3,2,4,1.0,1.0,1.0 -0.501,1,4,0.3,2,5,1.0,1.0,1.0 -0.527,1,4,0.3,2,6,1.0,1.0,1.0 -0.635,1,4,0.3,2,7,1.0,1.0,1.0 -0.564,1,4,0.3,2,8,1.0,1.0,1.0 -0.489,1,4,0.3,2,9,1.0,1.0,1.0 -1.142,1,5,0.3,2,0,1.0,1.0,1.0 -0.839,1,5,0.3,2,1,1.0,1.0,1.0 -0.725,1,5,0.3,2,2,1.0,1.0,1.0 -1.038,1,5,0.3,2,3,1.0,1.0,1.0 -1.384,1,5,0.3,2,4,1.0,1.0,1.0 -1.024,1,5,0.3,2,5,1.0,1.0,1.0 -0.701,1,5,0.3,2,6,1.0,1.0,1.0 -1.81,1,5,0.3,2,7,1.0,1.0,1.0 -1.75,1,5,0.3,2,8,1.0,1.0,1.0 -1.087,1,5,0.3,2,9,1.0,1.0,1.0 -1.639,1,6,0.3,2,0,1.0,1.0,1.0 -1.895,1,6,0.3,2,1,1.0,1.0,1.0 -2.144,1,6,0.3,2,2,1.0,1.0,1.0 -2.461,1,6,0.3,2,3,1.0,1.0,1.0 -1.734,1,6,0.3,2,4,0.941,1.0,0.889 -2.732,1,6,0.3,2,5,1.0,1.0,1.0 -1.464,1,6,0.3,2,6,1.0,1.0,1.0 -2.079,1,6,0.3,2,7,0.941,1.0,0.889 -1.765,1,6,0.3,2,8,1.0,1.0,1.0 -3.043,1,6,0.3,2,9,1.0,1.0,1.0 -13.001,1,10,0.3,2,0,1.0,1.0,1.0 -16.57,1,10,0.3,2,1,0.98,1.0,0.96 -15.009,1,10,0.3,2,2,0.98,1.0,0.96 -81.787,1,15,0.3,2,0,0.972,1.0,0.945 -77.374,1,15,0.3,2,1,0.963,1.0,0.929 -83.046,1,15,0.3,2,2,0.958,1.0,0.919 -372.13,1,20,0.3,2,0,0.913,1.0,0.84 -271.56,1,20,0.3,2,1,0.933,1.0,0.874 -246.234,1,20,0.3,2,2,0.884,1.0,0.793 -0.19,1,3,0.4,2,0,1.0,1.0,1.0 -0.19,1,3,0.4,2,1,1.0,1.0,1.0 -0.153,1,3,0.4,2,2,1.0,1.0,1.0 -0.222,1,3,0.4,2,3,1.0,1.0,1.0 -0.162,1,3,0.4,2,4,1.0,1.0,1.0 -0.23,1,3,0.4,2,5,1.0,1.0,1.0 -0.235,1,3,0.4,2,6,1.0,1.0,1.0 -0.221,1,3,0.4,2,7,1.0,1.0,1.0 -0.228,1,3,0.4,2,8,1.0,1.0,1.0 -0.206,1,3,0.4,2,9,1.0,1.0,1.0 -0.462,1,4,0.4,2,0,1.0,1.0,1.0 -0.646,1,4,0.4,2,1,1.0,1.0,1.0 -0.414,1,4,0.4,2,2,1.0,1.0,1.0 -0.674,1,4,0.4,2,3,1.0,1.0,1.0 -0.472,1,4,0.4,2,4,1.0,1.0,1.0 -0.622,1,4,0.4,2,5,0.923,0.857,1.0 -0.541,1,4,0.4,2,6,1.0,1.0,1.0 -0.495,1,4,0.4,2,7,1.0,1.0,1.0 -0.514,1,4,0.4,2,8,1.0,1.0,1.0 -0.728,1,4,0.4,2,9,1.0,1.0,1.0 -1.112,1,5,0.4,2,0,1.0,1.0,1.0 -1.929,1,5,0.4,2,1,1.0,1.0,1.0 -1.463,1,5,0.4,2,2,1.0,1.0,1.0 -1.328,1,5,0.4,2,3,1.0,1.0,1.0 -1.133,1,5,0.4,2,4,1.0,1.0,1.0 -1.17,1,5,0.4,2,5,1.0,1.0,1.0 -1.133,1,5,0.4,2,6,1.0,1.0,1.0 -1.158,1,5,0.4,2,7,1.0,1.0,1.0 -2.522,1,5,0.4,2,8,1.0,1.0,1.0 -1.004,1,5,0.4,2,9,1.0,1.0,1.0 -2.917,1,6,0.4,2,0,1.0,1.0,1.0 -2.933,1,6,0.4,2,1,1.0,1.0,1.0 -3.384,1,6,0.4,2,2,1.0,1.0,1.0 -2.534,1,6,0.4,2,3,1.0,1.0,1.0 -2.527,1,6,0.4,2,4,1.0,1.0,1.0 -2.017,1,6,0.4,2,5,1.0,1.0,1.0 -2.605,1,6,0.4,2,6,0.966,1.0,0.933 -2.7,1,6,0.4,2,7,1.0,1.0,1.0 -2.777,1,6,0.4,2,8,1.0,1.0,1.0 -2.13,1,6,0.4,2,9,1.0,1.0,1.0 -30.231,1,10,0.4,2,0,0.976,1.0,0.952 -12.204,1,10,0.4,2,1,0.98,1.0,0.96 -19.849,1,10,0.4,2,2,1.0,1.0,1.0 -127.966,1,15,0.4,2,0,0.94,1.0,0.886 -91.451,1,15,0.4,2,1,0.857,1.0,0.75 -123.172,1,15,0.4,2,2,0.923,1.0,0.857 -259.487,1,20,0.4,2,0,0.685,1.0,0.521 -373.08,1,20,0.4,2,1,0.727,1.0,0.571 -302.251,1,20,0.4,2,2,0.732,1.0,0.577 -3.914,0,3,0.1,2,0,1.0,1.0,1.0 -4.733,0,3,0.1,2,1,1.0,1.0,1.0 -4.274,0,3,0.1,2,2,1.0,1.0,1.0 -4.52,0,3,0.1,2,3,1.0,1.0,1.0 -4.1,0,3,0.1,2,4,1.0,1.0,1.0 -4.176,0,3,0.1,2,5,1.0,1.0,1.0 -4.2,0,3,0.1,2,6,1.0,1.0,1.0 -3.899,0,3,0.1,2,7,1.0,1.0,1.0 -4.445,0,3,0.1,2,8,1.0,1.0,1.0 -4.155,0,3,0.1,2,9,1.0,1.0,1.0 -4.596,0,4,0.1,2,0,1.0,1.0,1.0 -4.082,0,4,0.1,2,1,1.0,1.0,1.0 -4.643,0,4,0.1,2,2,1.0,1.0,1.0 -4.139,0,4,0.1,2,3,1.0,1.0,1.0 -4.442,0,4,0.1,2,4,1.0,1.0,1.0 -4.69,0,4,0.1,2,5,1.0,1.0,1.0 -4.912,0,4,0.1,2,6,1.0,1.0,1.0 -4.036,0,4,0.1,2,7,1.0,1.0,1.0 -4.485,0,4,0.1,2,8,1.0,1.0,1.0 -4.61,0,4,0.1,2,9,1.0,1.0,1.0 -4.644,0,5,0.1,2,0,1.0,1.0,1.0 -4.86,0,5,0.1,2,1,1.0,1.0,1.0 -5.355,0,5,0.1,2,2,1.0,1.0,1.0 -5.201,0,5,0.1,2,3,1.0,1.0,1.0 -5.101,0,5,0.1,2,4,1.0,1.0,1.0 -5.815,0,5,0.1,2,5,1.0,1.0,1.0 -5.946,0,5,0.1,2,6,1.0,1.0,1.0 -5.379,0,5,0.1,2,7,1.0,1.0,1.0 -5.101,0,5,0.1,2,8,1.0,1.0,1.0 -4.922,0,5,0.1,2,9,1.0,1.0,1.0 -6.291,0,6,0.1,2,0,0.889,1.0,0.8 -5.751,0,6,0.1,2,1,1.0,1.0,1.0 -5.491,0,6,0.1,2,2,1.0,1.0,1.0 -6.649,0,6,0.1,2,3,1.0,1.0,1.0 -6.203,0,6,0.1,2,4,1.0,1.0,1.0 -5.805,0,6,0.1,2,5,1.0,1.0,1.0 -6.65,0,6,0.1,2,6,1.0,1.0,1.0 -6.331,0,6,0.1,2,7,1.0,1.0,1.0 -5.915,0,6,0.1,2,8,1.0,1.0,1.0 -5.978,0,6,0.1,2,9,1.0,1.0,1.0 -18.99,0,10,0.1,2,0,1.0,1.0,1.0 -14.186,0,10,0.1,2,1,1.0,1.0,1.0 -16.813,0,10,0.1,2,2,1.0,1.0,1.0 -47.531,0,15,0.1,2,0,1.0,1.0,1.0 -42.783,0,15,0.1,2,1,1.0,1.0,1.0 -47.987,0,15,0.1,2,2,1.0,1.0,1.0 -129.567,0,20,0.1,2,0,1.0,1.0,1.0 -122.603,0,20,0.1,2,1,1.0,1.0,1.0 -123.766,0,20,0.1,2,2,1.0,1.0,1.0 -4.109,0,3,0.2,2,0,1.0,1.0,1.0 -4.322,0,3,0.2,2,1,1.0,1.0,1.0 -4.493,0,3,0.2,2,2,1.0,1.0,1.0 -4.063,0,3,0.2,2,3,1.0,1.0,1.0 -4.66,0,3,0.2,2,4,1.0,1.0,1.0 -3.962,0,3,0.2,2,5,1.0,1.0,1.0 -3.922,0,3,0.2,2,6,1.0,1.0,1.0 -4.666,0,3,0.2,2,7,1.0,1.0,1.0 -3.794,0,3,0.2,2,8,1.0,1.0,1.0 -4.016,0,3,0.2,2,9,1.0,1.0,1.0 -4.938,0,4,0.2,2,0,1.0,1.0,1.0 -4.976,0,4,0.2,2,1,1.0,1.0,1.0 -4.782,0,4,0.2,2,2,1.0,1.0,1.0 -4.323,0,4,0.2,2,3,1.0,1.0,1.0 -4.76,0,4,0.2,2,4,1.0,1.0,1.0 -4.343,0,4,0.2,2,5,1.0,1.0,1.0 -4.481,0,4,0.2,2,6,1.0,1.0,1.0 -5.737,0,4,0.2,2,7,1.0,1.0,1.0 -5.848,0,4,0.2,2,8,1.0,1.0,1.0 -4.983,0,4,0.2,2,9,1.0,1.0,1.0 -5.976,0,5,0.2,2,0,1.0,1.0,1.0 -5.914,0,5,0.2,2,1,1.0,1.0,1.0 -5.258,0,5,0.2,2,2,1.0,1.0,1.0 -5.91,0,5,0.2,2,3,1.0,1.0,1.0 -5.601,0,5,0.2,2,4,1.0,1.0,1.0 -5.351,0,5,0.2,2,5,1.0,1.0,1.0 -5.129,0,5,0.2,2,6,1.0,1.0,1.0 -4.733,0,5,0.2,2,7,1.0,1.0,1.0 -5.462,0,5,0.2,2,8,1.0,1.0,1.0 -4.615,0,5,0.2,2,9,1.0,1.0,1.0 -7.951,0,6,0.2,2,0,1.0,1.0,1.0 -7.09,0,6,0.2,2,1,1.0,1.0,1.0 -7.129,0,6,0.2,2,2,1.0,1.0,1.0 -6.375,0,6,0.2,2,3,1.0,1.0,1.0 -6.744,0,6,0.2,2,4,1.0,1.0,1.0 -5.767,0,6,0.2,2,5,1.0,1.0,1.0 -5.896,0,6,0.2,2,6,1.0,1.0,1.0 -6.586,0,6,0.2,2,7,1.0,1.0,1.0 -6.999,0,6,0.2,2,8,1.0,1.0,1.0 -7.048,0,6,0.2,2,9,1.0,1.0,1.0 -16.39,0,10,0.2,2,0,1.0,1.0,1.0 -17.607,0,10,0.2,2,1,1.0,1.0,1.0 -18.24,0,10,0.2,2,2,1.0,1.0,1.0 -62.994,0,15,0.2,2,0,1.0,1.0,1.0 -56.199,0,15,0.2,2,1,1.0,1.0,1.0 -60.651,0,15,0.2,2,2,1.0,1.0,1.0 -165.157,0,20,0.2,2,0,1.0,1.0,1.0 -147.716,0,20,0.2,2,1,1.0,1.0,1.0 -165.653,0,20,0.2,2,2,1.0,1.0,1.0 -4.22,0,3,0.3,2,0,1.0,1.0,1.0 -4.435,0,3,0.3,2,1,1.0,1.0,1.0 -3.979,0,3,0.3,2,2,1.0,1.0,1.0 -3.641,0,3,0.3,2,3,1.0,1.0,1.0 -3.721,0,3,0.3,2,4,1.0,1.0,1.0 -4.117,0,3,0.3,2,5,1.0,1.0,1.0 -3.657,0,3,0.3,2,6,1.0,1.0,1.0 -3.888,0,3,0.3,2,7,1.0,1.0,1.0 -3.619,0,3,0.3,2,8,1.0,1.0,1.0 -4.121,0,3,0.3,2,9,1.0,1.0,1.0 -4.378,0,4,0.3,2,0,1.0,1.0,1.0 -4.845,0,4,0.3,2,1,1.0,1.0,1.0 -4.185,0,4,0.3,2,2,1.0,1.0,1.0 -4.783,0,4,0.3,2,3,1.0,1.0,1.0 -5.361,0,4,0.3,2,4,1.0,1.0,1.0 -4.671,0,4,0.3,2,5,1.0,1.0,1.0 -4.59,0,4,0.3,2,6,1.0,1.0,1.0 -5.01,0,4,0.3,2,7,1.0,1.0,1.0 -4.38,0,4,0.3,2,8,1.0,1.0,1.0 -4.423,0,4,0.3,2,9,1.0,1.0,1.0 -5.913,0,5,0.3,2,0,0.909,1.0,0.833 -5.251,0,5,0.3,2,1,1.0,1.0,1.0 -5.134,0,5,0.3,2,2,1.0,1.0,1.0 -5.608,0,5,0.3,2,3,1.0,1.0,1.0 -5.707,0,5,0.3,2,4,1.0,1.0,1.0 -5.439,0,5,0.3,2,5,1.0,1.0,1.0 -4.947,0,5,0.3,2,6,1.0,1.0,1.0 -5.969,0,5,0.3,2,7,1.0,1.0,1.0 -5.837,0,5,0.3,2,8,1.0,1.0,1.0 -5.493,0,5,0.3,2,9,1.0,1.0,1.0 -6.878,0,6,0.3,2,0,1.0,1.0,1.0 -7.121,0,6,0.3,2,1,1.0,1.0,1.0 -7.131,0,6,0.3,2,2,1.0,1.0,1.0 -7.337,0,6,0.3,2,3,1.0,1.0,1.0 -7.527,0,6,0.3,2,4,0.941,1.0,0.889 -7.248,0,6,0.3,2,5,1.0,1.0,1.0 -6.775,0,6,0.3,2,6,1.0,1.0,1.0 -6.952,0,6,0.3,2,7,1.0,1.0,1.0 -7.454,0,6,0.3,2,8,1.0,1.0,1.0 -7.835,0,6,0.3,2,9,1.0,1.0,1.0 -17.744,0,10,0.3,2,0,1.0,1.0,1.0 -18.538,0,10,0.3,2,1,1.0,1.0,1.0 -20.173,0,10,0.3,2,2,1.0,1.0,1.0 -66.885,0,15,0.3,2,0,1.0,1.0,1.0 -63.485,0,15,0.3,2,1,1.0,1.0,1.0 -60.502,0,15,0.3,2,2,1.0,1.0,1.0 -177.964,0,20,0.3,2,0,1.0,1.0,1.0 -175.469,0,20,0.3,2,1,1.0,1.0,1.0 -191.346,0,20,0.3,2,2,1.0,1.0,1.0 -3.797,0,3,0.4,2,0,1.0,1.0,1.0 -4.005,0,3,0.4,2,1,1.0,1.0,1.0 -3.469,0,3,0.4,2,2,1.0,1.0,1.0 -3.623,0,3,0.4,2,3,1.0,1.0,1.0 -3.849,0,3,0.4,2,4,1.0,1.0,1.0 -3.703,0,3,0.4,2,5,1.0,1.0,1.0 -3.963,0,3,0.4,2,6,1.0,1.0,1.0 -3.565,0,3,0.4,2,7,1.0,1.0,1.0 -3.561,0,3,0.4,2,8,1.0,1.0,1.0 -3.676,0,3,0.4,2,9,1.0,1.0,1.0 -4.196,0,4,0.4,2,0,1.0,1.0,1.0 -4.139,0,4,0.4,2,1,1.0,1.0,1.0 -3.917,0,4,0.4,2,2,1.0,1.0,1.0 -4.196,0,4,0.4,2,3,1.0,1.0,1.0 -4.01,0,4,0.4,2,4,1.0,1.0,1.0 -4.072,0,4,0.4,2,5,1.0,1.0,1.0 -4.359,0,4,0.4,2,6,1.0,1.0,1.0 -4.133,0,4,0.4,2,7,1.0,1.0,1.0 -4.0,0,4,0.4,2,8,1.0,1.0,1.0 -4.226,0,4,0.4,2,9,1.0,1.0,1.0 -4.957,0,5,0.4,2,0,1.0,1.0,1.0 -5.066,0,5,0.4,2,1,1.0,1.0,1.0 -5.011,0,5,0.4,2,2,1.0,1.0,1.0 -5.018,0,5,0.4,2,3,1.0,1.0,1.0 -5.115,0,5,0.4,2,4,1.0,1.0,1.0 -4.97,0,5,0.4,2,5,1.0,1.0,1.0 -4.78,0,5,0.4,2,6,1.0,1.0,1.0 -5.139,0,5,0.4,2,7,1.0,1.0,1.0 -5.471,0,5,0.4,2,8,1.0,1.0,1.0 -4.995,0,5,0.4,2,9,1.0,1.0,1.0 -6.591,0,6,0.4,2,0,1.0,1.0,1.0 -6.558,0,6,0.4,2,1,1.0,1.0,1.0 -6.803,0,6,0.4,2,2,1.0,1.0,1.0 -6.485,0,6,0.4,2,3,1.0,1.0,1.0 -5.938,0,6,0.4,2,4,1.0,1.0,1.0 -6.274,0,6,0.4,2,5,1.0,1.0,1.0 -6.621,0,6,0.4,2,6,1.0,1.0,1.0 -6.392,0,6,0.4,2,7,1.0,1.0,1.0 -6.753,0,6,0.4,2,8,1.0,1.0,1.0 -6.613,0,6,0.4,2,9,1.0,1.0,1.0 -21.158,0,10,0.4,2,0,1.0,1.0,1.0 -15.645,0,10,0.4,2,1,1.0,1.0,1.0 -19.941,0,10,0.4,2,2,1.0,1.0,1.0 -67.137,0,15,0.4,2,0,1.0,1.0,1.0 -76.037,0,15,0.4,2,1,1.0,1.0,1.0 -68.206,0,15,0.4,2,2,1.0,1.0,1.0 -209.516,0,20,0.4,2,0,0.961,1.0,0.925 -187.045,0,20,0.4,2,1,0.87,1.0,0.769 -224.279,0,20,0.4,2,2,0.96,1.0,0.923 -0.613,1,3,0.1,4,0,1.0,1.0,1.0 -0.609,1,3,0.1,4,1,0.667,0.5,1.0 -0.613,1,3,0.1,4,2,0.8,0.667,1.0 -0.606,1,3,0.1,4,3,0.8,0.667,1.0 -0.54,1,3,0.1,4,4,0.8,0.667,1.0 -0.727,1,3,0.1,4,5,1.0,1.0,1.0 -0.665,1,3,0.1,4,6,0.8,0.667,1.0 -0.618,1,3,0.1,4,7,1.0,1.0,1.0 -0.619,1,3,0.1,4,8,0.75,0.6,1.0 -0.504,1,3,0.1,4,9,0.667,0.5,1.0 -1.911,1,4,0.1,4,0,0.889,0.8,1.0 -1.254,1,4,0.1,4,1,0.571,0.4,1.0 -1.682,1,4,0.1,4,2,1.0,1.0,1.0 -1.512,1,4,0.1,4,3,0.667,0.5,1.0 -1.308,1,4,0.1,4,4,0.667,0.5,1.0 -1.584,1,4,0.1,4,5,0.571,0.4,1.0 -1.593,1,4,0.1,4,6,0.889,0.8,1.0 -1.603,1,4,0.1,4,7,0.571,0.4,1.0 -1.331,1,4,0.1,4,8,0.8,0.667,1.0 -1.934,1,4,0.1,4,9,0.833,0.714,1.0 -2.635,1,5,0.1,4,0,0.857,0.75,1.0 -4.108,1,5,0.1,4,1,0.778,0.636,1.0 -3.063,1,5,0.1,4,2,0.727,0.571,1.0 -3.046,1,5,0.1,4,3,0.727,0.571,1.0 -3.021,1,5,0.1,4,4,0.8,0.667,1.0 -2.904,1,5,0.1,4,5,0.75,0.6,1.0 -3.643,1,5,0.1,4,6,0.667,0.5,1.0 -3.079,1,5,0.1,4,7,0.8,0.667,1.0 -3.013,1,5,0.1,4,8,0.889,0.8,1.0 -3.776,1,5,0.1,4,9,0.857,0.75,1.0 -5.269,1,6,0.1,4,0,0.8,0.667,1.0 -5.795,1,6,0.1,4,1,0.667,0.5,1.0 -4.383,1,6,0.1,4,2,0.727,0.571,1.0 -4.819,1,6,0.1,4,3,0.615,0.444,1.0 -6.401,1,6,0.1,4,4,0.8,0.667,1.0 -5.537,1,6,0.1,4,5,0.8,0.667,1.0 -6.634,1,6,0.1,4,6,0.714,0.556,1.0 -5.375,1,6,0.1,4,7,0.824,0.7,1.0 -5.291,1,6,0.1,4,8,0.909,0.833,1.0 -6.153,1,6,0.1,4,9,0.75,0.6,1.0 -32.928,1,10,0.1,4,0,0.688,0.524,1.0 -34.674,1,10,0.1,4,1,0.821,0.696,1.0 -30.713,1,10,0.1,4,2,0.774,0.632,1.0 -160.622,1,15,0.1,4,0,0.833,0.714,1.0 -141.218,1,15,0.1,4,1,0.717,0.559,1.0 -156.825,1,15,0.1,4,2,0.787,0.649,1.0 -0.582,1,3,0.2,4,0,0.857,0.75,1.0 -0.64,1,3,0.2,4,1,1.0,1.0,1.0 -0.551,1,3,0.2,4,2,0.8,0.667,1.0 -0.545,1,3,0.2,4,3,0.8,0.667,1.0 -0.603,1,3,0.2,4,4,0.75,0.6,1.0 -0.63,1,3,0.2,4,5,0.667,0.5,1.0 -0.583,1,3,0.2,4,6,0.857,0.75,1.0 -0.614,1,3,0.2,4,7,1.0,1.0,1.0 -0.498,1,3,0.2,4,8,0.8,0.667,1.0 -0.597,1,3,0.2,4,9,0.857,0.75,1.0 -1.09,1,4,0.2,4,0,1.0,1.0,1.0 -1.332,1,4,0.2,4,1,0.857,0.75,1.0 -1.58,1,4,0.2,4,2,0.857,0.75,1.0 -1.321,1,4,0.2,4,3,0.75,0.6,1.0 -2.033,1,4,0.2,4,4,0.824,0.7,1.0 -1.562,1,4,0.2,4,5,1.0,1.0,1.0 -1.982,1,4,0.2,4,6,0.857,0.75,1.0 -1.194,1,4,0.2,4,7,1.0,1.0,1.0 -1.478,1,4,0.2,4,8,1.0,1.0,1.0 -1.104,1,4,0.2,4,9,1.0,1.0,1.0 -2.701,1,5,0.2,4,0,1.0,1.0,1.0 -3.362,1,5,0.2,4,1,0.875,0.778,1.0 -3.601,1,5,0.2,4,2,0.769,0.625,1.0 -3.415,1,5,0.2,4,3,0.769,0.625,1.0 -2.901,1,5,0.2,4,4,0.923,0.857,1.0 -3.033,1,5,0.2,4,5,0.933,0.875,1.0 -2.537,1,5,0.2,4,6,1.0,1.0,1.0 -3.13,1,5,0.2,4,7,0.545,0.375,1.0 -3.82,1,5,0.2,4,8,0.857,0.75,1.0 -2.683,1,5,0.2,4,9,0.909,0.833,1.0 -6.741,1,6,0.2,4,0,0.9,0.818,1.0 -5.46,1,6,0.2,4,1,0.933,0.875,1.0 -6.838,1,6,0.2,4,2,0.778,0.636,1.0 -6.126,1,6,0.2,4,3,0.778,0.636,1.0 -4.915,1,6,0.2,4,4,0.8,0.667,1.0 -4.452,1,6,0.2,4,5,0.833,0.714,1.0 -7.968,1,6,0.2,4,6,0.696,0.533,1.0 -7.348,1,6,0.2,4,7,0.706,0.545,1.0 -6.326,1,6,0.2,4,8,0.7,0.538,1.0 -7.081,1,6,0.2,4,9,1.0,1.0,1.0 -52.525,1,10,0.2,4,0,0.837,0.72,1.0 -45.067,1,10,0.2,4,1,0.898,0.815,1.0 -41.784,1,10,0.2,4,2,0.833,0.714,1.0 -190.81,1,15,0.2,4,0,0.932,0.872,1.0 -163.946,1,15,0.2,4,1,0.921,0.891,0.953 -219.373,1,15,0.2,4,2,0.932,0.873,1.0 -0.536,1,3,0.3,4,0,0.8,0.667,1.0 -0.499,1,3,0.3,4,1,0.667,0.5,1.0 -0.679,1,3,0.3,4,2,1.0,1.0,1.0 -0.488,1,3,0.3,4,3,1.0,1.0,1.0 -0.508,1,3,0.3,4,4,1.0,1.0,1.0 -0.547,1,3,0.3,4,5,0.8,0.667,1.0 -0.581,1,3,0.3,4,6,0.667,0.5,1.0 -0.596,1,3,0.3,4,7,1.0,1.0,1.0 -0.661,1,3,0.3,4,8,0.857,0.75,1.0 -0.566,1,3,0.3,4,9,0.8,0.667,1.0 -1.918,1,4,0.3,4,0,0.889,0.8,1.0 -1.744,1,4,0.3,4,1,0.833,0.714,1.0 -1.616,1,4,0.3,4,2,0.923,0.857,1.0 -1.122,1,4,0.3,4,3,0.8,0.667,1.0 -1.699,1,4,0.3,4,4,0.909,0.833,1.0 -1.982,1,4,0.3,4,5,0.8,0.667,1.0 -1.733,1,4,0.3,4,6,0.833,0.714,1.0 -1.592,1,4,0.3,4,7,0.889,0.8,1.0 -1.435,1,4,0.3,4,8,0.889,0.8,1.0 -2.049,1,4,0.3,4,9,0.933,0.875,1.0 -3.507,1,5,0.3,4,0,0.923,0.857,1.0 -3.983,1,5,0.3,4,1,0.737,0.583,1.0 -5.556,1,5,0.3,4,2,0.917,0.846,1.0 -3.066,1,5,0.3,4,3,0.933,0.875,1.0 -4.202,1,5,0.3,4,4,0.9,0.818,1.0 -3.499,1,5,0.3,4,5,0.923,0.857,1.0 -3.083,1,5,0.3,4,6,0.8,0.667,1.0 -6.038,1,5,0.3,4,7,0.833,0.714,1.0 -4.173,1,5,0.3,4,8,0.769,0.625,1.0 -3.13,1,5,0.3,4,9,0.889,0.8,1.0 -8.128,1,6,0.3,4,0,0.833,0.714,1.0 -6.663,1,6,0.3,4,1,0.87,0.769,1.0 -7.726,1,6,0.3,4,2,0.88,0.786,1.0 -8.416,1,6,0.3,4,3,0.917,0.846,1.0 -6.013,1,6,0.3,4,4,0.737,0.583,1.0 -9.416,1,6,0.3,4,5,0.897,0.812,1.0 -5.963,1,6,0.3,4,6,0.714,0.556,1.0 -5.789,1,6,0.3,4,7,0.947,0.9,1.0 -8.601,1,6,0.3,4,8,0.889,0.8,1.0 -6.411,1,6,0.3,4,9,0.818,0.692,1.0 -47.81,1,10,0.3,4,0,0.943,0.893,1.0 -59.714,1,10,0.3,4,1,0.848,0.8,0.903 -45.597,1,10,0.3,4,2,0.852,0.742,1.0 -148.935,1,15,0.3,4,0,0.8,0.667,1.0 -131.963,1,15,0.3,4,1,0.708,0.548,1.0 -153.059,1,15,0.3,4,2,0.833,0.714,1.0 -0.642,1,3,0.4,4,0,0.889,0.8,1.0 -0.558,1,3,0.4,4,1,0.857,0.75,1.0 -0.598,1,3,0.4,4,2,0.75,0.6,1.0 -0.706,1,3,0.4,4,3,0.857,0.75,1.0 -0.65,1,3,0.4,4,4,0.857,0.75,1.0 -0.598,1,3,0.4,4,5,1.0,1.0,1.0 -0.561,1,3,0.4,4,6,0.8,0.667,1.0 -0.567,1,3,0.4,4,7,0.8,0.667,1.0 -0.639,1,3,0.4,4,8,0.889,0.8,1.0 -0.519,1,3,0.4,4,9,1.0,1.0,1.0 -1.783,1,4,0.4,4,0,0.923,0.857,1.0 -1.951,1,4,0.4,4,1,0.933,0.875,1.0 -1.651,1,4,0.4,4,2,1.0,1.0,1.0 -1.434,1,4,0.4,4,3,0.75,0.6,1.0 -1.665,1,4,0.4,4,4,1.0,1.0,1.0 -1.28,1,4,0.4,4,5,0.857,0.75,1.0 -2.231,1,4,0.4,4,6,0.889,0.8,1.0 -2.368,1,4,0.4,4,7,0.889,0.8,1.0 -1.298,1,4,0.4,4,8,0.667,0.5,1.0 -2.352,1,4,0.4,4,9,0.833,0.714,1.0 -4.486,1,5,0.4,4,0,0.778,0.636,1.0 -4.287,1,5,0.4,4,1,0.842,0.727,1.0 -7.605,1,5,0.4,4,2,0.909,0.833,1.0 -3.526,1,5,0.4,4,3,0.857,0.75,1.0 -5.554,1,5,0.4,4,4,0.966,0.933,1.0 -3.152,1,5,0.4,4,5,0.778,0.636,1.0 -5.064,1,5,0.4,4,6,0.8,0.667,1.0 -3.705,1,5,0.4,4,7,0.714,0.556,1.0 -4.212,1,5,0.4,4,8,0.8,0.667,1.0 -5.417,1,5,0.4,4,9,0.737,0.583,1.0 -8.794,1,6,0.4,4,0,0.815,0.688,1.0 -10.26,1,6,0.4,4,1,0.889,0.8,1.0 -6.887,1,6,0.4,4,2,0.929,0.867,1.0 -11.176,1,6,0.4,4,3,0.875,0.778,1.0 -6.964,1,6,0.4,4,4,0.706,0.545,1.0 -9.482,1,6,0.4,4,5,0.88,0.786,1.0 -8.018,1,6,0.4,4,6,0.889,0.8,1.0 -9.064,1,6,0.4,4,7,0.815,0.688,1.0 -8.092,1,6,0.4,4,8,0.938,0.882,1.0 -12.492,1,6,0.4,4,9,0.857,0.75,1.0 -64.055,1,10,0.4,4,0,0.972,0.946,1.0 -72.067,1,10,0.4,4,1,0.927,0.95,0.905 -47.943,1,10,0.4,4,2,0.892,0.967,0.829 -224.389,1,15,0.4,4,0,0.691,0.923,0.552 -290.023,1,15,0.4,4,1,0.815,0.948,0.714 -240.671,1,15,0.4,4,2,0.794,0.945,0.684 -5.48,0,3,0.1,4,0,1.0,1.0,1.0 -5.494,0,3,0.1,4,1,1.0,1.0,1.0 -6.251,0,3,0.1,4,2,1.0,1.0,1.0 -5.389,0,3,0.1,4,3,1.0,1.0,1.0 -5.021,0,3,0.1,4,4,1.0,1.0,1.0 -5.885,0,3,0.1,4,5,1.0,1.0,1.0 -5.243,0,3,0.1,4,6,1.0,1.0,1.0 -5.528,0,3,0.1,4,7,1.0,1.0,1.0 -5.356,0,3,0.1,4,8,1.0,1.0,1.0 -5.059,0,3,0.1,4,9,1.0,1.0,1.0 -6.948,0,4,0.1,4,0,1.0,1.0,1.0 -6.797,0,4,0.1,4,1,1.0,1.0,1.0 -7.481,0,4,0.1,4,2,1.0,1.0,1.0 -6.589,0,4,0.1,4,3,1.0,1.0,1.0 -6.907,0,4,0.1,4,4,1.0,1.0,1.0 -7.44,0,4,0.1,4,5,1.0,1.0,1.0 -7.511,0,4,0.1,4,6,1.0,1.0,1.0 -6.949,0,4,0.1,4,7,1.0,1.0,1.0 -7.042,0,4,0.1,4,8,1.0,1.0,1.0 -7.858,0,4,0.1,4,9,1.0,1.0,1.0 -9.522,0,5,0.1,4,0,1.0,1.0,1.0 -10.646,0,5,0.1,4,1,1.0,1.0,1.0 -9.245,0,5,0.1,4,2,1.0,1.0,1.0 -9.782,0,5,0.1,4,3,1.0,1.0,1.0 -9.778,0,5,0.1,4,4,1.0,1.0,1.0 -9.432,0,5,0.1,4,5,1.0,1.0,1.0 -9.69,0,5,0.1,4,6,1.0,1.0,1.0 -9.908,0,5,0.1,4,7,1.0,1.0,1.0 -9.593,0,5,0.1,4,8,1.0,1.0,1.0 -9.94,0,5,0.1,4,9,1.0,1.0,1.0 -12.798,0,6,0.1,4,0,1.0,1.0,1.0 -14.017,0,6,0.1,4,1,1.0,1.0,1.0 -12.614,0,6,0.1,4,2,1.0,1.0,1.0 -12.432,0,6,0.1,4,3,1.0,1.0,1.0 -13.906,0,6,0.1,4,4,1.0,1.0,1.0 -13.621,0,6,0.1,4,5,1.0,1.0,1.0 -13.135,0,6,0.1,4,6,1.0,1.0,1.0 -13.553,0,6,0.1,4,7,1.0,1.0,1.0 -13.528,0,6,0.1,4,8,1.0,1.0,1.0 -13.694,0,6,0.1,4,9,1.0,1.0,1.0 -39.284,0,10,0.1,4,0,1.0,1.0,1.0 -42.762,0,10,0.1,4,1,1.0,1.0,1.0 -40.723,0,10,0.1,4,2,1.0,1.0,1.0 -138.874,0,15,0.1,4,0,1.0,1.0,1.0 -123.908,0,15,0.1,4,1,1.0,1.0,1.0 -130.094,0,15,0.1,4,2,0.884,1.0,0.792 -5.054,0,3,0.2,4,0,1.0,1.0,1.0 -5.288,0,3,0.2,4,1,1.0,1.0,1.0 -5.728,0,3,0.2,4,2,1.0,1.0,1.0 -5.187,0,3,0.2,4,3,1.0,1.0,1.0 -5.174,0,3,0.2,4,4,1.0,1.0,1.0 -5.34,0,3,0.2,4,5,1.0,1.0,1.0 -5.152,0,3,0.2,4,6,1.0,1.0,1.0 -5.184,0,3,0.2,4,7,1.0,1.0,1.0 -5.174,0,3,0.2,4,8,1.0,1.0,1.0 -5.138,0,3,0.2,4,9,1.0,1.0,1.0 -6.888,0,4,0.2,4,0,1.0,1.0,1.0 -6.845,0,4,0.2,4,1,1.0,1.0,1.0 -7.196,0,4,0.2,4,2,1.0,1.0,1.0 -7.401,0,4,0.2,4,3,1.0,1.0,1.0 -7.617,0,4,0.2,4,4,1.0,1.0,1.0 -7.122,0,4,0.2,4,5,1.0,1.0,1.0 -7.41,0,4,0.2,4,6,1.0,1.0,1.0 -7.008,0,4,0.2,4,7,1.0,1.0,1.0 -7.202,0,4,0.2,4,8,1.0,1.0,1.0 -7.116,0,4,0.2,4,9,1.0,1.0,1.0 -9.625,0,5,0.2,4,0,1.0,1.0,1.0 -10.153,0,5,0.2,4,1,1.0,1.0,1.0 -9.764,0,5,0.2,4,2,1.0,1.0,1.0 -9.461,0,5,0.2,4,3,1.0,1.0,1.0 -10.19,0,5,0.2,4,4,1.0,1.0,1.0 -9.681,0,5,0.2,4,5,1.0,1.0,1.0 -9.766,0,5,0.2,4,6,1.0,1.0,1.0 -9.453,0,5,0.2,4,7,1.0,1.0,1.0 -10.224,0,5,0.2,4,8,1.0,1.0,1.0 -9.766,0,5,0.2,4,9,1.0,1.0,1.0 -14.99,0,6,0.2,4,0,1.0,1.0,1.0 -13.597,0,6,0.2,4,1,1.0,1.0,1.0 -13.449,0,6,0.2,4,2,1.0,1.0,1.0 -14.786,0,6,0.2,4,3,1.0,1.0,1.0 -14.101,0,6,0.2,4,4,1.0,1.0,1.0 -13.999,0,6,0.2,4,5,1.0,1.0,1.0 -14.907,0,6,0.2,4,6,1.0,1.0,1.0 -14.218,0,6,0.2,4,7,1.0,1.0,1.0 -15.086,0,6,0.2,4,8,1.0,1.0,1.0 -16.234,0,6,0.2,4,9,1.0,1.0,1.0 -46.968,0,10,0.2,4,0,1.0,1.0,1.0 -45.725,0,10,0.2,4,1,0.872,1.0,0.773 -45.156,0,10,0.2,4,2,1.0,1.0,1.0 -145.535,0,15,0.2,4,0,0.935,1.0,0.878 -135.002,0,15,0.2,4,1,0.868,1.0,0.767 -140.394,0,15,0.2,4,2,0.884,1.0,0.792 -4.555,0,3,0.3,4,0,1.0,1.0,1.0 -4.555,0,3,0.3,4,1,1.0,1.0,1.0 -4.659,0,3,0.3,4,2,1.0,1.0,1.0 -4.569,0,3,0.3,4,3,1.0,1.0,1.0 -4.773,0,3,0.3,4,4,1.0,1.0,1.0 -4.503,0,3,0.3,4,5,1.0,1.0,1.0 -5.04,0,3,0.3,4,6,1.0,1.0,1.0 -4.669,0,3,0.3,4,7,1.0,1.0,1.0 -4.603,0,3,0.3,4,8,1.0,1.0,1.0 -4.589,0,3,0.3,4,9,1.0,1.0,1.0 -6.521,0,4,0.3,4,0,1.0,1.0,1.0 -6.473,0,4,0.3,4,1,1.0,1.0,1.0 -6.707,0,4,0.3,4,2,1.0,1.0,1.0 -5.876,0,4,0.3,4,3,1.0,1.0,1.0 -6.361,0,4,0.3,4,4,1.0,1.0,1.0 -6.883,0,4,0.3,4,5,1.0,1.0,1.0 -6.619,0,4,0.3,4,6,1.0,1.0,1.0 -6.253,0,4,0.3,4,7,1.0,1.0,1.0 -6.469,0,4,0.3,4,8,1.0,1.0,1.0 -6.855,0,4,0.3,4,9,1.0,1.0,1.0 -8.817,0,5,0.3,4,0,1.0,1.0,1.0 -9.007,0,5,0.3,4,1,1.0,1.0,1.0 -10.312,0,5,0.3,4,2,1.0,1.0,1.0 -8.901,0,5,0.3,4,3,1.0,1.0,1.0 -9.674,0,5,0.3,4,4,1.0,1.0,1.0 -9.179,0,5,0.3,4,5,1.0,1.0,1.0 -8.786,0,5,0.3,4,6,1.0,1.0,1.0 -9.675,0,5,0.3,4,7,1.0,1.0,1.0 -8.888,0,5,0.3,4,8,1.0,1.0,1.0 -8.351,0,5,0.3,4,9,1.0,1.0,1.0 -13.022,0,6,0.3,4,0,1.0,1.0,1.0 -12.967,0,6,0.3,4,1,1.0,1.0,1.0 -13.528,0,6,0.3,4,2,1.0,1.0,1.0 -13.596,0,6,0.3,4,3,1.0,1.0,1.0 -11.576,0,6,0.3,4,4,1.0,1.0,1.0 -13.883,0,6,0.3,4,5,1.0,1.0,1.0 -11.712,0,6,0.3,4,6,1.0,1.0,1.0 -13.224,0,6,0.3,4,7,1.0,1.0,1.0 -14.677,0,6,0.3,4,8,1.0,1.0,1.0 -13.235,0,6,0.3,4,9,1.0,1.0,1.0 -46.524,0,10,0.3,4,0,1.0,1.0,1.0 -46.531,0,10,0.3,4,1,0.893,1.0,0.806 -43.19,0,10,0.3,4,2,1.0,1.0,1.0 -121.834,0,15,0.3,4,0,1.0,1.0,1.0 -119.824,0,15,0.3,4,1,1.0,1.0,1.0 -120.162,0,15,0.3,4,2,0.889,1.0,0.8 -4.594,0,3,0.4,4,0,1.0,1.0,1.0 -4.686,0,3,0.4,4,1,1.0,1.0,1.0 -4.707,0,3,0.4,4,2,1.0,1.0,1.0 -5.269,0,3,0.4,4,3,1.0,1.0,1.0 -4.729,0,3,0.4,4,4,1.0,1.0,1.0 -4.6,0,3,0.4,4,5,1.0,1.0,1.0 -4.727,0,3,0.4,4,6,1.0,1.0,1.0 -4.707,0,3,0.4,4,7,1.0,1.0,1.0 -4.69,0,3,0.4,4,8,1.0,1.0,1.0 -4.944,0,3,0.4,4,9,1.0,1.0,1.0 -6.441,0,4,0.4,4,0,1.0,1.0,1.0 -6.75,0,4,0.4,4,1,1.0,1.0,1.0 -6.198,0,4,0.4,4,2,1.0,1.0,1.0 -6.496,0,4,0.4,4,3,1.0,1.0,1.0 -6.631,0,4,0.4,4,4,1.0,1.0,1.0 -6.262,0,4,0.4,4,5,1.0,1.0,1.0 -6.865,0,4,0.4,4,6,1.0,1.0,1.0 -6.739,0,4,0.4,4,7,1.0,1.0,1.0 -6.357,0,4,0.4,4,8,1.0,1.0,1.0 -7.206,0,4,0.4,4,9,1.0,1.0,1.0 -8.677,0,5,0.4,4,0,1.0,1.0,1.0 -9.465,0,5,0.4,4,1,1.0,1.0,1.0 -10.355,0,5,0.4,4,2,1.0,1.0,1.0 -9.04,0,5,0.4,4,3,1.0,1.0,1.0 -10.206,0,5,0.4,4,4,1.0,1.0,1.0 -8.605,0,5,0.4,4,5,1.0,1.0,1.0 -9.591,0,5,0.4,4,6,1.0,1.0,1.0 -9.072,0,5,0.4,4,7,1.0,1.0,1.0 -9.002,0,5,0.4,4,8,1.0,1.0,1.0 -9.264,0,5,0.4,4,9,1.0,1.0,1.0 -13.615,0,6,0.4,4,0,1.0,1.0,1.0 -13.133,0,6,0.4,4,1,1.0,1.0,1.0 -13.687,0,6,0.4,4,2,1.0,1.0,1.0 -13.901,0,6,0.4,4,3,1.0,1.0,1.0 -12.545,0,6,0.4,4,4,1.0,1.0,1.0 -13.513,0,6,0.4,4,5,1.0,1.0,1.0 -14.006,0,6,0.4,4,6,1.0,1.0,1.0 -13.376,0,6,0.4,4,7,1.0,1.0,1.0 -14.285,0,6,0.4,4,8,1.0,1.0,1.0 -14.759,0,6,0.4,4,9,1.0,1.0,1.0 -45.247,0,10,0.4,4,0,0.833,1.0,0.714 -44.191,0,10,0.4,4,1,0.746,1.0,0.595 -45.044,0,10,0.4,4,2,0.793,1.0,0.657 -112.711,0,15,0.4,4,0,0.311,1.0,0.184 -119.185,0,15,0.4,4,1,0.46,1.0,0.299 -119.897,0,15,0.4,4,2,0.383,1.0,0.237 -2,2,3,0.1,2,0,1.0,1.0,1.0 -2,2,3,0.1,2,1,1.0,1.0,1.0 -2,2,3,0.1,2,2,1.0,1.0,1.0 -2,2,3,0.1,2,3,1.0,1.0,1.0 -2,2,3,0.1,2,4,1.0,1.0,1.0 -2,2,3,0.1,2,5,1.0,1.0,1.0 -2,2,3,0.1,2,6,1.0,1.0,1.0 -2,2,3,0.1,2,7,1.0,1.0,1.0 -2,2,3,0.1,2,8,1.0,1.0,1.0 -2,2,3,0.1,2,9,1.0,1.0,1.0 -2,2,4,0.1,2,0,1.0,1.0,1.0 -2,2,4,0.1,2,1,1.0,1.0,1.0 -2,2,4,0.1,2,2,1.0,1.0,1.0 -2,2,4,0.1,2,3,1.0,1.0,1.0 -2,2,4,0.1,2,4,1.0,1.0,1.0 -2,2,4,0.1,2,5,1.0,1.0,1.0 -2,2,4,0.1,2,6,1.0,1.0,1.0 -2,2,4,0.1,2,7,1.0,1.0,1.0 -2,2,4,0.1,2,8,1.0,1.0,1.0 -2,2,4,0.1,2,9,1.0,1.0,1.0 -2,2,5,0.1,2,0,1.0,1.0,1.0 -2,2,5,0.1,2,1,1.0,1.0,1.0 -2,2,5,0.1,2,2,1.0,1.0,1.0 -2,2,5,0.1,2,3,1.0,1.0,1.0 -2,2,5,0.1,2,4,1.0,1.0,1.0 -2,2,5,0.1,2,5,1.0,1.0,1.0 -2,2,5,0.1,2,6,1.0,1.0,1.0 -2,2,5,0.1,2,7,1.0,1.0,1.0 -2,2,5,0.1,2,8,1.0,1.0,1.0 -2,2,5,0.1,2,9,1.0,1.0,1.0 -2,2,6,0.1,2,0,0.889,1.0,0.8 -2,2,6,0.1,2,1,1.0,1.0,1.0 -2,2,6,0.1,2,2,1.0,1.0,1.0 -2,2,6,0.1,2,3,1.0,1.0,1.0 -2,2,6,0.1,2,4,1.0,1.0,1.0 -2,2,6,0.1,2,5,1.0,1.0,1.0 -2,2,6,0.1,2,6,1.0,1.0,1.0 -2,2,6,0.1,2,7,1.0,1.0,1.0 -2,2,6,0.1,2,8,1.0,1.0,1.0 -2,2,6,0.1,2,9,1.0,1.0,1.0 -2,2,10,0.1,2,0,1.0,1.0,1.0 -2,2,10,0.1,2,1,1.0,1.0,1.0 -2,2,10,0.1,2,2,1.0,1.0,1.0 -2,2,15,0.1,2,0,1.0,1.0,1.0 -2,2,15,0.1,2,1,1.0,1.0,1.0 -2,2,15,0.1,2,2,1.0,1.0,1.0 -2,2,20,0.1,2,0,1.0,1.0,1.0 -2,2,20,0.1,2,1,1.0,1.0,1.0 -2,2,20,0.1,2,2,1.0,1.0,1.0 -2,2,3,0.2,2,0,1.0,1.0,1.0 -2,2,3,0.2,2,1,1.0,1.0,1.0 -2,2,3,0.2,2,2,1.0,1.0,1.0 -2,2,3,0.2,2,3,1.0,1.0,1.0 -2,2,3,0.2,2,4,1.0,1.0,1.0 -2,2,3,0.2,2,5,1.0,1.0,1.0 -2,2,3,0.2,2,6,1.0,1.0,1.0 -2,2,3,0.2,2,7,1.0,1.0,1.0 -2,2,3,0.2,2,8,1.0,1.0,1.0 -2,2,3,0.2,2,9,1.0,1.0,1.0 -2,2,4,0.2,2,0,1.0,1.0,1.0 -2,2,4,0.2,2,1,1.0,1.0,1.0 -2,2,4,0.2,2,2,1.0,1.0,1.0 -2,2,4,0.2,2,3,1.0,1.0,1.0 -2,2,4,0.2,2,4,1.0,1.0,1.0 -2,2,4,0.2,2,5,1.0,1.0,1.0 -2,2,4,0.2,2,6,1.0,1.0,1.0 -2,2,4,0.2,2,7,1.0,1.0,1.0 -2,2,4,0.2,2,8,1.0,1.0,1.0 -2,2,4,0.2,2,9,1.0,1.0,1.0 -2,2,5,0.2,2,0,1.0,1.0,1.0 -2,2,5,0.2,2,1,1.0,1.0,1.0 -2,2,5,0.2,2,2,1.0,1.0,1.0 -2,2,5,0.2,2,3,1.0,1.0,1.0 -2,2,5,0.2,2,4,1.0,1.0,1.0 -2,2,5,0.2,2,5,1.0,1.0,1.0 -2,2,5,0.2,2,6,1.0,1.0,1.0 -2,2,5,0.2,2,7,1.0,1.0,1.0 -2,2,5,0.2,2,8,1.0,1.0,1.0 -2,2,5,0.2,2,9,1.0,1.0,1.0 -2,2,6,0.2,2,0,1.0,1.0,1.0 -2,2,6,0.2,2,1,1.0,1.0,1.0 -2,2,6,0.2,2,2,1.0,1.0,1.0 -2,2,6,0.2,2,3,1.0,1.0,1.0 -2,2,6,0.2,2,4,1.0,1.0,1.0 -2,2,6,0.2,2,5,1.0,1.0,1.0 -2,2,6,0.2,2,6,1.0,1.0,1.0 -2,2,6,0.2,2,7,1.0,1.0,1.0 -2,2,6,0.2,2,8,1.0,1.0,1.0 -2,2,6,0.2,2,9,1.0,1.0,1.0 -2,2,10,0.2,2,0,0.971,0.944,1.0 -2,2,10,0.2,2,1,1.0,1.0,1.0 -2,2,10,0.2,2,2,1.0,1.0,1.0 -2,2,15,0.2,2,0,1.0,1.0,1.0 -2,2,15,0.2,2,1,1.0,1.0,1.0 -2,2,15,0.2,2,2,1.0,1.0,1.0 -2,2,20,0.2,2,0,1.0,1.0,1.0 -2,2,20,0.2,2,1,1.0,1.0,1.0 -2,2,20,0.2,2,2,1.0,1.0,1.0 -2,2,3,0.3,2,0,1.0,1.0,1.0 -2,2,3,0.3,2,1,1.0,1.0,1.0 -2,2,3,0.3,2,2,1.0,1.0,1.0 -2,2,3,0.3,2,3,1.0,1.0,1.0 -2,2,3,0.3,2,4,1.0,1.0,1.0 -2,2,3,0.3,2,5,1.0,1.0,1.0 -2,2,3,0.3,2,6,1.0,1.0,1.0 -2,2,3,0.3,2,7,1.0,1.0,1.0 -2,2,3,0.3,2,8,1.0,1.0,1.0 -2,2,3,0.3,2,9,1.0,1.0,1.0 -2,2,4,0.3,2,0,1.0,1.0,1.0 -2,2,4,0.3,2,1,1.0,1.0,1.0 -2,2,4,0.3,2,2,1.0,1.0,1.0 -2,2,4,0.3,2,3,1.0,1.0,1.0 -2,2,4,0.3,2,4,1.0,1.0,1.0 -2,2,4,0.3,2,5,1.0,1.0,1.0 -2,2,4,0.3,2,6,1.0,1.0,1.0 -2,2,4,0.3,2,7,1.0,1.0,1.0 -2,2,4,0.3,2,8,1.0,1.0,1.0 -2,2,4,0.3,2,9,1.0,1.0,1.0 -2,2,5,0.3,2,0,1.0,1.0,1.0 -2,2,5,0.3,2,1,1.0,1.0,1.0 -2,2,5,0.3,2,2,1.0,1.0,1.0 -2,2,5,0.3,2,3,1.0,1.0,1.0 -2,2,5,0.3,2,4,1.0,1.0,1.0 -2,2,5,0.3,2,5,1.0,1.0,1.0 -2,2,5,0.3,2,6,1.0,1.0,1.0 -2,2,5,0.3,2,7,1.0,1.0,1.0 -2,2,5,0.3,2,8,1.0,1.0,1.0 -2,2,5,0.3,2,9,1.0,1.0,1.0 -2,2,6,0.3,2,0,1.0,1.0,1.0 -2,2,6,0.3,2,1,1.0,1.0,1.0 -2,2,6,0.3,2,2,1.0,1.0,1.0 -2,2,6,0.3,2,3,1.0,1.0,1.0 -2,2,6,0.3,2,4,0.941,1.0,0.889 -2,2,6,0.3,2,5,1.0,1.0,1.0 -2,2,6,0.3,2,6,1.0,1.0,1.0 -2,2,6,0.3,2,7,1.0,1.0,1.0 -2,2,6,0.3,2,8,1.0,1.0,1.0 -2,2,6,0.3,2,9,1.0,1.0,1.0 -2,2,10,0.3,2,0,1.0,1.0,1.0 -2,2,10,0.3,2,1,1.0,1.0,1.0 -2,2,10,0.3,2,2,1.0,1.0,1.0 -2,2,15,0.3,2,0,1.0,1.0,1.0 -2,2,15,0.3,2,1,1.0,1.0,1.0 -2,2,15,0.3,2,2,1.0,1.0,1.0 -2,2,20,0.3,2,0,1.0,1.0,1.0 -2,2,20,0.3,2,1,1.0,1.0,1.0 -2,2,20,0.3,2,2,1.0,1.0,1.0 -2,2,3,0.4,2,0,1.0,1.0,1.0 -2,2,3,0.4,2,1,1.0,1.0,1.0 -2,2,3,0.4,2,2,1.0,1.0,1.0 -2,2,3,0.4,2,3,1.0,1.0,1.0 -2,2,3,0.4,2,4,1.0,1.0,1.0 -2,2,3,0.4,2,5,1.0,1.0,1.0 -2,2,3,0.4,2,6,1.0,1.0,1.0 -2,2,3,0.4,2,7,1.0,1.0,1.0 -2,2,3,0.4,2,8,1.0,1.0,1.0 -2,2,3,0.4,2,9,1.0,1.0,1.0 -2,2,4,0.4,2,0,1.0,1.0,1.0 -2,2,4,0.4,2,1,1.0,1.0,1.0 -2,2,4,0.4,2,2,1.0,1.0,1.0 -2,2,4,0.4,2,3,1.0,1.0,1.0 -2,2,4,0.4,2,4,1.0,1.0,1.0 -2,2,4,0.4,2,5,0.923,0.857,1.0 -2,2,4,0.4,2,6,1.0,1.0,1.0 -2,2,4,0.4,2,7,1.0,1.0,1.0 -2,2,4,0.4,2,8,1.0,1.0,1.0 -2,2,4,0.4,2,9,1.0,1.0,1.0 -2,2,5,0.4,2,0,1.0,1.0,1.0 -2,2,5,0.4,2,1,1.0,1.0,1.0 -2,2,5,0.4,2,2,1.0,1.0,1.0 -2,2,5,0.4,2,3,1.0,1.0,1.0 -2,2,5,0.4,2,4,1.0,1.0,1.0 -2,2,5,0.4,2,5,1.0,1.0,1.0 -2,2,5,0.4,2,6,1.0,1.0,1.0 -2,2,5,0.4,2,7,1.0,1.0,1.0 -2,2,5,0.4,2,8,1.0,1.0,1.0 -2,2,5,0.4,2,9,1.0,1.0,1.0 -2,2,6,0.4,2,0,1.0,1.0,1.0 -2,2,6,0.4,2,1,1.0,1.0,1.0 -2,2,6,0.4,2,2,1.0,1.0,1.0 -2,2,6,0.4,2,3,1.0,1.0,1.0 -2,2,6,0.4,2,4,1.0,1.0,1.0 -2,2,6,0.4,2,5,1.0,1.0,1.0 -2,2,6,0.4,2,6,1.0,1.0,1.0 -2,2,6,0.4,2,7,1.0,1.0,1.0 -2,2,6,0.4,2,8,1.0,1.0,1.0 -2,2,6,0.4,2,9,1.0,1.0,1.0 -2,2,10,0.4,2,0,1.0,1.0,1.0 -2,2,10,0.4,2,1,1.0,1.0,1.0 -2,2,10,0.4,2,2,1.0,1.0,1.0 -2,2,15,0.4,2,0,1.0,1.0,1.0 -2,2,15,0.4,2,1,1.0,1.0,1.0 -2,2,15,0.4,2,2,1.0,1.0,1.0 -2,2,20,0.4,2,0,0.961,1.0,0.925 -2,2,20,0.4,2,1,0.87,1.0,0.769 -2,2,20,0.4,2,2,0.963,1.0,0.929 -2,2,3,0.1,3,0,1.0,1.0,1.0 -2,2,3,0.1,3,1,1.0,1.0,1.0 -2,2,3,0.1,3,2,1.0,1.0,1.0 -2,2,3,0.1,3,3,0.8,0.667,1.0 -2,2,3,0.1,3,4,1.0,1.0,1.0 -2,2,3,0.1,3,5,1.0,1.0,1.0 -2,2,3,0.1,3,6,0.667,0.5,1.0 -2,2,3,0.1,3,7,0.8,0.667,1.0 -2,2,3,0.1,3,8,0.8,0.667,1.0 -2,2,3,0.1,3,9,1.0,1.0,1.0 -2,2,4,0.1,3,0,0.857,0.75,1.0 -2,2,4,0.1,3,1,0.667,0.5,1.0 -2,2,4,0.1,3,2,0.857,0.75,1.0 -2,2,4,0.1,3,3,1.0,1.0,1.0 -2,2,4,0.1,3,4,1.0,1.0,1.0 -2,2,4,0.1,3,5,0.75,0.6,1.0 -2,2,4,0.1,3,6,1.0,1.0,1.0 -2,2,4,0.1,3,7,1.0,1.0,1.0 -2,2,4,0.1,3,8,0.8,0.667,1.0 -2,2,4,0.1,3,9,1.0,1.0,1.0 -2,2,5,0.1,3,0,0.889,0.8,1.0 -2,2,5,0.1,3,1,1.0,1.0,1.0 -2,2,5,0.1,3,2,1.0,1.0,1.0 -2,2,5,0.1,3,3,0.889,0.8,1.0 -2,2,5,0.1,3,4,1.0,1.0,1.0 -2,2,5,0.1,3,5,0.769,0.625,1.0 -2,2,5,0.1,3,6,0.727,0.571,1.0 -2,2,5,0.1,3,7,0.889,0.8,1.0 -2,2,5,0.1,3,8,1.0,1.0,1.0 -2,2,5,0.1,3,9,1.0,1.0,1.0 -2,2,6,0.1,3,0,0.923,0.857,1.0 -2,2,6,0.1,3,1,1.0,1.0,1.0 -2,2,6,0.1,3,2,1.0,1.0,1.0 -2,2,6,0.1,3,3,0.857,0.75,1.0 -2,2,6,0.1,3,4,1.0,1.0,1.0 -2,2,6,0.1,3,5,1.0,1.0,1.0 -2,2,6,0.1,3,6,0.8,0.667,1.0 -2,2,6,0.1,3,7,0.909,0.833,1.0 -2,2,6,0.1,3,8,1.0,1.0,1.0 -2,2,6,0.1,3,9,0.889,0.8,1.0 -2,2,10,0.1,3,0,0.941,0.889,1.0 -2,2,10,0.1,3,1,1.0,1.0,1.0 -2,2,10,0.1,3,2,0.909,0.833,1.0 -2,2,15,0.1,3,0,0.88,0.786,1.0 -2,2,15,0.1,3,1,0.939,0.885,1.0 -2,2,15,0.1,3,2,0.955,0.913,1.0 -2,2,20,0.1,3,0,0.967,0.936,1.0 -2,2,20,0.1,3,1,0.98,0.961,1.0 -2,2,20,0.1,3,2,0.945,0.896,1.0 -2,2,3,0.2,3,0,1.0,1.0,1.0 -2,2,3,0.2,3,1,1.0,1.0,1.0 -2,2,3,0.2,3,2,0.8,0.667,1.0 -2,2,3,0.2,3,3,1.0,1.0,1.0 -2,2,3,0.2,3,4,1.0,1.0,1.0 -2,2,3,0.2,3,5,1.0,1.0,1.0 -2,2,3,0.2,3,6,1.0,1.0,1.0 -2,2,3,0.2,3,7,1.0,1.0,1.0 -2,2,3,0.2,3,8,1.0,1.0,1.0 -2,2,3,0.2,3,9,0.857,0.75,1.0 -2,2,4,0.2,3,0,0.857,0.75,1.0 -2,2,4,0.2,3,1,1.0,1.0,1.0 -2,2,4,0.2,3,2,0.889,0.8,1.0 -2,2,4,0.2,3,3,1.0,1.0,1.0 -2,2,4,0.2,3,4,0.889,0.8,1.0 -2,2,4,0.2,3,5,1.0,1.0,1.0 -2,2,4,0.2,3,6,1.0,1.0,1.0 -2,2,4,0.2,3,7,1.0,1.0,1.0 -2,2,4,0.2,3,8,0.857,0.75,1.0 -2,2,4,0.2,3,9,1.0,1.0,1.0 -2,2,5,0.2,3,0,1.0,1.0,1.0 -2,2,5,0.2,3,1,1.0,1.0,1.0 -2,2,5,0.2,3,2,0.909,0.833,1.0 -2,2,5,0.2,3,3,0.941,0.889,1.0 -2,2,5,0.2,3,4,1.0,1.0,1.0 -2,2,5,0.2,3,5,1.0,1.0,1.0 -2,2,5,0.2,3,6,1.0,1.0,1.0 -2,2,5,0.2,3,7,0.75,0.6,1.0 -2,2,5,0.2,3,8,0.8,0.667,1.0 -2,2,5,0.2,3,9,0.909,0.833,1.0 -2,2,6,0.2,3,0,1.0,1.0,1.0 -2,2,6,0.2,3,1,0.923,0.857,1.0 -2,2,6,0.2,3,2,1.0,1.0,1.0 -2,2,6,0.2,3,3,1.0,1.0,1.0 -2,2,6,0.2,3,4,1.0,1.0,1.0 -2,2,6,0.2,3,5,0.727,0.571,1.0 -2,2,6,0.2,3,6,1.0,1.0,1.0 -2,2,6,0.2,3,7,1.0,1.0,1.0 -2,2,6,0.2,3,8,0.933,0.875,1.0 -2,2,6,0.2,3,9,1.0,1.0,1.0 -2,2,10,0.2,3,0,0.979,0.958,1.0 -2,2,10,0.2,3,1,1.0,1.0,1.0 -2,2,10,0.2,3,2,0.971,0.944,1.0 -2,2,15,0.2,3,0,1.0,1.0,1.0 -2,2,15,0.2,3,1,0.94,0.975,0.907 -2,2,15,0.2,3,2,1.0,1.0,1.0 -2,2,20,0.2,3,0,0.992,0.984,1.0 -2,2,20,0.2,3,1,0.993,1.0,0.986 -2,2,20,0.2,3,2,0.969,1.0,0.939 -2,2,3,0.3,3,0,1.0,1.0,1.0 -2,2,3,0.3,3,1,1.0,1.0,1.0 -2,2,3,0.3,3,2,1.0,1.0,1.0 -2,2,3,0.3,3,3,1.0,1.0,1.0 -2,2,3,0.3,3,4,1.0,1.0,1.0 -2,2,3,0.3,3,5,0.857,0.75,1.0 -2,2,3,0.3,3,6,1.0,1.0,1.0 -2,2,3,0.3,3,7,1.0,1.0,1.0 -2,2,3,0.3,3,8,1.0,1.0,1.0 -2,2,3,0.3,3,9,1.0,1.0,1.0 -2,2,4,0.3,3,0,1.0,1.0,1.0 -2,2,4,0.3,3,1,1.0,1.0,1.0 -2,2,4,0.3,3,2,1.0,1.0,1.0 -2,2,4,0.3,3,3,1.0,1.0,1.0 -2,2,4,0.3,3,4,0.909,0.833,1.0 -2,2,4,0.3,3,5,1.0,1.0,1.0 -2,2,4,0.3,3,6,0.909,0.833,1.0 -2,2,4,0.3,3,7,1.0,1.0,1.0 -2,2,4,0.3,3,8,1.0,1.0,1.0 -2,2,4,0.3,3,9,1.0,1.0,1.0 -2,2,5,0.3,3,0,0.933,0.875,1.0 -2,2,5,0.3,3,1,1.0,1.0,1.0 -2,2,5,0.3,3,2,1.0,1.0,1.0 -2,2,5,0.3,3,3,0.889,0.8,1.0 -2,2,5,0.3,3,4,1.0,1.0,1.0 -2,2,5,0.3,3,5,0.941,0.889,1.0 -2,2,5,0.3,3,6,1.0,1.0,1.0 -2,2,5,0.3,3,7,0.923,0.857,1.0 -2,2,5,0.3,3,8,1.0,1.0,1.0 -2,2,5,0.3,3,9,0.889,0.8,1.0 -2,2,6,0.3,3,0,1.0,1.0,1.0 -2,2,6,0.3,3,1,0.952,0.909,1.0 -2,2,6,0.3,3,2,1.0,1.0,1.0 -2,2,6,0.3,3,3,0.933,0.875,1.0 -2,2,6,0.3,3,4,1.0,1.0,1.0 -2,2,6,0.3,3,5,0.952,0.909,1.0 -2,2,6,0.3,3,6,0.96,0.923,1.0 -2,2,6,0.3,3,7,0.957,0.917,1.0 -2,2,6,0.3,3,8,1.0,1.0,1.0 -2,2,6,0.3,3,9,0.8,0.667,1.0 -2,2,10,0.3,3,0,0.952,0.938,0.968 -2,2,10,0.3,3,1,0.969,0.939,1.0 -2,2,10,0.3,3,2,0.966,0.933,1.0 -2,2,15,0.3,3,0,1.0,1.0,1.0 -2,2,15,0.3,3,1,0.959,1.0,0.922 -2,2,15,0.3,3,2,0.885,1.0,0.794 -2,2,20,0.3,3,0,0.92,1.0,0.851 -2,2,20,0.3,3,1,0.758,0.986,0.615 -2,2,20,0.3,3,2,0.777,0.988,0.64 -2,2,3,0.4,3,0,1.0,1.0,1.0 -2,2,3,0.4,3,1,0.8,0.667,1.0 -2,2,3,0.4,3,2,1.0,1.0,1.0 -2,2,3,0.4,3,3,0.889,0.8,1.0 -2,2,3,0.4,3,4,1.0,1.0,1.0 -2,2,3,0.4,3,5,0.8,0.667,1.0 -2,2,3,0.4,3,6,1.0,1.0,1.0 -2,2,3,0.4,3,7,1.0,1.0,1.0 -2,2,3,0.4,3,8,1.0,1.0,1.0 -2,2,3,0.4,3,9,1.0,1.0,1.0 -2,2,4,0.4,3,0,1.0,1.0,1.0 -2,2,4,0.4,3,1,0.933,0.875,1.0 -2,2,4,0.4,3,2,1.0,1.0,1.0 -2,2,4,0.4,3,3,1.0,1.0,1.0 -2,2,4,0.4,3,4,0.923,0.857,1.0 -2,2,4,0.4,3,5,1.0,1.0,1.0 -2,2,4,0.4,3,6,0.889,0.8,1.0 -2,2,4,0.4,3,7,0.889,0.8,1.0 -2,2,4,0.4,3,8,1.0,1.0,1.0 -2,2,4,0.4,3,9,0.8,0.667,1.0 -2,2,5,0.4,3,0,0.909,0.833,1.0 -2,2,5,0.4,3,1,1.0,1.0,1.0 -2,2,5,0.4,3,2,0.941,0.889,1.0 -2,2,5,0.4,3,3,0.923,0.857,1.0 -2,2,5,0.4,3,4,0.923,0.857,1.0 -2,2,5,0.4,3,5,0.941,0.889,1.0 -2,2,5,0.4,3,6,0.889,0.8,1.0 -2,2,5,0.4,3,7,1.0,1.0,1.0 -2,2,5,0.4,3,8,1.0,1.0,1.0 -2,2,5,0.4,3,9,0.952,0.909,1.0 -2,2,6,0.4,3,0,1.0,1.0,1.0 -2,2,6,0.4,3,1,0.929,0.867,1.0 -2,2,6,0.4,3,2,0.966,0.933,1.0 -2,2,6,0.4,3,3,0.857,0.75,1.0 -2,2,6,0.4,3,4,0.968,0.938,1.0 -2,2,6,0.4,3,5,1.0,1.0,1.0 -2,2,6,0.4,3,6,0.947,0.9,1.0 -2,2,6,0.4,3,7,0.963,0.929,1.0 -2,2,6,0.4,3,8,0.966,0.933,1.0 -2,2,6,0.4,3,9,0.947,0.9,1.0 -2,2,10,0.4,3,0,1.0,1.0,1.0 -2,2,10,0.4,3,1,0.932,0.971,0.895 -2,2,10,0.4,3,2,1.0,1.0,1.0 -2,2,15,0.4,3,0,0.863,0.985,0.767 -2,2,15,0.4,3,1,0.78,0.982,0.647 -2,2,15,0.4,3,2,0.958,1.0,0.92 -2,2,20,0.4,3,0,0.5,0.98,0.336 -2,2,20,0.4,3,1,0.635,1.0,0.465 -2,2,20,0.4,3,2,0.436,0.936,0.284 -2,2,3,0.1,4,0,1.0,1.0,1.0 -2,2,3,0.1,4,1,0.667,0.5,1.0 -2,2,3,0.1,4,2,0.8,0.667,1.0 -2,2,3,0.1,4,3,0.8,0.667,1.0 -2,2,3,0.1,4,4,0.8,0.667,1.0 -2,2,3,0.1,4,5,1.0,1.0,1.0 -2,2,3,0.1,4,6,0.8,0.667,1.0 -2,2,3,0.1,4,7,1.0,1.0,1.0 -2,2,3,0.1,4,8,0.75,0.6,1.0 -2,2,3,0.1,4,9,0.667,0.5,1.0 -2,2,4,0.1,4,0,0.889,0.8,1.0 -2,2,4,0.1,4,1,0.571,0.4,1.0 -2,2,4,0.1,4,2,1.0,1.0,1.0 -2,2,4,0.1,4,3,0.667,0.5,1.0 -2,2,4,0.1,4,4,0.667,0.5,1.0 -2,2,4,0.1,4,5,0.571,0.4,1.0 -2,2,4,0.1,4,6,0.889,0.8,1.0 -2,2,4,0.1,4,7,0.571,0.4,1.0 -2,2,4,0.1,4,8,0.8,0.667,1.0 -2,2,4,0.1,4,9,0.833,0.714,1.0 -2,2,5,0.1,4,0,0.857,0.75,1.0 -2,2,5,0.1,4,1,0.778,0.636,1.0 -2,2,5,0.1,4,2,0.727,0.571,1.0 -2,2,5,0.1,4,3,0.727,0.571,1.0 -2,2,5,0.1,4,4,0.8,0.667,1.0 -2,2,5,0.1,4,5,0.75,0.6,1.0 -2,2,5,0.1,4,6,0.667,0.5,1.0 -2,2,5,0.1,4,7,0.8,0.667,1.0 -2,2,5,0.1,4,8,0.889,0.8,1.0 -2,2,5,0.1,4,9,0.857,0.75,1.0 -2,2,6,0.1,4,0,0.8,0.667,1.0 -2,2,6,0.1,4,1,0.667,0.5,1.0 -2,2,6,0.1,4,2,0.727,0.571,1.0 -2,2,6,0.1,4,3,0.615,0.444,1.0 -2,2,6,0.1,4,4,0.8,0.667,1.0 -2,2,6,0.1,4,5,0.8,0.667,1.0 -2,2,6,0.1,4,6,0.714,0.556,1.0 -2,2,6,0.1,4,7,0.824,0.7,1.0 -2,2,6,0.1,4,8,0.909,0.833,1.0 -2,2,6,0.1,4,9,0.75,0.6,1.0 -2,2,10,0.1,4,0,0.688,0.524,1.0 -2,2,10,0.1,4,1,0.821,0.696,1.0 -2,2,10,0.1,4,2,0.774,0.632,1.0 -2,2,15,0.1,4,0,0.833,0.714,1.0 -2,2,15,0.1,4,1,0.717,0.559,1.0 -2,2,15,0.1,4,2,0.787,0.649,1.0 -2,2,3,0.2,4,0,0.857,0.75,1.0 -2,2,3,0.2,4,1,1.0,1.0,1.0 -2,2,3,0.2,4,2,0.8,0.667,1.0 -2,2,3,0.2,4,3,0.8,0.667,1.0 -2,2,3,0.2,4,4,0.75,0.6,1.0 -2,2,3,0.2,4,5,0.667,0.5,1.0 -2,2,3,0.2,4,6,0.857,0.75,1.0 -2,2,3,0.2,4,7,1.0,1.0,1.0 -2,2,3,0.2,4,8,0.8,0.667,1.0 -2,2,3,0.2,4,9,0.857,0.75,1.0 -2,2,4,0.2,4,0,1.0,1.0,1.0 -2,2,4,0.2,4,1,0.857,0.75,1.0 -2,2,4,0.2,4,2,0.857,0.75,1.0 -2,2,4,0.2,4,3,0.75,0.6,1.0 -2,2,4,0.2,4,4,0.824,0.7,1.0 -2,2,4,0.2,4,5,1.0,1.0,1.0 -2,2,4,0.2,4,6,0.857,0.75,1.0 -2,2,4,0.2,4,7,1.0,1.0,1.0 -2,2,4,0.2,4,8,1.0,1.0,1.0 -2,2,4,0.2,4,9,1.0,1.0,1.0 -2,2,5,0.2,4,0,1.0,1.0,1.0 -2,2,5,0.2,4,1,0.875,0.778,1.0 -2,2,5,0.2,4,2,0.769,0.625,1.0 -2,2,5,0.2,4,3,0.769,0.625,1.0 -2,2,5,0.2,4,4,0.923,0.857,1.0 -2,2,5,0.2,4,5,0.933,0.875,1.0 -2,2,5,0.2,4,6,1.0,1.0,1.0 -2,2,5,0.2,4,7,0.545,0.375,1.0 -2,2,5,0.2,4,8,0.857,0.75,1.0 -2,2,5,0.2,4,9,0.909,0.833,1.0 -2,2,6,0.2,4,0,0.9,0.818,1.0 -2,2,6,0.2,4,1,0.933,0.875,1.0 -2,2,6,0.2,4,2,0.778,0.636,1.0 -2,2,6,0.2,4,3,0.778,0.636,1.0 -2,2,6,0.2,4,4,0.8,0.667,1.0 -2,2,6,0.2,4,5,0.833,0.714,1.0 -2,2,6,0.2,4,6,0.696,0.533,1.0 -2,2,6,0.2,4,7,0.706,0.545,1.0 -2,2,6,0.2,4,8,0.7,0.538,1.0 -2,2,6,0.2,4,9,1.0,1.0,1.0 -2,2,10,0.2,4,0,0.837,0.72,1.0 -2,2,10,0.2,4,1,0.898,0.815,1.0 -2,2,10,0.2,4,2,0.833,0.714,1.0 -2,2,15,0.2,4,0,0.932,0.872,1.0 -2,2,15,0.2,4,1,0.921,0.891,0.953 -2,2,15,0.2,4,2,0.932,0.873,1.0 -2,2,3,0.3,4,0,0.8,0.667,1.0 -2,2,3,0.3,4,1,0.667,0.5,1.0 -2,2,3,0.3,4,2,1.0,1.0,1.0 -2,2,3,0.3,4,3,1.0,1.0,1.0 -2,2,3,0.3,4,4,1.0,1.0,1.0 -2,2,3,0.3,4,5,0.8,0.667,1.0 -2,2,3,0.3,4,6,0.667,0.5,1.0 -2,2,3,0.3,4,7,1.0,1.0,1.0 -2,2,3,0.3,4,8,0.857,0.75,1.0 -2,2,3,0.3,4,9,0.8,0.667,1.0 -2,2,4,0.3,4,0,0.889,0.8,1.0 -2,2,4,0.3,4,1,0.833,0.714,1.0 -2,2,4,0.3,4,2,0.923,0.857,1.0 -2,2,4,0.3,4,3,0.8,0.667,1.0 -2,2,4,0.3,4,4,0.909,0.833,1.0 -2,2,4,0.3,4,5,0.8,0.667,1.0 -2,2,4,0.3,4,6,0.833,0.714,1.0 -2,2,4,0.3,4,7,0.889,0.8,1.0 -2,2,4,0.3,4,8,0.889,0.8,1.0 -2,2,4,0.3,4,9,0.933,0.875,1.0 -2,2,5,0.3,4,0,0.923,0.857,1.0 -2,2,5,0.3,4,1,0.737,0.583,1.0 -2,2,5,0.3,4,2,0.917,0.846,1.0 -2,2,5,0.3,4,3,0.933,0.875,1.0 -2,2,5,0.3,4,4,0.9,0.818,1.0 -2,2,5,0.3,4,5,0.923,0.857,1.0 -2,2,5,0.3,4,6,0.8,0.667,1.0 -2,2,5,0.3,4,7,0.833,0.714,1.0 -2,2,5,0.3,4,8,0.769,0.625,1.0 -2,2,5,0.3,4,9,0.889,0.8,1.0 -2,2,6,0.3,4,0,0.833,0.714,1.0 -2,2,6,0.3,4,1,0.87,0.769,1.0 -2,2,6,0.3,4,2,0.88,0.786,1.0 -2,2,6,0.3,4,3,0.917,0.846,1.0 -2,2,6,0.3,4,4,0.737,0.583,1.0 -2,2,6,0.3,4,5,0.897,0.812,1.0 -2,2,6,0.3,4,6,0.714,0.556,1.0 -2,2,6,0.3,4,7,0.947,0.9,1.0 -2,2,6,0.3,4,8,0.889,0.8,1.0 -2,2,6,0.3,4,9,0.818,0.692,1.0 -2,2,10,0.3,4,0,0.943,0.893,1.0 -2,2,10,0.3,4,1,0.848,0.8,0.903 -2,2,10,0.3,4,2,0.852,0.742,1.0 -2,2,15,0.3,4,0,0.8,0.667,1.0 -2,2,15,0.3,4,1,0.708,0.548,1.0 -2,2,15,0.3,4,2,0.833,0.714,1.0 -2,2,3,0.4,4,0,0.889,0.8,1.0 -2,2,3,0.4,4,1,0.857,0.75,1.0 -2,2,3,0.4,4,2,0.75,0.6,1.0 -2,2,3,0.4,4,3,0.857,0.75,1.0 -2,2,3,0.4,4,4,0.857,0.75,1.0 -2,2,3,0.4,4,5,1.0,1.0,1.0 -2,2,3,0.4,4,6,0.8,0.667,1.0 -2,2,3,0.4,4,7,0.8,0.667,1.0 -2,2,3,0.4,4,8,0.889,0.8,1.0 -2,2,3,0.4,4,9,1.0,1.0,1.0 -2,2,4,0.4,4,0,0.923,0.857,1.0 -2,2,4,0.4,4,1,0.933,0.875,1.0 -2,2,4,0.4,4,2,1.0,1.0,1.0 -2,2,4,0.4,4,3,0.75,0.6,1.0 -2,2,4,0.4,4,4,1.0,1.0,1.0 -2,2,4,0.4,4,5,0.857,0.75,1.0 -2,2,4,0.4,4,6,0.889,0.8,1.0 -2,2,4,0.4,4,7,0.889,0.8,1.0 -2,2,4,0.4,4,8,0.667,0.5,1.0 -2,2,4,0.4,4,9,0.833,0.714,1.0 -2,2,5,0.4,4,0,0.778,0.636,1.0 -2,2,5,0.4,4,1,0.842,0.727,1.0 -2,2,5,0.4,4,2,0.909,0.833,1.0 -2,2,5,0.4,4,3,0.857,0.75,1.0 -2,2,5,0.4,4,4,0.966,0.933,1.0 -2,2,5,0.4,4,5,0.778,0.636,1.0 -2,2,5,0.4,4,6,0.8,0.667,1.0 -2,2,5,0.4,4,7,0.714,0.556,1.0 -2,2,5,0.4,4,8,0.8,0.667,1.0 -2,2,5,0.4,4,9,0.737,0.583,1.0 -2,2,6,0.4,4,0,0.815,0.688,1.0 -2,2,6,0.4,4,1,0.889,0.8,1.0 -2,2,6,0.4,4,2,0.929,0.867,1.0 -2,2,6,0.4,4,3,0.875,0.778,1.0 -2,2,6,0.4,4,4,0.706,0.545,1.0 -2,2,6,0.4,4,5,0.88,0.786,1.0 -2,2,6,0.4,4,6,0.889,0.8,1.0 -2,2,6,0.4,4,7,0.815,0.688,1.0 -2,2,6,0.4,4,8,0.938,0.882,1.0 -2,2,6,0.4,4,9,0.857,0.75,1.0 -2,2,10,0.4,4,0,0.972,0.946,1.0 -2,2,10,0.4,4,1,0.927,0.95,0.905 -2,2,10,0.4,4,2,0.892,0.967,0.829 -2,2,15,0.4,4,0,0.691,0.923,0.552 -2,2,15,0.4,4,1,0.815,0.948,0.714 -2,2,15,0.4,4,2,0.794,0.945,0.684 \ No newline at end of file diff --git a/main_package/tests/results/results.csv b/main_package/tests/results/results.csv deleted file mode 100644 index 24d6fc4..0000000 --- a/main_package/tests/results/results.csv +++ /dev/null @@ -1,14 +0,0 @@ -Time,Type,Variables,Density_Network,Cardinality,Index,F1,Precision,Recall - -4.19, -4.078, -4.368, -6.024, -8.198, -10.586, -10.589, -10.447, -10.516, -8.335, -11.243, -11.78, \ No newline at end of file diff --git a/main_package/tests/results/results16-32RAM.csv b/main_package/tests/results/results16-32RAM.csv deleted file mode 100644 index e266adb..0000000 --- a/main_package/tests/results/results16-32RAM.csv +++ /dev/null @@ -1,20 +0,0 @@ -6.255,0,3,0.2,2,0,1.0,1.0,1.0 -7.305,0,4,0.2,2,0,1.0,1.0,1.0 -13.017,0,5,0.2,2,0,1.0,1.0,1.0 -18.742,0,6,0.2,2,0,1.0,1.0,1.0 -47.785,0,10,0.2,2,0,1.0,1.0,1.0 -161.731,0,15,0.2,2,0,1.0,1.0,1.0 -284.029,0,20,0.2,2,0,0.989,0.978,1.0 -7.5,0,3,0.2,3,0,1.0,1.0,1.0 -11.541,0,4,0.2,3,0,1.0,1.0,1.0 -19.318,0,5,0.2,3,0,1.0,1.0,1.0 -29.8,0,6,0.2,3,0,1.0,1.0,1.0 -106.663,0,10,0.2,3,0,1.0,1.0,1.0 -265.436,0,15,0.2,3,0,0.876,1.0,0.78 -511.009,0,20,0.2,3,0,0.95,1.0,0.905 -9.866,0,3,0.2,4,0,1.0,1.0,1.0 -16.127,0,4,0.2,4,0,1.0,1.0,1.0 -25.694,0,5,0.2,4,0,1.0,1.0,1.0 -44.268,0,6,0.2,4,0,1.0,1.0,1.0 -146.875,0,10,0.2,4,0,1.0,1.0,1.0 -403.063,0,15,0.2,4,0,0.935,1.0,0.878 \ No newline at end of file diff --git a/main_package/tests/results/results_tabu.csv b/main_package/tests/results/results_tabu.csv deleted file mode 100644 index 62ee335..0000000 --- a/main_package/tests/results/results_tabu.csv +++ /dev/null @@ -1,1153 +0,0 @@ -Time,Type,Variables,Density_Network,Cardinality,Index,F1,Precision,Recall -89.185,1,15,0.1,3,0,0.88,0.786,1.0 -96.358,1,15,0.1,3,1,0.939,0.885,1.0 -83.178,1,15,0.1,3,2,0.954,0.913,1.0 -70.18,0,15,0.1,3,0,1.0,1.0,1.0 -77.368,0,15,0.1,3,1,1.0,1.0,1.0 -76.239,0,15,0.1,3,2,1.0,1.0,1.0 -286.024,1,20,0.1,3,0,0.967,0.936,1.0 -285.421,1,20,0.1,3,1,0.98,0.961,1.0 -274.174,1,20,0.1,3,2,0.945,0.896,1.0 -232.594,0,20,0.1,3,0,1.0,1.0,1.0 -224.365,0,20,0.1,3,1,1.0,1.0,1.0 -229.797,0,20,0.1,3,2,0.988,1.0,0.977 -18.538,1,10,0.1,3,0,0.941,0.889,1.0 -20.889,1,10,0.1,3,1,1.0,1.0,1.0 -21.828,1,10,0.1,3,2,0.909,0.833,1.0 -24.52,0,10,0.1,3,0,1.0,1.0,1.0 -22.606,0,10,0.1,3,1,1.0,1.0,1.0 -27.887,0,10,0.1,3,2,1.0,1.0,1.0 -4.285,1,6,0.1,3,0,0.923,0.857,1.0 -3.306,1,6,0.1,3,1,1.0,1.0,1.0 -3.262,1,6,0.1,3,2,1.0,1.0,1.0 -4.285,1,6,0.1,3,3,0.857,0.75,1.0 -4.583,1,6,0.1,3,4,1.0,1.0,1.0 -3.21,1,6,0.1,3,5,1.0,1.0,1.0 -3.262,1,6,0.1,3,6,0.8,0.667,1.0 -4.03,1,6,0.1,3,7,0.909,0.833,1.0 -3.195,1,6,0.1,3,8,1.0,1.0,1.0 -3.52,1,6,0.1,3,9,0.889,0.8,1.0 -9.183,0,6,0.1,3,0,1.0,1.0,1.0 -8.894,0,6,0.1,3,1,1.0,1.0,1.0 -8.882,0,6,0.1,3,2,1.0,1.0,1.0 -8.971,0,6,0.1,3,3,1.0,1.0,1.0 -9.391,0,6,0.1,3,4,1.0,1.0,1.0 -9.114,0,6,0.1,3,5,1.0,1.0,1.0 -8.439,0,6,0.1,3,6,1.0,1.0,1.0 -9.54,0,6,0.1,3,7,1.0,1.0,1.0 -9.043,0,6,0.1,3,8,1.0,1.0,1.0 -9.744,0,6,0.1,3,9,1.0,1.0,1.0 -1.921,1,5,0.1,3,0,0.889,0.8,1.0 -1.567,1,5,0.1,3,1,1.0,1.0,1.0 -2.0,1,5,0.1,3,2,1.0,1.0,1.0 -2.105,1,5,0.1,3,3,0.889,0.8,1.0 -2.264,1,5,0.1,3,4,1.0,1.0,1.0 -2.317,1,5,0.1,3,5,0.769,0.625,1.0 -2.244,1,5,0.1,3,6,0.727,0.571,1.0 -1.998,1,5,0.1,3,7,0.889,0.8,1.0 -1.718,1,5,0.1,3,8,1.0,1.0,1.0 -2.387,1,5,0.1,3,9,1.0,1.0,1.0 -7.091,0,5,0.1,3,0,1.0,1.0,1.0 -6.221,0,5,0.1,3,1,1.0,1.0,1.0 -6.945,0,5,0.1,3,2,1.0,1.0,1.0 -7.138,0,5,0.1,3,3,1.0,1.0,1.0 -6.903,0,5,0.1,3,4,1.0,1.0,1.0 -6.972,0,5,0.1,3,5,1.0,1.0,1.0 -7.052,0,5,0.1,3,6,1.0,1.0,1.0 -6.911,0,5,0.1,3,7,1.0,1.0,1.0 -6.843,0,5,0.1,3,8,1.0,1.0,1.0 -8.103,0,5,0.1,3,9,1.0,1.0,1.0 -5.421,0,4,0.1,3,0,1.0,1.0,1.0 -5.777,0,4,0.1,3,1,1.0,1.0,1.0 -5.247,0,4,0.1,3,2,1.0,1.0,1.0 -5.308,0,4,0.1,3,3,1.0,1.0,1.0 -5.678,0,4,0.1,3,4,1.0,1.0,1.0 -5.654,0,4,0.1,3,5,1.0,1.0,1.0 -5.263,0,4,0.1,3,6,1.0,1.0,1.0 -5.632,0,4,0.1,3,7,1.0,1.0,1.0 -5.377,0,4,0.1,3,8,1.0,1.0,1.0 -5.509,0,4,0.1,3,9,1.0,1.0,1.0 -1.269,1,4,0.1,3,0,0.857,0.75,1.0 -0.866,1,4,0.1,3,1,0.667,0.5,1.0 -0.916,1,4,0.1,3,2,0.857,0.75,1.0 -0.96,1,4,0.1,3,3,1.0,1.0,1.0 -0.855,1,4,0.1,3,4,1.0,1.0,1.0 -1.211,1,4,0.1,3,5,0.75,0.6,1.0 -0.89,1,4,0.1,3,6,1.0,1.0,1.0 -0.932,1,4,0.1,3,7,1.0,1.0,1.0 -0.711,1,4,0.1,3,8,0.8,0.667,1.0 -0.841,1,4,0.1,3,9,1.0,1.0,1.0 -0.318,1,3,0.1,3,0,1.0,1.0,1.0 -0.327,1,3,0.1,3,1,1.0,1.0,1.0 -0.426,1,3,0.1,3,2,1.0,1.0,1.0 -0.358,1,3,0.1,3,3,0.8,0.667,1.0 -0.316,1,3,0.1,3,4,1.0,1.0,1.0 -0.366,1,3,0.1,3,5,1.0,1.0,1.0 -0.343,1,3,0.1,3,6,0.667,0.5,1.0 -0.348,1,3,0.1,3,7,0.8,0.667,1.0 -0.353,1,3,0.1,3,8,0.8,0.667,1.0 -0.343,1,3,0.1,3,9,1.0,1.0,1.0 -3.851,0,3,0.1,3,0,1.0,1.0,1.0 -4.047,0,3,0.1,3,1,1.0,1.0,1.0 -4.129,0,3,0.1,3,2,1.0,1.0,1.0 -4.26,0,3,0.1,3,3,1.0,1.0,1.0 -4.134,0,3,0.1,3,4,1.0,1.0,1.0 -4.353,0,3,0.1,3,5,1.0,1.0,1.0 -4.904,0,3,0.1,3,6,1.0,1.0,1.0 -4.892,0,3,0.1,3,7,1.0,1.0,1.0 -4.609,0,3,0.1,3,8,1.0,1.0,1.0 -4.58,0,3,0.1,3,9,1.0,1.0,1.0 -0.318,1,3,0.2,3,0,1.0,1.0,1.0 -0.41,1,3,0.2,3,1,1.0,1.0,1.0 -0.297,1,3,0.2,3,2,0.8,0.667,1.0 -0.399,1,3,0.2,3,3,1.0,1.0,1.0 -0.384,1,3,0.2,3,4,1.0,1.0,1.0 -0.355,1,3,0.2,3,5,1.0,1.0,1.0 -0.333,1,3,0.2,3,6,1.0,1.0,1.0 -0.32,1,3,0.2,3,7,1.0,1.0,1.0 -0.385,1,3,0.2,3,8,1.0,1.0,1.0 -0.394,1,3,0.2,3,9,0.857,0.75,1.0 -0.915,1,4,0.2,3,0,0.857,0.75,1.0 -1.087,1,4,0.2,3,1,1.0,1.0,1.0 -0.884,1,4,0.2,3,2,0.889,0.8,1.0 -0.95,1,4,0.2,3,3,1.0,1.0,1.0 -1.204,1,4,0.2,3,4,0.889,0.8,1.0 -0.689,1,4,0.2,3,5,1.0,1.0,1.0 -0.907,1,4,0.2,3,6,1.0,1.0,1.0 -0.884,1,4,0.2,3,7,1.0,1.0,1.0 -0.809,1,4,0.2,3,8,0.857,0.75,1.0 -0.685,1,4,0.2,3,9,1.0,1.0,1.0 -1.899,1,5,0.2,3,0,1.0,1.0,1.0 -2.177,1,5,0.2,3,1,1.0,1.0,1.0 -2.276,1,5,0.2,3,2,0.909,0.833,1.0 -3.268,1,5,0.2,3,3,0.941,0.889,1.0 -2.412,1,5,0.2,3,4,1.0,1.0,1.0 -2.218,1,5,0.2,3,5,1.0,1.0,1.0 -2.093,1,5,0.2,3,6,1.0,1.0,1.0 -1.542,1,5,0.2,3,7,0.75,0.6,1.0 -2.438,1,5,0.2,3,8,0.8,0.667,1.0 -2.503,1,5,0.2,3,9,0.909,0.833,1.0 -3.469,1,6,0.2,3,0,1.0,1.0,1.0 -3.45,1,6,0.2,3,1,0.923,0.857,1.0 -4.485,1,6,0.2,3,2,1.0,1.0,1.0 -2.936,1,6,0.2,3,3,1.0,1.0,1.0 -3.17,1,6,0.2,3,4,1.0,1.0,1.0 -3.033,1,6,0.2,3,5,0.727,0.571,1.0 -3.689,1,6,0.2,3,6,1.0,1.0,1.0 -5.302,1,6,0.2,3,7,1.0,1.0,1.0 -4.174,1,6,0.2,3,8,0.933,0.875,1.0 -3.694,1,6,0.2,3,9,1.0,1.0,1.0 -26.953,1,10,0.2,3,0,0.979,0.958,1.0 -26.558,1,10,0.2,3,1,1.0,1.0,1.0 -25.296,1,10,0.2,3,2,0.971,0.944,1.0 -161.151,1,15,0.2,3,0,1.0,1.0,1.0 -119.37,1,15,0.2,3,1,0.94,0.975,0.907 -141.138,1,15,0.2,3,2,1.0,1.0,1.0 -343.127,1,20,0.2,3,0,0.992,0.984,1.0 -369.146,1,20,0.2,3,1,0.993,1.0,0.986 -439.966,1,20,0.2,3,2,0.969,1.0,0.939 -3.64,0,3,0.2,3,0,1.0,1.0,1.0 -3.925,0,3,0.2,3,1,1.0,1.0,1.0 -3.719,0,3,0.2,3,2,1.0,1.0,1.0 -3.953,0,3,0.2,3,3,1.0,1.0,1.0 -3.883,0,3,0.2,3,4,1.0,1.0,1.0 -3.921,0,3,0.2,3,5,1.0,1.0,1.0 -3.84,0,3,0.2,3,6,1.0,1.0,1.0 -3.809,0,3,0.2,3,7,1.0,1.0,1.0 -3.959,0,3,0.2,3,8,1.0,1.0,1.0 -4.031,0,3,0.2,3,9,1.0,1.0,1.0 -4.679,0,4,0.2,3,0,1.0,1.0,1.0 -5.158,0,4,0.2,3,1,1.0,1.0,1.0 -5.014,0,4,0.2,3,2,1.0,1.0,1.0 -5.116,0,4,0.2,3,3,1.0,1.0,1.0 -5.265,0,4,0.2,3,4,1.0,1.0,1.0 -4.814,0,4,0.2,3,5,1.0,1.0,1.0 -4.996,0,4,0.2,3,6,1.0,1.0,1.0 -4.985,0,4,0.2,3,7,1.0,1.0,1.0 -4.949,0,4,0.2,3,8,1.0,1.0,1.0 -4.733,0,4,0.2,3,9,1.0,1.0,1.0 -6.817,0,5,0.2,3,0,1.0,1.0,1.0 -6.581,0,5,0.2,3,1,1.0,1.0,1.0 -6.608,0,5,0.2,3,2,1.0,1.0,1.0 -7.391,0,5,0.2,3,3,1.0,1.0,1.0 -7.426,0,5,0.2,3,4,1.0,1.0,1.0 -6.317,0,5,0.2,3,5,1.0,1.0,1.0 -6.338,0,5,0.2,3,6,1.0,1.0,1.0 -5.979,0,5,0.2,3,7,1.0,1.0,1.0 -6.797,0,5,0.2,3,8,1.0,1.0,1.0 -6.513,0,5,0.2,3,9,1.0,1.0,1.0 -8.725,0,6,0.2,3,0,1.0,1.0,1.0 -9.161,0,6,0.2,3,1,1.0,1.0,1.0 -9.094,0,6,0.2,3,2,1.0,1.0,1.0 -8.358,0,6,0.2,3,3,1.0,1.0,1.0 -8.459,0,6,0.2,3,4,1.0,1.0,1.0 -8.157,0,6,0.2,3,5,1.0,1.0,1.0 -9.043,0,6,0.2,3,6,1.0,1.0,1.0 -9.535,0,6,0.2,3,7,1.0,1.0,1.0 -8.837,0,6,0.2,3,8,1.0,1.0,1.0 -9.336,0,6,0.2,3,9,1.0,1.0,1.0 -28.779,0,10,0.2,3,0,1.0,1.0,1.0 -30.831,0,10,0.2,3,1,1.0,1.0,1.0 -28.31,0,10,0.2,3,2,1.0,1.0,1.0 -96.291,0,15,0.2,3,0,0.876,1.0,0.78 -95.839,0,15,0.2,3,1,0.838,1.0,0.721 -105.675,0,15,0.2,3,2,0.938,1.0,0.884 -234.928,0,20,0.2,3,0,0.95,1.0,0.905 -247.535,0,20,0.2,3,1,0.916,1.0,0.845 -241.698,0,20,0.2,3,2,0.82,1.0,0.695 -0.434,1,3,0.3,3,0,1.0,1.0,1.0 -0.466,1,3,0.3,3,1,1.0,1.0,1.0 -0.363,1,3,0.3,3,2,1.0,1.0,1.0 -0.41,1,3,0.3,3,3,1.0,1.0,1.0 -0.367,1,3,0.3,3,4,1.0,1.0,1.0 -0.453,1,3,0.3,3,5,0.857,0.75,1.0 -0.422,1,3,0.3,3,6,1.0,1.0,1.0 -0.32,1,3,0.3,3,7,1.0,1.0,1.0 -0.325,1,3,0.3,3,8,1.0,1.0,1.0 -0.368,1,3,0.3,3,9,1.0,1.0,1.0 -0.985,1,4,0.3,3,0,1.0,1.0,1.0 -0.974,1,4,0.3,3,1,1.0,1.0,1.0 -0.98,1,4,0.3,3,2,1.0,1.0,1.0 -1.709,1,4,0.3,3,3,1.0,1.0,1.0 -1.145,1,4,0.3,3,4,0.909,0.833,1.0 -0.825,1,4,0.3,3,5,1.0,1.0,1.0 -1.216,1,4,0.3,3,6,0.909,0.833,1.0 -0.994,1,4,0.3,3,7,1.0,1.0,1.0 -1.306,1,4,0.3,3,8,1.0,1.0,1.0 -1.227,1,4,0.3,3,9,1.0,1.0,1.0 -2.314,1,5,0.3,3,0,0.933,0.875,1.0 -2.307,1,5,0.3,3,1,1.0,1.0,1.0 -2.125,1,5,0.3,3,2,1.0,1.0,1.0 -2.773,1,5,0.3,3,3,0.889,0.8,1.0 -2.657,1,5,0.3,3,4,1.0,1.0,1.0 -2.896,1,5,0.3,3,5,0.941,0.889,1.0 -1.592,1,5,0.3,3,6,1.0,1.0,1.0 -2.394,1,5,0.3,3,7,0.923,0.857,1.0 -2.182,1,5,0.3,3,8,1.0,1.0,1.0 -3.725,1,5,0.3,3,9,0.889,0.8,1.0 -4.207,1,6,0.3,3,0,1.0,1.0,1.0 -5.426,1,6,0.3,3,1,0.952,0.909,1.0 -6.049,1,6,0.3,3,2,1.0,1.0,1.0 -3.973,1,6,0.3,3,3,0.933,0.875,1.0 -7.383,1,6,0.3,3,4,1.0,1.0,1.0 -4.478,1,6,0.3,3,5,0.952,0.909,1.0 -6.23,1,6,0.3,3,6,0.96,0.923,1.0 -4.86,1,6,0.3,3,7,0.957,0.917,1.0 -4.145,1,6,0.3,3,8,1.0,1.0,1.0 -4.398,1,6,0.3,3,9,0.8,0.667,1.0 -35.778,1,10,0.3,3,0,0.952,0.938,0.968 -34.75,1,10,0.3,3,1,0.969,0.939,1.0 -21.66,1,10,0.3,3,2,0.966,0.933,1.0 -1336.782,1,15,0.3,3,0,1.0,1.0,1.0 -153.441,1,15,0.3,3,1,0.959,1.0,0.922 -138.906,1,15,0.3,3,2,0.885,1.0,0.794 -483.147,1,20,0.3,3,0,0.92,1.0,0.851 -394.776,1,20,0.3,3,1,0.758,0.986,0.615 -486.95,1,20,0.3,3,2,0.777,0.988,0.64 -0.468,1,3,0.4,3,0,1.0,1.0,1.0 -0.299,1,3,0.4,3,1,0.8,0.667,1.0 -0.475,1,3,0.4,3,2,1.0,1.0,1.0 -0.432,1,3,0.4,3,3,0.889,0.8,1.0 -0.361,1,3,0.4,3,4,1.0,1.0,1.0 -0.316,1,3,0.4,3,5,0.8,0.667,1.0 -0.35,1,3,0.4,3,6,1.0,1.0,1.0 -0.309,1,3,0.4,3,7,1.0,1.0,1.0 -0.309,1,3,0.4,3,8,1.0,1.0,1.0 -0.417,1,3,0.4,3,9,1.0,1.0,1.0 -1.02,1,4,0.4,3,0,1.0,1.0,1.0 -1.45,1,4,0.4,3,1,0.933,0.875,1.0 -1.251,1,4,0.4,3,2,1.0,1.0,1.0 -1.189,1,4,0.4,3,3,1.0,1.0,1.0 -1.338,1,4,0.4,3,4,0.923,0.857,1.0 -1.128,1,4,0.4,3,5,1.0,1.0,1.0 -0.903,1,4,0.4,3,6,0.889,0.8,1.0 -1.013,1,4,0.4,3,7,0.889,0.8,1.0 -1.203,1,4,0.4,3,8,1.0,1.0,1.0 -1.263,1,4,0.4,3,9,0.8,0.667,1.0 -3.298,1,5,0.4,3,0,0.909,0.833,1.0 -2.563,1,5,0.4,3,1,1.0,1.0,1.0 -2.964,1,5,0.4,3,2,0.941,0.889,1.0 -2.236,1,5,0.4,3,3,0.923,0.857,1.0 -2.517,1,5,0.4,3,4,0.923,0.857,1.0 -3.293,1,5,0.4,3,5,0.941,0.889,1.0 -3.982,1,5,0.4,3,6,0.889,0.8,1.0 -3.11,1,5,0.4,3,7,1.0,1.0,1.0 -2.594,1,5,0.4,3,8,1.0,1.0,1.0 -3.682,1,5,0.4,3,9,0.952,0.909,1.0 -5.849,1,6,0.4,3,0,1.0,1.0,1.0 -6.763,1,6,0.4,3,1,0.929,0.867,1.0 -7.578,1,6,0.4,3,2,0.966,0.933,1.0 -4.927,1,6,0.4,3,3,0.857,0.75,1.0 -6.75,1,6,0.4,3,4,0.968,0.938,1.0 -5.433,1,6,0.4,3,5,1.0,1.0,1.0 -4.761,1,6,0.4,3,6,0.947,0.9,1.0 -6.659,1,6,0.4,3,7,0.963,0.929,1.0 -5.526,1,6,0.4,3,8,0.966,0.933,1.0 -4.485,1,6,0.4,3,9,0.947,0.9,1.0 -52.322,1,10,0.4,3,0,1.0,1.0,1.0 -42.89,1,10,0.4,3,1,0.932,0.971,0.895 -53.392,1,10,0.4,3,2,1.0,1.0,1.0 -255.384,1,15,0.4,3,0,0.863,0.985,0.767 -177.34,1,15,0.4,3,1,0.78,0.982,0.647 -221.834,1,15,0.4,3,2,0.958,1.0,0.92 -323.144,1,20,0.4,3,0,0.5,0.98,0.336 -417.004,1,20,0.4,3,1,0.635,1.0,0.465 -358.291,1,20,0.4,3,2,0.436,0.936,0.284 -4.228,0,3,0.3,3,0,1.0,1.0,1.0 -4.679,0,3,0.3,3,1,1.0,1.0,1.0 -4.582,0,3,0.3,3,2,1.0,1.0,1.0 -4.093,0,3,0.3,3,3,1.0,1.0,1.0 -3.755,0,3,0.3,3,4,1.0,1.0,1.0 -3.775,0,3,0.3,3,5,1.0,1.0,1.0 -3.747,0,3,0.3,3,6,1.0,1.0,1.0 -3.714,0,3,0.3,3,7,1.0,1.0,1.0 -3.783,0,3,0.3,3,8,1.0,1.0,1.0 -4.023,0,3,0.3,3,9,1.0,1.0,1.0 -4.831,0,4,0.3,3,0,1.0,1.0,1.0 -4.893,0,4,0.3,3,1,1.0,1.0,1.0 -4.892,0,4,0.3,3,2,1.0,1.0,1.0 -5.289,0,4,0.3,3,3,1.0,1.0,1.0 -5.529,0,4,0.3,3,4,1.0,1.0,1.0 -5.959,0,4,0.3,3,5,1.0,1.0,1.0 -5.57,0,4,0.3,3,6,1.0,1.0,1.0 -5.571,0,4,0.3,3,7,1.0,1.0,1.0 -5.249,0,4,0.3,3,8,1.0,1.0,1.0 -5.728,0,4,0.3,3,9,1.0,1.0,1.0 -6.842,0,5,0.3,3,0,1.0,1.0,1.0 -6.747,0,5,0.3,3,1,1.0,1.0,1.0 -6.873,0,5,0.3,3,2,1.0,1.0,1.0 -7.045,0,5,0.3,3,3,1.0,1.0,1.0 -7.885,0,5,0.3,3,4,1.0,1.0,1.0 -7.335,0,5,0.3,3,5,1.0,1.0,1.0 -7.019,0,5,0.3,3,6,1.0,1.0,1.0 -7.236,0,5,0.3,3,7,1.0,1.0,1.0 -7.869,0,5,0.3,3,8,1.0,1.0,1.0 -7.327,0,5,0.3,3,9,1.0,1.0,1.0 -10.222,0,6,0.3,3,0,1.0,1.0,1.0 -10.859,0,6,0.3,3,1,1.0,1.0,1.0 -10.408,0,6,0.3,3,2,1.0,1.0,1.0 -9.085,0,6,0.3,3,3,1.0,1.0,1.0 -9.771,0,6,0.3,3,4,1.0,1.0,1.0 -9.554,0,6,0.3,3,5,1.0,1.0,1.0 -10.01,0,6,0.3,3,6,1.0,1.0,1.0 -10.31,0,6,0.3,3,7,1.0,1.0,1.0 -9.55,0,6,0.3,3,8,1.0,1.0,1.0 -9.691,0,6,0.3,3,9,1.0,1.0,1.0 -33.645,0,10,0.3,3,0,0.893,1.0,0.806 -35.127,0,10,0.3,3,1,1.0,1.0,1.0 -26.593,0,10,0.3,3,2,1.0,1.0,1.0 -100.709,0,15,0.3,3,0,0.884,1.0,0.792 -108.355,0,15,0.3,3,1,0.887,1.0,0.797 -94.366,0,15,0.3,3,2,0.788,1.0,0.651 -271.388,0,20,0.3,3,0,0.712,1.0,0.553 -228.641,0,20,0.3,3,1,0.51,1.0,0.342 -217.456,0,20,0.3,3,2,0.438,1.0,0.28 -3.896,0,3,0.4,3,0,1.0,1.0,1.0 -3.748,0,3,0.4,3,1,1.0,1.0,1.0 -4.04,0,3,0.4,3,2,1.0,1.0,1.0 -3.987,0,3,0.4,3,3,1.0,1.0,1.0 -3.943,0,3,0.4,3,4,1.0,1.0,1.0 -3.986,0,3,0.4,3,5,1.0,1.0,1.0 -4.047,0,3,0.4,3,6,1.0,1.0,1.0 -4.014,0,3,0.4,3,7,1.0,1.0,1.0 -3.786,0,3,0.4,3,8,1.0,1.0,1.0 -4.12,0,3,0.4,3,9,1.0,1.0,1.0 -5.357,0,4,0.4,3,0,1.0,1.0,1.0 -5.275,0,4,0.4,3,1,1.0,1.0,1.0 -5.11,0,4,0.4,3,2,1.0,1.0,1.0 -5.222,0,4,0.4,3,3,1.0,1.0,1.0 -5.103,0,4,0.4,3,4,1.0,1.0,1.0 -5.235,0,4,0.4,3,5,1.0,1.0,1.0 -4.9,0,4,0.4,3,6,1.0,1.0,1.0 -4.561,0,4,0.4,3,7,1.0,1.0,1.0 -5.0,0,4,0.4,3,8,1.0,1.0,1.0 -5.178,0,4,0.4,3,9,1.0,1.0,1.0 -6.971,0,5,0.4,3,0,1.0,1.0,1.0 -6.964,0,5,0.4,3,1,1.0,1.0,1.0 -7.318,0,5,0.4,3,2,1.0,1.0,1.0 -6.14,0,5,0.4,3,3,1.0,1.0,1.0 -6.472,0,5,0.4,3,4,1.0,1.0,1.0 -6.793,0,5,0.4,3,5,1.0,1.0,1.0 -6.586,0,5,0.4,3,6,1.0,1.0,1.0 -6.891,0,5,0.4,3,7,1.0,1.0,1.0 -6.809,0,5,0.4,3,8,1.0,1.0,1.0 -6.926,0,5,0.4,3,9,1.0,1.0,1.0 -9.546,0,6,0.4,3,0,1.0,1.0,1.0 -9.71,0,6,0.4,3,1,1.0,1.0,1.0 -9.771,0,6,0.4,3,2,1.0,1.0,1.0 -8.987,0,6,0.4,3,3,1.0,1.0,1.0 -10.362,0,6,0.4,3,4,1.0,1.0,1.0 -9.806,0,6,0.4,3,5,1.0,1.0,1.0 -8.892,0,6,0.4,3,6,1.0,1.0,1.0 -9.96,0,6,0.4,3,7,1.0,1.0,1.0 -9.968,0,6,0.4,3,8,1.0,1.0,1.0 -9.02,0,6,0.4,3,9,1.0,1.0,1.0 -29.557,0,10,0.4,3,0,0.807,1.0,0.676 -33.077,0,10,0.4,3,1,0.899,1.0,0.816 -35.888,0,10,0.4,3,2,1.0,1.0,1.0 -83.804,0,15,0.4,3,0,0.45,1.0,0.291 -79.044,0,15,0.4,3,1,0.482,1.0,0.318 -93.742,0,15,0.4,3,2,0.729,1.0,0.573 -188.057,0,20,0.4,3,0,0.205,1.0,0.114 -185.315,0,20,0.4,3,1,0.236,1.0,0.134 -178.808,0,20,0.4,3,2,0.11,1.0,0.058 -0.217,1,3,0.1,2,0,1.0,1.0,1.0 -0.153,1,3,0.1,2,1,1.0,1.0,1.0 -0.186,1,3,0.1,2,2,1.0,1.0,1.0 -0.198,1,3,0.1,2,3,1.0,1.0,1.0 -0.137,1,3,0.1,2,4,1.0,1.0,1.0 -0.135,1,3,0.1,2,5,1.0,1.0,1.0 -0.137,1,3,0.1,2,6,1.0,1.0,1.0 -0.18,1,3,0.1,2,7,1.0,1.0,1.0 -0.152,1,3,0.1,2,8,1.0,1.0,1.0 -0.151,1,3,0.1,2,9,1.0,1.0,1.0 -0.325,1,4,0.1,2,0,1.0,1.0,1.0 -0.35,1,4,0.1,2,1,1.0,1.0,1.0 -0.346,1,4,0.1,2,2,1.0,1.0,1.0 -0.437,1,4,0.1,2,3,1.0,1.0,1.0 -0.409,1,4,0.1,2,4,1.0,1.0,1.0 -0.4,1,4,0.1,2,5,1.0,1.0,1.0 -0.49,1,4,0.1,2,6,1.0,1.0,1.0 -0.35,1,4,0.1,2,7,1.0,1.0,1.0 -0.455,1,4,0.1,2,8,1.0,1.0,1.0 -0.433,1,4,0.1,2,9,1.0,1.0,1.0 -0.656,1,5,0.1,2,0,1.0,1.0,1.0 -0.833,1,5,0.1,2,1,1.0,1.0,1.0 -1.292,1,5,0.1,2,2,1.0,1.0,1.0 -0.776,1,5,0.1,2,3,1.0,1.0,1.0 -1.099,1,5,0.1,2,4,1.0,1.0,1.0 -1.463,1,5,0.1,2,5,1.0,1.0,1.0 -0.946,1,5,0.1,2,6,1.0,1.0,1.0 -0.929,1,5,0.1,2,7,1.0,1.0,1.0 -0.892,1,5,0.1,2,8,1.0,1.0,1.0 -0.857,1,5,0.1,2,9,1.0,1.0,1.0 -1.577,1,6,0.1,2,0,0.889,1.0,0.8 -1.483,1,6,0.1,2,1,1.0,1.0,1.0 -1.563,1,6,0.1,2,2,1.0,1.0,1.0 -1.998,1,6,0.1,2,3,1.0,1.0,1.0 -1.799,1,6,0.1,2,4,1.0,1.0,1.0 -1.461,1,6,0.1,2,5,1.0,1.0,1.0 -1.972,1,6,0.1,2,6,1.0,1.0,1.0 -1.775,1,6,0.1,2,7,1.0,1.0,1.0 -1.498,1,6,0.1,2,8,1.0,1.0,1.0 -1.762,1,6,0.1,2,9,1.0,1.0,1.0 -12.238,1,10,0.1,2,0,1.0,1.0,1.0 -8.715,1,10,0.1,2,1,1.0,1.0,1.0 -9.8,1,10,0.1,2,2,1.0,1.0,1.0 -50.266,1,15,0.1,2,0,0.982,1.0,0.964 -35.118,1,15,0.1,2,1,1.0,1.0,1.0 -43.414,1,15,0.1,2,2,0.984,1.0,0.968 -115.608,1,20,0.1,2,0,1.0,1.0,1.0 -105.992,1,20,0.1,2,1,1.0,1.0,1.0 -105.024,1,20,0.1,2,2,1.0,1.0,1.0 -0.187,1,3,0.2,2,0,1.0,1.0,1.0 -0.184,1,3,0.2,2,1,1.0,1.0,1.0 -0.194,1,3,0.2,2,2,1.0,1.0,1.0 -0.198,1,3,0.2,2,3,1.0,1.0,1.0 -0.171,1,3,0.2,2,4,1.0,1.0,1.0 -0.137,1,3,0.2,2,5,1.0,1.0,1.0 -0.155,1,3,0.2,2,6,1.0,1.0,1.0 -0.187,1,3,0.2,2,7,1.0,1.0,1.0 -0.186,1,3,0.2,2,8,1.0,1.0,1.0 -0.2,1,3,0.2,2,9,1.0,1.0,1.0 -0.413,1,4,0.2,2,0,1.0,1.0,1.0 -0.375,1,4,0.2,2,1,1.0,1.0,1.0 -0.506,1,4,0.2,2,2,1.0,1.0,1.0 -0.413,1,4,0.2,2,3,1.0,1.0,1.0 -0.446,1,4,0.2,2,4,1.0,1.0,1.0 -0.48,1,4,0.2,2,5,1.0,1.0,1.0 -0.348,1,4,0.2,2,6,1.0,1.0,1.0 -0.365,1,4,0.2,2,7,1.0,1.0,1.0 -0.468,1,4,0.2,2,8,1.0,1.0,1.0 -0.516,1,4,0.2,2,9,1.0,1.0,1.0 -0.961,1,5,0.2,2,0,1.0,1.0,1.0 -1.085,1,5,0.2,2,1,1.0,1.0,1.0 -0.894,1,5,0.2,2,2,1.0,1.0,1.0 -1.024,1,5,0.2,2,3,1.0,1.0,1.0 -0.931,1,5,0.2,2,4,1.0,1.0,1.0 -1.093,1,5,0.2,2,5,1.0,1.0,1.0 -0.822,1,5,0.2,2,6,1.0,1.0,1.0 -0.885,1,5,0.2,2,7,1.0,1.0,1.0 -1.115,1,5,0.2,2,8,1.0,1.0,1.0 -0.761,1,5,0.2,2,9,1.0,1.0,1.0 -1.949,1,6,0.2,2,0,1.0,1.0,1.0 -1.572,1,6,0.2,2,1,1.0,1.0,1.0 -1.718,1,6,0.2,2,2,1.0,1.0,1.0 -1.679,1,6,0.2,2,3,1.0,1.0,1.0 -1.721,1,6,0.2,2,4,1.0,1.0,1.0 -1.635,1,6,0.2,2,5,1.0,1.0,1.0 -1.203,1,6,0.2,2,6,1.0,1.0,1.0 -1.927,1,6,0.2,2,7,1.0,1.0,1.0 -2.162,1,6,0.2,2,8,1.0,1.0,1.0 -1.746,1,6,0.2,2,9,1.0,1.0,1.0 -10.011,1,10,0.2,2,0,0.941,0.941,0.941 -11.99,1,10,0.2,2,1,1.0,1.0,1.0 -10.912,1,10,0.2,2,2,0.966,1.0,0.933 -54.015,1,15,0.2,2,0,0.987,1.0,0.974 -71.46,1,15,0.2,2,1,0.976,1.0,0.953 -71.038,1,15,0.2,2,2,0.979,1.0,0.958 -249.455,1,20,0.2,2,0,0.947,1.0,0.9 -205.531,1,20,0.2,2,1,0.984,1.0,0.969 -184.04,1,20,0.2,2,2,0.987,1.0,0.974 -0.188,1,3,0.3,2,0,1.0,1.0,1.0 -0.196,1,3,0.3,2,1,1.0,1.0,1.0 -0.201,1,3,0.3,2,2,1.0,1.0,1.0 -0.184,1,3,0.3,2,3,1.0,1.0,1.0 -0.196,1,3,0.3,2,4,1.0,1.0,1.0 -0.176,1,3,0.3,2,5,1.0,1.0,1.0 -0.214,1,3,0.3,2,6,1.0,1.0,1.0 -0.195,1,3,0.3,2,7,1.0,1.0,1.0 -0.172,1,3,0.3,2,8,1.0,1.0,1.0 -0.194,1,3,0.3,2,9,1.0,1.0,1.0 -0.456,1,4,0.3,2,0,1.0,1.0,1.0 -0.596,1,4,0.3,2,1,1.0,1.0,1.0 -0.681,1,4,0.3,2,2,1.0,1.0,1.0 -0.63,1,4,0.3,2,3,1.0,1.0,1.0 -0.528,1,4,0.3,2,4,1.0,1.0,1.0 -0.501,1,4,0.3,2,5,1.0,1.0,1.0 -0.527,1,4,0.3,2,6,1.0,1.0,1.0 -0.635,1,4,0.3,2,7,1.0,1.0,1.0 -0.564,1,4,0.3,2,8,1.0,1.0,1.0 -0.489,1,4,0.3,2,9,1.0,1.0,1.0 -1.142,1,5,0.3,2,0,1.0,1.0,1.0 -0.839,1,5,0.3,2,1,1.0,1.0,1.0 -0.725,1,5,0.3,2,2,1.0,1.0,1.0 -1.038,1,5,0.3,2,3,1.0,1.0,1.0 -1.384,1,5,0.3,2,4,1.0,1.0,1.0 -1.024,1,5,0.3,2,5,1.0,1.0,1.0 -0.701,1,5,0.3,2,6,1.0,1.0,1.0 -1.81,1,5,0.3,2,7,1.0,1.0,1.0 -1.75,1,5,0.3,2,8,1.0,1.0,1.0 -1.087,1,5,0.3,2,9,1.0,1.0,1.0 -1.639,1,6,0.3,2,0,1.0,1.0,1.0 -1.895,1,6,0.3,2,1,1.0,1.0,1.0 -2.144,1,6,0.3,2,2,1.0,1.0,1.0 -2.461,1,6,0.3,2,3,1.0,1.0,1.0 -1.734,1,6,0.3,2,4,0.941,1.0,0.889 -2.732,1,6,0.3,2,5,1.0,1.0,1.0 -1.464,1,6,0.3,2,6,1.0,1.0,1.0 -2.079,1,6,0.3,2,7,0.941,1.0,0.889 -1.765,1,6,0.3,2,8,1.0,1.0,1.0 -3.043,1,6,0.3,2,9,1.0,1.0,1.0 -13.001,1,10,0.3,2,0,1.0,1.0,1.0 -16.57,1,10,0.3,2,1,0.98,1.0,0.96 -15.009,1,10,0.3,2,2,0.98,1.0,0.96 -81.787,1,15,0.3,2,0,0.972,1.0,0.945 -77.374,1,15,0.3,2,1,0.963,1.0,0.929 -83.046,1,15,0.3,2,2,0.958,1.0,0.919 -372.13,1,20,0.3,2,0,0.913,1.0,0.84 -271.56,1,20,0.3,2,1,0.933,1.0,0.874 -246.234,1,20,0.3,2,2,0.884,1.0,0.793 -0.19,1,3,0.4,2,0,1.0,1.0,1.0 -0.19,1,3,0.4,2,1,1.0,1.0,1.0 -0.153,1,3,0.4,2,2,1.0,1.0,1.0 -0.222,1,3,0.4,2,3,1.0,1.0,1.0 -0.162,1,3,0.4,2,4,1.0,1.0,1.0 -0.23,1,3,0.4,2,5,1.0,1.0,1.0 -0.235,1,3,0.4,2,6,1.0,1.0,1.0 -0.221,1,3,0.4,2,7,1.0,1.0,1.0 -0.228,1,3,0.4,2,8,1.0,1.0,1.0 -0.206,1,3,0.4,2,9,1.0,1.0,1.0 -0.462,1,4,0.4,2,0,1.0,1.0,1.0 -0.646,1,4,0.4,2,1,1.0,1.0,1.0 -0.414,1,4,0.4,2,2,1.0,1.0,1.0 -0.674,1,4,0.4,2,3,1.0,1.0,1.0 -0.472,1,4,0.4,2,4,1.0,1.0,1.0 -0.622,1,4,0.4,2,5,0.923,0.857,1.0 -0.541,1,4,0.4,2,6,1.0,1.0,1.0 -0.495,1,4,0.4,2,7,1.0,1.0,1.0 -0.514,1,4,0.4,2,8,1.0,1.0,1.0 -0.728,1,4,0.4,2,9,1.0,1.0,1.0 -1.112,1,5,0.4,2,0,1.0,1.0,1.0 -1.929,1,5,0.4,2,1,1.0,1.0,1.0 -1.463,1,5,0.4,2,2,1.0,1.0,1.0 -1.328,1,5,0.4,2,3,1.0,1.0,1.0 -1.133,1,5,0.4,2,4,1.0,1.0,1.0 -1.17,1,5,0.4,2,5,1.0,1.0,1.0 -1.133,1,5,0.4,2,6,1.0,1.0,1.0 -1.158,1,5,0.4,2,7,1.0,1.0,1.0 -2.522,1,5,0.4,2,8,1.0,1.0,1.0 -1.004,1,5,0.4,2,9,1.0,1.0,1.0 -2.917,1,6,0.4,2,0,1.0,1.0,1.0 -2.933,1,6,0.4,2,1,1.0,1.0,1.0 -3.384,1,6,0.4,2,2,1.0,1.0,1.0 -2.534,1,6,0.4,2,3,1.0,1.0,1.0 -2.527,1,6,0.4,2,4,1.0,1.0,1.0 -2.017,1,6,0.4,2,5,1.0,1.0,1.0 -2.605,1,6,0.4,2,6,0.966,1.0,0.933 -2.7,1,6,0.4,2,7,1.0,1.0,1.0 -2.777,1,6,0.4,2,8,1.0,1.0,1.0 -2.13,1,6,0.4,2,9,1.0,1.0,1.0 -30.231,1,10,0.4,2,0,0.976,1.0,0.952 -12.204,1,10,0.4,2,1,0.98,1.0,0.96 -19.849,1,10,0.4,2,2,1.0,1.0,1.0 -127.966,1,15,0.4,2,0,0.94,1.0,0.886 -91.451,1,15,0.4,2,1,0.857,1.0,0.75 -123.172,1,15,0.4,2,2,0.923,1.0,0.857 -259.487,1,20,0.4,2,0,0.685,1.0,0.521 -373.08,1,20,0.4,2,1,0.727,1.0,0.571 -302.251,1,20,0.4,2,2,0.732,1.0,0.577 -3.914,0,3,0.1,2,0,1.0,1.0,1.0 -4.733,0,3,0.1,2,1,1.0,1.0,1.0 -4.274,0,3,0.1,2,2,1.0,1.0,1.0 -4.52,0,3,0.1,2,3,1.0,1.0,1.0 -4.1,0,3,0.1,2,4,1.0,1.0,1.0 -4.176,0,3,0.1,2,5,1.0,1.0,1.0 -4.2,0,3,0.1,2,6,1.0,1.0,1.0 -3.899,0,3,0.1,2,7,1.0,1.0,1.0 -4.445,0,3,0.1,2,8,1.0,1.0,1.0 -4.155,0,3,0.1,2,9,1.0,1.0,1.0 -4.596,0,4,0.1,2,0,1.0,1.0,1.0 -4.082,0,4,0.1,2,1,1.0,1.0,1.0 -4.643,0,4,0.1,2,2,1.0,1.0,1.0 -4.139,0,4,0.1,2,3,1.0,1.0,1.0 -4.442,0,4,0.1,2,4,1.0,1.0,1.0 -4.69,0,4,0.1,2,5,1.0,1.0,1.0 -4.912,0,4,0.1,2,6,1.0,1.0,1.0 -4.036,0,4,0.1,2,7,1.0,1.0,1.0 -4.485,0,4,0.1,2,8,1.0,1.0,1.0 -4.61,0,4,0.1,2,9,1.0,1.0,1.0 -4.644,0,5,0.1,2,0,1.0,1.0,1.0 -4.86,0,5,0.1,2,1,1.0,1.0,1.0 -5.355,0,5,0.1,2,2,1.0,1.0,1.0 -5.201,0,5,0.1,2,3,1.0,1.0,1.0 -5.101,0,5,0.1,2,4,1.0,1.0,1.0 -5.815,0,5,0.1,2,5,1.0,1.0,1.0 -5.946,0,5,0.1,2,6,1.0,1.0,1.0 -5.379,0,5,0.1,2,7,1.0,1.0,1.0 -5.101,0,5,0.1,2,8,1.0,1.0,1.0 -4.922,0,5,0.1,2,9,1.0,1.0,1.0 -6.291,0,6,0.1,2,0,0.889,1.0,0.8 -5.751,0,6,0.1,2,1,1.0,1.0,1.0 -5.491,0,6,0.1,2,2,1.0,1.0,1.0 -6.649,0,6,0.1,2,3,1.0,1.0,1.0 -6.203,0,6,0.1,2,4,1.0,1.0,1.0 -5.805,0,6,0.1,2,5,1.0,1.0,1.0 -6.65,0,6,0.1,2,6,1.0,1.0,1.0 -6.331,0,6,0.1,2,7,1.0,1.0,1.0 -5.915,0,6,0.1,2,8,1.0,1.0,1.0 -5.978,0,6,0.1,2,9,1.0,1.0,1.0 -18.99,0,10,0.1,2,0,1.0,1.0,1.0 -14.186,0,10,0.1,2,1,1.0,1.0,1.0 -16.813,0,10,0.1,2,2,1.0,1.0,1.0 -47.531,0,15,0.1,2,0,1.0,1.0,1.0 -42.783,0,15,0.1,2,1,1.0,1.0,1.0 -47.987,0,15,0.1,2,2,1.0,1.0,1.0 -129.567,0,20,0.1,2,0,1.0,1.0,1.0 -122.603,0,20,0.1,2,1,1.0,1.0,1.0 -123.766,0,20,0.1,2,2,1.0,1.0,1.0 -4.109,0,3,0.2,2,0,1.0,1.0,1.0 -4.322,0,3,0.2,2,1,1.0,1.0,1.0 -4.493,0,3,0.2,2,2,1.0,1.0,1.0 -4.063,0,3,0.2,2,3,1.0,1.0,1.0 -4.66,0,3,0.2,2,4,1.0,1.0,1.0 -3.962,0,3,0.2,2,5,1.0,1.0,1.0 -3.922,0,3,0.2,2,6,1.0,1.0,1.0 -4.666,0,3,0.2,2,7,1.0,1.0,1.0 -3.794,0,3,0.2,2,8,1.0,1.0,1.0 -4.016,0,3,0.2,2,9,1.0,1.0,1.0 -4.938,0,4,0.2,2,0,1.0,1.0,1.0 -4.976,0,4,0.2,2,1,1.0,1.0,1.0 -4.782,0,4,0.2,2,2,1.0,1.0,1.0 -4.323,0,4,0.2,2,3,1.0,1.0,1.0 -4.76,0,4,0.2,2,4,1.0,1.0,1.0 -4.343,0,4,0.2,2,5,1.0,1.0,1.0 -4.481,0,4,0.2,2,6,1.0,1.0,1.0 -5.737,0,4,0.2,2,7,1.0,1.0,1.0 -5.848,0,4,0.2,2,8,1.0,1.0,1.0 -4.983,0,4,0.2,2,9,1.0,1.0,1.0 -5.976,0,5,0.2,2,0,1.0,1.0,1.0 -5.914,0,5,0.2,2,1,1.0,1.0,1.0 -5.258,0,5,0.2,2,2,1.0,1.0,1.0 -5.91,0,5,0.2,2,3,1.0,1.0,1.0 -5.601,0,5,0.2,2,4,1.0,1.0,1.0 -5.351,0,5,0.2,2,5,1.0,1.0,1.0 -5.129,0,5,0.2,2,6,1.0,1.0,1.0 -4.733,0,5,0.2,2,7,1.0,1.0,1.0 -5.462,0,5,0.2,2,8,1.0,1.0,1.0 -4.615,0,5,0.2,2,9,1.0,1.0,1.0 -7.951,0,6,0.2,2,0,1.0,1.0,1.0 -7.09,0,6,0.2,2,1,1.0,1.0,1.0 -7.129,0,6,0.2,2,2,1.0,1.0,1.0 -6.375,0,6,0.2,2,3,1.0,1.0,1.0 -6.744,0,6,0.2,2,4,1.0,1.0,1.0 -5.767,0,6,0.2,2,5,1.0,1.0,1.0 -5.896,0,6,0.2,2,6,1.0,1.0,1.0 -6.586,0,6,0.2,2,7,1.0,1.0,1.0 -6.999,0,6,0.2,2,8,1.0,1.0,1.0 -7.048,0,6,0.2,2,9,1.0,1.0,1.0 -16.39,0,10,0.2,2,0,1.0,1.0,1.0 -17.607,0,10,0.2,2,1,1.0,1.0,1.0 -18.24,0,10,0.2,2,2,1.0,1.0,1.0 -62.994,0,15,0.2,2,0,1.0,1.0,1.0 -56.199,0,15,0.2,2,1,1.0,1.0,1.0 -60.651,0,15,0.2,2,2,1.0,1.0,1.0 -165.157,0,20,0.2,2,0,1.0,1.0,1.0 -147.716,0,20,0.2,2,1,1.0,1.0,1.0 -165.653,0,20,0.2,2,2,1.0,1.0,1.0 -4.22,0,3,0.3,2,0,1.0,1.0,1.0 -4.435,0,3,0.3,2,1,1.0,1.0,1.0 -3.979,0,3,0.3,2,2,1.0,1.0,1.0 -3.641,0,3,0.3,2,3,1.0,1.0,1.0 -3.721,0,3,0.3,2,4,1.0,1.0,1.0 -4.117,0,3,0.3,2,5,1.0,1.0,1.0 -3.657,0,3,0.3,2,6,1.0,1.0,1.0 -3.888,0,3,0.3,2,7,1.0,1.0,1.0 -3.619,0,3,0.3,2,8,1.0,1.0,1.0 -4.121,0,3,0.3,2,9,1.0,1.0,1.0 -4.378,0,4,0.3,2,0,1.0,1.0,1.0 -4.845,0,4,0.3,2,1,1.0,1.0,1.0 -4.185,0,4,0.3,2,2,1.0,1.0,1.0 -4.783,0,4,0.3,2,3,1.0,1.0,1.0 -5.361,0,4,0.3,2,4,1.0,1.0,1.0 -4.671,0,4,0.3,2,5,1.0,1.0,1.0 -4.59,0,4,0.3,2,6,1.0,1.0,1.0 -5.01,0,4,0.3,2,7,1.0,1.0,1.0 -4.38,0,4,0.3,2,8,1.0,1.0,1.0 -4.423,0,4,0.3,2,9,1.0,1.0,1.0 -5.913,0,5,0.3,2,0,0.909,1.0,0.833 -5.251,0,5,0.3,2,1,1.0,1.0,1.0 -5.134,0,5,0.3,2,2,1.0,1.0,1.0 -5.608,0,5,0.3,2,3,1.0,1.0,1.0 -5.707,0,5,0.3,2,4,1.0,1.0,1.0 -5.439,0,5,0.3,2,5,1.0,1.0,1.0 -4.947,0,5,0.3,2,6,1.0,1.0,1.0 -5.969,0,5,0.3,2,7,1.0,1.0,1.0 -5.837,0,5,0.3,2,8,1.0,1.0,1.0 -5.493,0,5,0.3,2,9,1.0,1.0,1.0 -6.878,0,6,0.3,2,0,1.0,1.0,1.0 -7.121,0,6,0.3,2,1,1.0,1.0,1.0 -7.131,0,6,0.3,2,2,1.0,1.0,1.0 -7.337,0,6,0.3,2,3,1.0,1.0,1.0 -7.527,0,6,0.3,2,4,0.941,1.0,0.889 -7.248,0,6,0.3,2,5,1.0,1.0,1.0 -6.775,0,6,0.3,2,6,1.0,1.0,1.0 -6.952,0,6,0.3,2,7,1.0,1.0,1.0 -7.454,0,6,0.3,2,8,1.0,1.0,1.0 -7.835,0,6,0.3,2,9,1.0,1.0,1.0 -17.744,0,10,0.3,2,0,1.0,1.0,1.0 -18.538,0,10,0.3,2,1,1.0,1.0,1.0 -20.173,0,10,0.3,2,2,1.0,1.0,1.0 -66.885,0,15,0.3,2,0,1.0,1.0,1.0 -63.485,0,15,0.3,2,1,1.0,1.0,1.0 -60.502,0,15,0.3,2,2,1.0,1.0,1.0 -177.964,0,20,0.3,2,0,1.0,1.0,1.0 -175.469,0,20,0.3,2,1,1.0,1.0,1.0 -191.346,0,20,0.3,2,2,1.0,1.0,1.0 -3.797,0,3,0.4,2,0,1.0,1.0,1.0 -4.005,0,3,0.4,2,1,1.0,1.0,1.0 -3.469,0,3,0.4,2,2,1.0,1.0,1.0 -3.623,0,3,0.4,2,3,1.0,1.0,1.0 -3.849,0,3,0.4,2,4,1.0,1.0,1.0 -3.703,0,3,0.4,2,5,1.0,1.0,1.0 -3.963,0,3,0.4,2,6,1.0,1.0,1.0 -3.565,0,3,0.4,2,7,1.0,1.0,1.0 -3.561,0,3,0.4,2,8,1.0,1.0,1.0 -3.676,0,3,0.4,2,9,1.0,1.0,1.0 -4.196,0,4,0.4,2,0,1.0,1.0,1.0 -4.139,0,4,0.4,2,1,1.0,1.0,1.0 -3.917,0,4,0.4,2,2,1.0,1.0,1.0 -4.196,0,4,0.4,2,3,1.0,1.0,1.0 -4.01,0,4,0.4,2,4,1.0,1.0,1.0 -4.072,0,4,0.4,2,5,1.0,1.0,1.0 -4.359,0,4,0.4,2,6,1.0,1.0,1.0 -4.133,0,4,0.4,2,7,1.0,1.0,1.0 -4.0,0,4,0.4,2,8,1.0,1.0,1.0 -4.226,0,4,0.4,2,9,1.0,1.0,1.0 -4.957,0,5,0.4,2,0,1.0,1.0,1.0 -5.066,0,5,0.4,2,1,1.0,1.0,1.0 -5.011,0,5,0.4,2,2,1.0,1.0,1.0 -5.018,0,5,0.4,2,3,1.0,1.0,1.0 -5.115,0,5,0.4,2,4,1.0,1.0,1.0 -4.97,0,5,0.4,2,5,1.0,1.0,1.0 -4.78,0,5,0.4,2,6,1.0,1.0,1.0 -5.139,0,5,0.4,2,7,1.0,1.0,1.0 -5.471,0,5,0.4,2,8,1.0,1.0,1.0 -4.995,0,5,0.4,2,9,1.0,1.0,1.0 -6.591,0,6,0.4,2,0,1.0,1.0,1.0 -6.558,0,6,0.4,2,1,1.0,1.0,1.0 -6.803,0,6,0.4,2,2,1.0,1.0,1.0 -6.485,0,6,0.4,2,3,1.0,1.0,1.0 -5.938,0,6,0.4,2,4,1.0,1.0,1.0 -6.274,0,6,0.4,2,5,1.0,1.0,1.0 -6.621,0,6,0.4,2,6,1.0,1.0,1.0 -6.392,0,6,0.4,2,7,1.0,1.0,1.0 -6.753,0,6,0.4,2,8,1.0,1.0,1.0 -6.613,0,6,0.4,2,9,1.0,1.0,1.0 -21.158,0,10,0.4,2,0,1.0,1.0,1.0 -15.645,0,10,0.4,2,1,1.0,1.0,1.0 -19.941,0,10,0.4,2,2,1.0,1.0,1.0 -67.137,0,15,0.4,2,0,1.0,1.0,1.0 -76.037,0,15,0.4,2,1,1.0,1.0,1.0 -68.206,0,15,0.4,2,2,1.0,1.0,1.0 -209.516,0,20,0.4,2,0,0.961,1.0,0.925 -187.045,0,20,0.4,2,1,0.87,1.0,0.769 -224.279,0,20,0.4,2,2,0.96,1.0,0.923 -0.613,1,3,0.1,4,0,1.0,1.0,1.0 -0.609,1,3,0.1,4,1,0.667,0.5,1.0 -0.613,1,3,0.1,4,2,0.8,0.667,1.0 -0.606,1,3,0.1,4,3,0.8,0.667,1.0 -0.54,1,3,0.1,4,4,0.8,0.667,1.0 -0.727,1,3,0.1,4,5,1.0,1.0,1.0 -0.665,1,3,0.1,4,6,0.8,0.667,1.0 -0.618,1,3,0.1,4,7,1.0,1.0,1.0 -0.619,1,3,0.1,4,8,0.75,0.6,1.0 -0.504,1,3,0.1,4,9,0.667,0.5,1.0 -1.911,1,4,0.1,4,0,0.889,0.8,1.0 -1.254,1,4,0.1,4,1,0.571,0.4,1.0 -1.682,1,4,0.1,4,2,1.0,1.0,1.0 -1.512,1,4,0.1,4,3,0.667,0.5,1.0 -1.308,1,4,0.1,4,4,0.667,0.5,1.0 -1.584,1,4,0.1,4,5,0.571,0.4,1.0 -1.593,1,4,0.1,4,6,0.889,0.8,1.0 -1.603,1,4,0.1,4,7,0.571,0.4,1.0 -1.331,1,4,0.1,4,8,0.8,0.667,1.0 -1.934,1,4,0.1,4,9,0.833,0.714,1.0 -2.635,1,5,0.1,4,0,0.857,0.75,1.0 -4.108,1,5,0.1,4,1,0.778,0.636,1.0 -3.063,1,5,0.1,4,2,0.727,0.571,1.0 -3.046,1,5,0.1,4,3,0.727,0.571,1.0 -3.021,1,5,0.1,4,4,0.8,0.667,1.0 -2.904,1,5,0.1,4,5,0.75,0.6,1.0 -3.643,1,5,0.1,4,6,0.667,0.5,1.0 -3.079,1,5,0.1,4,7,0.8,0.667,1.0 -3.013,1,5,0.1,4,8,0.889,0.8,1.0 -3.776,1,5,0.1,4,9,0.857,0.75,1.0 -5.269,1,6,0.1,4,0,0.8,0.667,1.0 -5.795,1,6,0.1,4,1,0.667,0.5,1.0 -4.383,1,6,0.1,4,2,0.727,0.571,1.0 -4.819,1,6,0.1,4,3,0.615,0.444,1.0 -6.401,1,6,0.1,4,4,0.8,0.667,1.0 -5.537,1,6,0.1,4,5,0.8,0.667,1.0 -6.634,1,6,0.1,4,6,0.714,0.556,1.0 -5.375,1,6,0.1,4,7,0.824,0.7,1.0 -5.291,1,6,0.1,4,8,0.909,0.833,1.0 -6.153,1,6,0.1,4,9,0.75,0.6,1.0 -32.928,1,10,0.1,4,0,0.688,0.524,1.0 -34.674,1,10,0.1,4,1,0.821,0.696,1.0 -30.713,1,10,0.1,4,2,0.774,0.632,1.0 -160.622,1,15,0.1,4,0,0.833,0.714,1.0 -141.218,1,15,0.1,4,1,0.717,0.559,1.0 -156.825,1,15,0.1,4,2,0.787,0.649,1.0 -0.582,1,3,0.2,4,0,0.857,0.75,1.0 -0.64,1,3,0.2,4,1,1.0,1.0,1.0 -0.551,1,3,0.2,4,2,0.8,0.667,1.0 -0.545,1,3,0.2,4,3,0.8,0.667,1.0 -0.603,1,3,0.2,4,4,0.75,0.6,1.0 -0.63,1,3,0.2,4,5,0.667,0.5,1.0 -0.583,1,3,0.2,4,6,0.857,0.75,1.0 -0.614,1,3,0.2,4,7,1.0,1.0,1.0 -0.498,1,3,0.2,4,8,0.8,0.667,1.0 -0.597,1,3,0.2,4,9,0.857,0.75,1.0 -1.09,1,4,0.2,4,0,1.0,1.0,1.0 -1.332,1,4,0.2,4,1,0.857,0.75,1.0 -1.58,1,4,0.2,4,2,0.857,0.75,1.0 -1.321,1,4,0.2,4,3,0.75,0.6,1.0 -2.033,1,4,0.2,4,4,0.824,0.7,1.0 -1.562,1,4,0.2,4,5,1.0,1.0,1.0 -1.982,1,4,0.2,4,6,0.857,0.75,1.0 -1.194,1,4,0.2,4,7,1.0,1.0,1.0 -1.478,1,4,0.2,4,8,1.0,1.0,1.0 -1.104,1,4,0.2,4,9,1.0,1.0,1.0 -2.701,1,5,0.2,4,0,1.0,1.0,1.0 -3.362,1,5,0.2,4,1,0.875,0.778,1.0 -3.601,1,5,0.2,4,2,0.769,0.625,1.0 -3.415,1,5,0.2,4,3,0.769,0.625,1.0 -2.901,1,5,0.2,4,4,0.923,0.857,1.0 -3.033,1,5,0.2,4,5,0.933,0.875,1.0 -2.537,1,5,0.2,4,6,1.0,1.0,1.0 -3.13,1,5,0.2,4,7,0.545,0.375,1.0 -3.82,1,5,0.2,4,8,0.857,0.75,1.0 -2.683,1,5,0.2,4,9,0.909,0.833,1.0 -6.741,1,6,0.2,4,0,0.9,0.818,1.0 -5.46,1,6,0.2,4,1,0.933,0.875,1.0 -6.838,1,6,0.2,4,2,0.778,0.636,1.0 -6.126,1,6,0.2,4,3,0.778,0.636,1.0 -4.915,1,6,0.2,4,4,0.8,0.667,1.0 -4.452,1,6,0.2,4,5,0.833,0.714,1.0 -7.968,1,6,0.2,4,6,0.696,0.533,1.0 -7.348,1,6,0.2,4,7,0.706,0.545,1.0 -6.326,1,6,0.2,4,8,0.7,0.538,1.0 -7.081,1,6,0.2,4,9,1.0,1.0,1.0 -52.525,1,10,0.2,4,0,0.837,0.72,1.0 -45.067,1,10,0.2,4,1,0.898,0.815,1.0 -41.784,1,10,0.2,4,2,0.833,0.714,1.0 -190.81,1,15,0.2,4,0,0.932,0.872,1.0 -163.946,1,15,0.2,4,1,0.921,0.891,0.953 -219.373,1,15,0.2,4,2,0.932,0.873,1.0 -0.536,1,3,0.3,4,0,0.8,0.667,1.0 -0.499,1,3,0.3,4,1,0.667,0.5,1.0 -0.679,1,3,0.3,4,2,1.0,1.0,1.0 -0.488,1,3,0.3,4,3,1.0,1.0,1.0 -0.508,1,3,0.3,4,4,1.0,1.0,1.0 -0.547,1,3,0.3,4,5,0.8,0.667,1.0 -0.581,1,3,0.3,4,6,0.667,0.5,1.0 -0.596,1,3,0.3,4,7,1.0,1.0,1.0 -0.661,1,3,0.3,4,8,0.857,0.75,1.0 -0.566,1,3,0.3,4,9,0.8,0.667,1.0 -1.918,1,4,0.3,4,0,0.889,0.8,1.0 -1.744,1,4,0.3,4,1,0.833,0.714,1.0 -1.616,1,4,0.3,4,2,0.923,0.857,1.0 -1.122,1,4,0.3,4,3,0.8,0.667,1.0 -1.699,1,4,0.3,4,4,0.909,0.833,1.0 -1.982,1,4,0.3,4,5,0.8,0.667,1.0 -1.733,1,4,0.3,4,6,0.833,0.714,1.0 -1.592,1,4,0.3,4,7,0.889,0.8,1.0 -1.435,1,4,0.3,4,8,0.889,0.8,1.0 -2.049,1,4,0.3,4,9,0.933,0.875,1.0 -3.507,1,5,0.3,4,0,0.923,0.857,1.0 -3.983,1,5,0.3,4,1,0.737,0.583,1.0 -5.556,1,5,0.3,4,2,0.917,0.846,1.0 -3.066,1,5,0.3,4,3,0.933,0.875,1.0 -4.202,1,5,0.3,4,4,0.9,0.818,1.0 -3.499,1,5,0.3,4,5,0.923,0.857,1.0 -3.083,1,5,0.3,4,6,0.8,0.667,1.0 -6.038,1,5,0.3,4,7,0.833,0.714,1.0 -4.173,1,5,0.3,4,8,0.769,0.625,1.0 -3.13,1,5,0.3,4,9,0.889,0.8,1.0 -8.128,1,6,0.3,4,0,0.833,0.714,1.0 -6.663,1,6,0.3,4,1,0.87,0.769,1.0 -7.726,1,6,0.3,4,2,0.88,0.786,1.0 -8.416,1,6,0.3,4,3,0.917,0.846,1.0 -6.013,1,6,0.3,4,4,0.737,0.583,1.0 -9.416,1,6,0.3,4,5,0.897,0.812,1.0 -5.963,1,6,0.3,4,6,0.714,0.556,1.0 -5.789,1,6,0.3,4,7,0.947,0.9,1.0 -8.601,1,6,0.3,4,8,0.889,0.8,1.0 -6.411,1,6,0.3,4,9,0.818,0.692,1.0 -47.81,1,10,0.3,4,0,0.943,0.893,1.0 -59.714,1,10,0.3,4,1,0.848,0.8,0.903 -45.597,1,10,0.3,4,2,0.852,0.742,1.0 -148.935,1,15,0.3,4,0,0.8,0.667,1.0 -131.963,1,15,0.3,4,1,0.708,0.548,1.0 -153.059,1,15,0.3,4,2,0.833,0.714,1.0 -0.642,1,3,0.4,4,0,0.889,0.8,1.0 -0.558,1,3,0.4,4,1,0.857,0.75,1.0 -0.598,1,3,0.4,4,2,0.75,0.6,1.0 -0.706,1,3,0.4,4,3,0.857,0.75,1.0 -0.65,1,3,0.4,4,4,0.857,0.75,1.0 -0.598,1,3,0.4,4,5,1.0,1.0,1.0 -0.561,1,3,0.4,4,6,0.8,0.667,1.0 -0.567,1,3,0.4,4,7,0.8,0.667,1.0 -0.639,1,3,0.4,4,8,0.889,0.8,1.0 -0.519,1,3,0.4,4,9,1.0,1.0,1.0 -1.783,1,4,0.4,4,0,0.923,0.857,1.0 -1.951,1,4,0.4,4,1,0.933,0.875,1.0 -1.651,1,4,0.4,4,2,1.0,1.0,1.0 -1.434,1,4,0.4,4,3,0.75,0.6,1.0 -1.665,1,4,0.4,4,4,1.0,1.0,1.0 -1.28,1,4,0.4,4,5,0.857,0.75,1.0 -2.231,1,4,0.4,4,6,0.889,0.8,1.0 -2.368,1,4,0.4,4,7,0.889,0.8,1.0 -1.298,1,4,0.4,4,8,0.667,0.5,1.0 -2.352,1,4,0.4,4,9,0.833,0.714,1.0 -4.486,1,5,0.4,4,0,0.778,0.636,1.0 -4.287,1,5,0.4,4,1,0.842,0.727,1.0 -7.605,1,5,0.4,4,2,0.909,0.833,1.0 -3.526,1,5,0.4,4,3,0.857,0.75,1.0 -5.554,1,5,0.4,4,4,0.966,0.933,1.0 -3.152,1,5,0.4,4,5,0.778,0.636,1.0 -5.064,1,5,0.4,4,6,0.8,0.667,1.0 -3.705,1,5,0.4,4,7,0.714,0.556,1.0 -4.212,1,5,0.4,4,8,0.8,0.667,1.0 -5.417,1,5,0.4,4,9,0.737,0.583,1.0 -8.794,1,6,0.4,4,0,0.815,0.688,1.0 -10.26,1,6,0.4,4,1,0.889,0.8,1.0 -6.887,1,6,0.4,4,2,0.929,0.867,1.0 -11.176,1,6,0.4,4,3,0.875,0.778,1.0 -6.964,1,6,0.4,4,4,0.706,0.545,1.0 -9.482,1,6,0.4,4,5,0.88,0.786,1.0 -8.018,1,6,0.4,4,6,0.889,0.8,1.0 -9.064,1,6,0.4,4,7,0.815,0.688,1.0 -8.092,1,6,0.4,4,8,0.938,0.882,1.0 -12.492,1,6,0.4,4,9,0.857,0.75,1.0 -64.055,1,10,0.4,4,0,0.972,0.946,1.0 -72.067,1,10,0.4,4,1,0.927,0.95,0.905 -47.943,1,10,0.4,4,2,0.892,0.967,0.829 -224.389,1,15,0.4,4,0,0.691,0.923,0.552 -290.023,1,15,0.4,4,1,0.815,0.948,0.714 -240.671,1,15,0.4,4,2,0.794,0.945,0.684 -5.48,0,3,0.1,4,0,1.0,1.0,1.0 -5.494,0,3,0.1,4,1,1.0,1.0,1.0 -6.251,0,3,0.1,4,2,1.0,1.0,1.0 -5.389,0,3,0.1,4,3,1.0,1.0,1.0 -5.021,0,3,0.1,4,4,1.0,1.0,1.0 -5.885,0,3,0.1,4,5,1.0,1.0,1.0 -5.243,0,3,0.1,4,6,1.0,1.0,1.0 -5.528,0,3,0.1,4,7,1.0,1.0,1.0 -5.356,0,3,0.1,4,8,1.0,1.0,1.0 -5.059,0,3,0.1,4,9,1.0,1.0,1.0 -6.948,0,4,0.1,4,0,1.0,1.0,1.0 -6.797,0,4,0.1,4,1,1.0,1.0,1.0 -7.481,0,4,0.1,4,2,1.0,1.0,1.0 -6.589,0,4,0.1,4,3,1.0,1.0,1.0 -6.907,0,4,0.1,4,4,1.0,1.0,1.0 -7.44,0,4,0.1,4,5,1.0,1.0,1.0 -7.511,0,4,0.1,4,6,1.0,1.0,1.0 -6.949,0,4,0.1,4,7,1.0,1.0,1.0 -7.042,0,4,0.1,4,8,1.0,1.0,1.0 -7.858,0,4,0.1,4,9,1.0,1.0,1.0 -9.522,0,5,0.1,4,0,1.0,1.0,1.0 -10.646,0,5,0.1,4,1,1.0,1.0,1.0 -9.245,0,5,0.1,4,2,1.0,1.0,1.0 -9.782,0,5,0.1,4,3,1.0,1.0,1.0 -9.778,0,5,0.1,4,4,1.0,1.0,1.0 -9.432,0,5,0.1,4,5,1.0,1.0,1.0 -9.69,0,5,0.1,4,6,1.0,1.0,1.0 -9.908,0,5,0.1,4,7,1.0,1.0,1.0 -9.593,0,5,0.1,4,8,1.0,1.0,1.0 -9.94,0,5,0.1,4,9,1.0,1.0,1.0 -12.798,0,6,0.1,4,0,1.0,1.0,1.0 -14.017,0,6,0.1,4,1,1.0,1.0,1.0 -12.614,0,6,0.1,4,2,1.0,1.0,1.0 -12.432,0,6,0.1,4,3,1.0,1.0,1.0 -13.906,0,6,0.1,4,4,1.0,1.0,1.0 -13.621,0,6,0.1,4,5,1.0,1.0,1.0 -13.135,0,6,0.1,4,6,1.0,1.0,1.0 -13.553,0,6,0.1,4,7,1.0,1.0,1.0 -13.528,0,6,0.1,4,8,1.0,1.0,1.0 -13.694,0,6,0.1,4,9,1.0,1.0,1.0 -39.284,0,10,0.1,4,0,1.0,1.0,1.0 -42.762,0,10,0.1,4,1,1.0,1.0,1.0 -40.723,0,10,0.1,4,2,1.0,1.0,1.0 -138.874,0,15,0.1,4,0,1.0,1.0,1.0 -123.908,0,15,0.1,4,1,1.0,1.0,1.0 -130.094,0,15,0.1,4,2,0.884,1.0,0.792 -5.054,0,3,0.2,4,0,1.0,1.0,1.0 -5.288,0,3,0.2,4,1,1.0,1.0,1.0 -5.728,0,3,0.2,4,2,1.0,1.0,1.0 -5.187,0,3,0.2,4,3,1.0,1.0,1.0 -5.174,0,3,0.2,4,4,1.0,1.0,1.0 -5.34,0,3,0.2,4,5,1.0,1.0,1.0 -5.152,0,3,0.2,4,6,1.0,1.0,1.0 -5.184,0,3,0.2,4,7,1.0,1.0,1.0 -5.174,0,3,0.2,4,8,1.0,1.0,1.0 -5.138,0,3,0.2,4,9,1.0,1.0,1.0 -6.888,0,4,0.2,4,0,1.0,1.0,1.0 -6.845,0,4,0.2,4,1,1.0,1.0,1.0 -7.196,0,4,0.2,4,2,1.0,1.0,1.0 -7.401,0,4,0.2,4,3,1.0,1.0,1.0 -7.617,0,4,0.2,4,4,1.0,1.0,1.0 -7.122,0,4,0.2,4,5,1.0,1.0,1.0 -7.41,0,4,0.2,4,6,1.0,1.0,1.0 -7.008,0,4,0.2,4,7,1.0,1.0,1.0 -7.202,0,4,0.2,4,8,1.0,1.0,1.0 -7.116,0,4,0.2,4,9,1.0,1.0,1.0 -9.625,0,5,0.2,4,0,1.0,1.0,1.0 -10.153,0,5,0.2,4,1,1.0,1.0,1.0 -9.764,0,5,0.2,4,2,1.0,1.0,1.0 -9.461,0,5,0.2,4,3,1.0,1.0,1.0 -10.19,0,5,0.2,4,4,1.0,1.0,1.0 -9.681,0,5,0.2,4,5,1.0,1.0,1.0 -9.766,0,5,0.2,4,6,1.0,1.0,1.0 -9.453,0,5,0.2,4,7,1.0,1.0,1.0 -10.224,0,5,0.2,4,8,1.0,1.0,1.0 -9.766,0,5,0.2,4,9,1.0,1.0,1.0 -14.99,0,6,0.2,4,0,1.0,1.0,1.0 -13.597,0,6,0.2,4,1,1.0,1.0,1.0 -13.449,0,6,0.2,4,2,1.0,1.0,1.0 -14.786,0,6,0.2,4,3,1.0,1.0,1.0 -14.101,0,6,0.2,4,4,1.0,1.0,1.0 -13.999,0,6,0.2,4,5,1.0,1.0,1.0 -14.907,0,6,0.2,4,6,1.0,1.0,1.0 -14.218,0,6,0.2,4,7,1.0,1.0,1.0 -15.086,0,6,0.2,4,8,1.0,1.0,1.0 -16.234,0,6,0.2,4,9,1.0,1.0,1.0 -46.968,0,10,0.2,4,0,1.0,1.0,1.0 -45.725,0,10,0.2,4,1,0.872,1.0,0.773 -45.156,0,10,0.2,4,2,1.0,1.0,1.0 -145.535,0,15,0.2,4,0,0.935,1.0,0.878 -135.002,0,15,0.2,4,1,0.868,1.0,0.767 -140.394,0,15,0.2,4,2,0.884,1.0,0.792 -4.555,0,3,0.3,4,0,1.0,1.0,1.0 -4.555,0,3,0.3,4,1,1.0,1.0,1.0 -4.659,0,3,0.3,4,2,1.0,1.0,1.0 -4.569,0,3,0.3,4,3,1.0,1.0,1.0 -4.773,0,3,0.3,4,4,1.0,1.0,1.0 -4.503,0,3,0.3,4,5,1.0,1.0,1.0 -5.04,0,3,0.3,4,6,1.0,1.0,1.0 -4.669,0,3,0.3,4,7,1.0,1.0,1.0 -4.603,0,3,0.3,4,8,1.0,1.0,1.0 -4.589,0,3,0.3,4,9,1.0,1.0,1.0 -6.521,0,4,0.3,4,0,1.0,1.0,1.0 -6.473,0,4,0.3,4,1,1.0,1.0,1.0 -6.707,0,4,0.3,4,2,1.0,1.0,1.0 -5.876,0,4,0.3,4,3,1.0,1.0,1.0 -6.361,0,4,0.3,4,4,1.0,1.0,1.0 -6.883,0,4,0.3,4,5,1.0,1.0,1.0 -6.619,0,4,0.3,4,6,1.0,1.0,1.0 -6.253,0,4,0.3,4,7,1.0,1.0,1.0 -6.469,0,4,0.3,4,8,1.0,1.0,1.0 -6.855,0,4,0.3,4,9,1.0,1.0,1.0 -8.817,0,5,0.3,4,0,1.0,1.0,1.0 -9.007,0,5,0.3,4,1,1.0,1.0,1.0 -10.312,0,5,0.3,4,2,1.0,1.0,1.0 -8.901,0,5,0.3,4,3,1.0,1.0,1.0 -9.674,0,5,0.3,4,4,1.0,1.0,1.0 -9.179,0,5,0.3,4,5,1.0,1.0,1.0 -8.786,0,5,0.3,4,6,1.0,1.0,1.0 -9.675,0,5,0.3,4,7,1.0,1.0,1.0 -8.888,0,5,0.3,4,8,1.0,1.0,1.0 -8.351,0,5,0.3,4,9,1.0,1.0,1.0 -13.022,0,6,0.3,4,0,1.0,1.0,1.0 -12.967,0,6,0.3,4,1,1.0,1.0,1.0 -13.528,0,6,0.3,4,2,1.0,1.0,1.0 -13.596,0,6,0.3,4,3,1.0,1.0,1.0 -11.576,0,6,0.3,4,4,1.0,1.0,1.0 -13.883,0,6,0.3,4,5,1.0,1.0,1.0 -11.712,0,6,0.3,4,6,1.0,1.0,1.0 -13.224,0,6,0.3,4,7,1.0,1.0,1.0 -14.677,0,6,0.3,4,8,1.0,1.0,1.0 -13.235,0,6,0.3,4,9,1.0,1.0,1.0 -46.524,0,10,0.3,4,0,1.0,1.0,1.0 -46.531,0,10,0.3,4,1,0.893,1.0,0.806 -43.19,0,10,0.3,4,2,1.0,1.0,1.0 -121.834,0,15,0.3,4,0,1.0,1.0,1.0 -119.824,0,15,0.3,4,1,1.0,1.0,1.0 -120.162,0,15,0.3,4,2,0.889,1.0,0.8 -4.594,0,3,0.4,4,0,1.0,1.0,1.0 -4.686,0,3,0.4,4,1,1.0,1.0,1.0 -4.707,0,3,0.4,4,2,1.0,1.0,1.0 -5.269,0,3,0.4,4,3,1.0,1.0,1.0 -4.729,0,3,0.4,4,4,1.0,1.0,1.0 -4.6,0,3,0.4,4,5,1.0,1.0,1.0 -4.727,0,3,0.4,4,6,1.0,1.0,1.0 -4.707,0,3,0.4,4,7,1.0,1.0,1.0 -4.69,0,3,0.4,4,8,1.0,1.0,1.0 -4.944,0,3,0.4,4,9,1.0,1.0,1.0 -6.441,0,4,0.4,4,0,1.0,1.0,1.0 -6.75,0,4,0.4,4,1,1.0,1.0,1.0 -6.198,0,4,0.4,4,2,1.0,1.0,1.0 -6.496,0,4,0.4,4,3,1.0,1.0,1.0 -6.631,0,4,0.4,4,4,1.0,1.0,1.0 -6.262,0,4,0.4,4,5,1.0,1.0,1.0 -6.865,0,4,0.4,4,6,1.0,1.0,1.0 -6.739,0,4,0.4,4,7,1.0,1.0,1.0 -6.357,0,4,0.4,4,8,1.0,1.0,1.0 -7.206,0,4,0.4,4,9,1.0,1.0,1.0 -8.677,0,5,0.4,4,0,1.0,1.0,1.0 -9.465,0,5,0.4,4,1,1.0,1.0,1.0 -10.355,0,5,0.4,4,2,1.0,1.0,1.0 -9.04,0,5,0.4,4,3,1.0,1.0,1.0 -10.206,0,5,0.4,4,4,1.0,1.0,1.0 -8.605,0,5,0.4,4,5,1.0,1.0,1.0 -9.591,0,5,0.4,4,6,1.0,1.0,1.0 -9.072,0,5,0.4,4,7,1.0,1.0,1.0 -9.002,0,5,0.4,4,8,1.0,1.0,1.0 -9.264,0,5,0.4,4,9,1.0,1.0,1.0 -13.615,0,6,0.4,4,0,1.0,1.0,1.0 -13.133,0,6,0.4,4,1,1.0,1.0,1.0 -13.687,0,6,0.4,4,2,1.0,1.0,1.0 -13.901,0,6,0.4,4,3,1.0,1.0,1.0 -12.545,0,6,0.4,4,4,1.0,1.0,1.0 -13.513,0,6,0.4,4,5,1.0,1.0,1.0 -14.006,0,6,0.4,4,6,1.0,1.0,1.0 -13.376,0,6,0.4,4,7,1.0,1.0,1.0 -14.285,0,6,0.4,4,8,1.0,1.0,1.0 -14.759,0,6,0.4,4,9,1.0,1.0,1.0 -45.247,0,10,0.4,4,0,0.833,1.0,0.714 -44.191,0,10,0.4,4,1,0.746,1.0,0.595 -45.044,0,10,0.4,4,2,0.793,1.0,0.657 -112.711,0,15,0.4,4,0,0.311,1.0,0.184 -119.185,0,15,0.4,4,1,0.46,1.0,0.299 -119.897,0,15,0.4,4,2,0.383,1.0,0.237 \ No newline at end of file diff --git a/main_package/tests/simulators/test_simulation_all.py b/main_package/tests/simulators/test_simulation_all.py deleted file mode 100644 index 0ef289e..0000000 --- a/main_package/tests/simulators/test_simulation_all.py +++ /dev/null @@ -1,147 +0,0 @@ -import sys -sys.path.append("../../classes/") -import glob -import math -import os -import unittest - -import networkx as nx -import numpy as np -import pandas as pd -import psutil -from line_profiler import LineProfiler -import copy -import json - -import utility.cache as ch -import structure_graph.sample_path as sp -import estimators.structure_score_based_estimator as se_score -import estimators.structure_constraint_based_estimator as se_constr -import utility.sample_importer as si - - - -class TestTabuSearch(unittest.TestCase): - - @classmethod - def setUpClass(cls): - pass - - - - def test_constr(self): - - list_constraint= [0,1] - - list_cardinality= [[2,"binary"],[3,"ternary"], [4,"quaternary"]] - - - - list_dens = [["0.1","_01"],["0.2","_02"], ["0.3",""], ["0.4","_04"] ] - - for constr in list_constraint: - for card in list_cardinality: - for dens in list_dens: - - if card[0] == 4: - list_vals= [3,4,5,6,10,15] - else: - list_vals= [3,4,5,6,10,15,20] - - for var_n in list_vals: - - patience = 25 - - var_number= var_n - - if var_number > 11: - patience = 30 - - if var_number > 16: - patience = 35 - - - cardinality = card[0] - cardinality_string = card[1] - - density= dens[0] - density_string = dens[1] - - constraint = constr - - index = 1 - num_networks=10 - - - while index <= num_networks: - - with open(f"/home/alessandro/Documents/ctbn_cba/data/networks_and_trajectories_{cardinality_string}_data{density_string}_{var_number}/{index}.json") as f: - raw_data = json.load(f) - - trajectory_list_raw= raw_data["samples"] - - trajectory_list = [pd.DataFrame(sample) for sample in trajectory_list_raw] - - variables= pd.DataFrame(raw_data["variables"]) - prior_net_structure = pd.DataFrame(raw_data["dyn.str"]) - - - self.importer = si.SampleImporter( - trajectory_list=trajectory_list, - variables=variables, - prior_net_structure=prior_net_structure - ) - - self.importer.import_data() - self.s1 = sp.SamplePath(self.importer) - self.s1.build_trajectories() - self.s1.build_structure() - - - true_edges = copy.deepcopy(self.s1.structure.edges) - true_edges = set(map(tuple, true_edges)) - - if constr == 0: - se1 = se_score.StructureScoreBasedEstimator(self.s1) - set_list_edges = se1.estimate_structure( - max_parents = None, - iterations_number = 100, - patience = patience, - tabu_length = var_number, - tabu_rules_duration = var_number, - optimizer = 'tabu' - ) - else: - se1 = se_constr.StructureConstraintBasedEstimator(self.s1,0.1,0.1) - set_list_edges = se1.estimate_structure(disable_multiprocessing=False) - - n_added_fake_edges = len(set_list_edges.difference(true_edges)) - - n_missing_edges = len(true_edges.difference(set_list_edges)) - - n_true_positive = len(true_edges) - n_missing_edges - - precision = n_true_positive / (n_true_positive + n_added_fake_edges) - - recall = n_true_positive / (n_true_positive + n_missing_edges) - - f1_measure = round(2* (precision*recall) / (precision+recall),3) - - print(true_edges) - print(set_list_edges) - print(f"precision: {precision} ") - print(f"recall: {recall} ") - - with open("../results/results.csv", 'a+') as fi: - fi.write(f"{constraint},{var_number},{density},{cardinality},{index},{f1_measure},{round(precision,3)},{round(recall,3)}") - - index += 1 - - self.assertEqual(set_list_edges, true_edges) - - - - -if __name__ == '__main__': - unittest.main() - diff --git a/main_package/tests/simulators/test_simulation_constraint.py b/main_package/tests/simulators/test_simulation_constraint.py deleted file mode 100644 index c66f62f..0000000 --- a/main_package/tests/simulators/test_simulation_constraint.py +++ /dev/null @@ -1,108 +0,0 @@ -import sys -sys.path.append("../../classes/") -import glob -import math -import os -import unittest - -import networkx as nx -import numpy as np -import psutil -from line_profiler import LineProfiler -import copy - -import utility.cache as ch -import structure_graph.sample_path as sp -import estimators.structure_constraint_based_estimator as se -import utility.json_importer as ji - - - -class TestTabuSearch(unittest.TestCase): - - @classmethod - def setUpClass(cls): - pass - - - - def test_constr(self): - - list_vals= [3,4,5,6,10,15] - - list_dens = [["0.1","_01"],["0.2","_02"], ["0.3",""], ["0.4","_04"] ] - - for dens in list_dens: - for var_n in list_vals: - - var_number= var_n - - cardinality = 4 - cardinality_string = "quaternary" - - density= dens[0] - density_string = dens[1] - - - - constraint = 1 - - - - index = 0 - num_networks=10 - - if var_number > 9: - num_networks=3 - - while index < num_networks: - #cls.read_files = glob.glob(os.path.join('../../data', "*.json")) - self.importer = ji.JsonImporter(f"../../data/networks_and_trajectories_{cardinality_string}_data{density_string}_{var_number}.json", - 'samples', 'dyn.str', 'variables', 'Time', 'Name', index ) - self.s1 = sp.SamplePath(self.importer) - self.s1.build_trajectories() - self.s1.build_structure() - - - true_edges = copy.deepcopy(self.s1.structure.edges) - true_edges = set(map(tuple, true_edges)) - - se1 = se.StructureConstraintBasedEstimator(self.s1, 0.1, 0.1) - se1.ctpc_algorithm() - - - set_list_edges = set(se1.complete_graph.edges) - - - n_added_fake_edges = len(set_list_edges.difference(true_edges)) - - n_missing_edges = len(true_edges.difference(set_list_edges)) - - n_true_positive = len(true_edges) - n_missing_edges - - precision = n_true_positive / (n_true_positive + n_added_fake_edges) - - recall = n_true_positive / (n_true_positive + n_missing_edges) - - f1_measure = round(2* (precision*recall) / (precision+recall),3) - - # print(f"n archi reali non trovati: {n_missing_edges}") - # print(f"n archi non reali aggiunti: {n_added_fake_edges}") - print(true_edges) - print(set_list_edges) - print(f"precision: {precision} ") - print(f"recall: {recall} ") - - - with open("../results/results.csv", 'a+') as fi: - fi.write(f"{constraint},{var_number},{density},{cardinality},{index},{f1_measure},{round(precision,3)},{round(recall,3)}") - - index += 1 - - self.assertEqual(set_list_edges, true_edges) - - - -if __name__ == '__main__': - unittest.main() - diff --git a/main_package/tests/simulators/test_simulation_score.py b/main_package/tests/simulators/test_simulation_score.py deleted file mode 100644 index 6ff3695..0000000 --- a/main_package/tests/simulators/test_simulation_score.py +++ /dev/null @@ -1,122 +0,0 @@ -import sys -sys.path.append("../../classes/") -import glob -import math -import os -import unittest - -import networkx as nx -import numpy as np -import psutil -from line_profiler import LineProfiler -import copy - -import utility.cache as ch -import structure_graph.sample_path as sp -import estimators.structure_score_based_estimator as se -import utility.json_importer as ji - - - -class TestTabuSearch(unittest.TestCase): - - @classmethod - def setUpClass(cls): - pass - - - - def test_constr(self): - - - list_vals= [3,4,5,6,10,15] - - list_dens = [["0.1","_01"],["0.2","_02"], ["0.3",""], ["0.4","_04"] ] - - for dens in list_dens: - for var_n in list_vals: - - patience = 20 - - var_number= var_n - - if var_number > 11: - patience = 25 - - if var_number > 16: - patience = 35 - - - cardinality = 4 - cardinality_string = "quaternary" - - density= dens[0] - density_string = dens[1] - - constraint = 0 - - index = 0 - num_networks=10 - - if var_number > 9: - num_networks=3 - - - while index < num_networks: - #cls.read_files = glob.glob(os.path.join('../../data', "*.json")) - self.importer = ji.JsonImporter(f"../../data/networks_and_trajectories_{cardinality_string}_data{density_string}_{var_number}.json", - 'samples', 'dyn.str', 'variables', 'Time', 'Name', index ) - self.s1 = sp.SamplePath(self.importer) - self.s1.build_trajectories() - self.s1.build_structure() - - - true_edges = copy.deepcopy(self.s1.structure.edges) - true_edges = set(map(tuple, true_edges)) - - se1 = se.StructureScoreBasedEstimator(self.s1) - set_list_edges = se1.estimate_structure( - max_parents = None, - iterations_number = 100, - patience = patience, - tabu_length = var_number, - tabu_rules_duration = var_number, - optimizer = 'hill' - ) - - - - - - n_added_fake_edges = len(set_list_edges.difference(true_edges)) - - n_missing_edges = len(true_edges.difference(set_list_edges)) - - n_true_positive = len(true_edges) - n_missing_edges - - precision = n_true_positive / (n_true_positive + n_added_fake_edges) - - recall = n_true_positive / (n_true_positive + n_missing_edges) - - f1_measure = round(2* (precision*recall) / (precision+recall),3) - - # print(f"n archi reali non trovati: {n_missing_edges}") - # print(f"n archi non reali aggiunti: {n_added_fake_edges}") - print(true_edges) - print(set_list_edges) - print(f"precision: {precision} ") - print(f"recall: {recall} ") - - with open("../results/results.csv", 'a+') as fi: - fi.write(f"{constraint},{var_number},{density},{cardinality},{index},{f1_measure},{round(precision,3)},{round(recall,3)}") - - index += 1 - - self.assertEqual(set_list_edges, true_edges) - - - - -if __name__ == '__main__': - unittest.main() -