parent
864ffbd319
commit
b374d60117
@ -1,68 +1,78 @@ |
||||
import typing as ty |
||||
import numpy as np |
||||
|
||||
|
||||
class Structure: |
||||
""" |
||||
Contiene tutte il informazioni sulla struttura della rete (connessione dei nodi, valori assumibili dalle variabili) |
||||
Contains all the infos about the network structure(nodes names, nodes caridinalites, edges...) |
||||
|
||||
:structure_frame: il dataframe contenente le connessioni dei nodi della rete |
||||
:variables_frame: il data_frame contenente i valori assumibili dalle variabili e si suppone il corretto ordinamento |
||||
rispetto alle colonne del dataset |
||||
:nodes_labels_list: the symbolic names of the variables |
||||
:nodes_indexes_arr: the indexes of the nodes |
||||
:nodes_vals_arr: the cardinalites of the nodes |
||||
:edges_list: the edges of the network |
||||
:total_variables_number: the total number of variables in the net |
||||
""" |
||||
|
||||
def __init__(self, nodes_label_list, node_indexes_arr, nodes_vals_arr, edges_list, total_variables_number): |
||||
#self.structure_frame = structure |
||||
#self.variables_frame = variables |
||||
self.nodes_labels_list = nodes_label_list |
||||
self.nodes_indexes_arr = node_indexes_arr |
||||
self.nodes_vals_arr = nodes_vals_arr |
||||
self.edges_list = edges_list |
||||
self.total_variables_number = total_variables_number |
||||
#self.name_label = variables.columns.values[0] |
||||
#self.value_label = variables.columns.values[1] |
||||
|
||||
def list_of_edges(self): |
||||
def __init__(self, nodes_label_list: ty.List, node_indexes_arr: np.array, nodes_vals_arr: np.array, |
||||
edges_list: ty.List, total_variables_number: int): |
||||
self._nodes_labels_list = nodes_label_list |
||||
self._nodes_indexes_arr = node_indexes_arr |
||||
self._nodes_vals_arr = nodes_vals_arr |
||||
self._edges_list = edges_list |
||||
self._total_variables_number = total_variables_number |
||||
|
||||
@property |
||||
def edges(self): |
||||
#records = self.structure_frame.to_records(index=False) |
||||
#edges_list = list(records) |
||||
return self.edges_list |
||||
return self._edges_list |
||||
|
||||
def list_of_nodes_labels(self): |
||||
return self.nodes_labels_list |
||||
@property |
||||
def nodes_labels(self): |
||||
return self._nodes_labels_list |
||||
|
||||
def list_of_nodes_indexes(self): |
||||
return self.nodes_indexes_arr |
||||
@property |
||||
def nodes_indexes(self): |
||||
return self._nodes_indexes_arr |
||||
|
||||
def get_node_id(self, node_indx): |
||||
return self.nodes_labels_list[node_indx] |
||||
@property |
||||
def nodes_values(self): |
||||
return self._nodes_vals_arr |
||||
|
||||
def get_node_indx(self, node_id): |
||||
return self.nodes_indexes_arr[self.nodes_labels_list.index(node_id)] |
||||
@property |
||||
def total_variables_number(self): |
||||
return self._total_variables_number |
||||
|
||||
def get_positional_node_indx(self, node_id): |
||||
return self.nodes_labels_list.index(node_id) |
||||
def get_node_id(self, node_indx: int): |
||||
return self._nodes_labels_list[node_indx] |
||||
|
||||
def get_states_number(self, node): |
||||
#print("node", node) |
||||
return self.nodes_vals_arr[self.get_positional_node_indx(node)] |
||||
def get_node_indx(self, node_id: str): |
||||
pos_indx = self._nodes_labels_list.index(node_id) |
||||
return self._nodes_indexes_arr[pos_indx] |
||||
|
||||
def get_states_number_by_indx(self, node_indx): |
||||
#print(self.value_label) |
||||
#print("Node indx", node_indx) |
||||
return self.nodes_vals_arr[node_indx] |
||||
def get_positional_node_indx(self, node_id: str): |
||||
return self._nodes_labels_list.index(node_id) |
||||
|
||||
def nodes_values(self): |
||||
return self.nodes_vals_arr |
||||
def get_states_number(self, node: str): |
||||
pos_indx = self._nodes_labels_list.index(node) |
||||
return self._nodes_vals_arr[pos_indx] |
||||
|
||||
def total_variables_number(self): |
||||
return self.total_variables_number |
||||
def get_states_number_by_indx(self, node_indx: int): |
||||
#print(self.value_label) |
||||
#print("Node indx", node_indx) |
||||
return self._nodes_vals_arr[node_indx] |
||||
|
||||
def __repr__(self): |
||||
return "Variables:\n" + str(self.variables_frame) + "\nEdges: \n" + str(self.structure_frame) |
||||
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 self.structure_frame.equals(other.structure_frame) and \ |
||||
self.variables_frame.equals(other.variables_frame) |
||||
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 \ |
||||
set(self._edges_list) == set(other._edges_list) |
||||
|
||||
return NotImplemented |
||||
|
||||
|
Reference in new issue