1
0
Fork 0
Old engine for Continuous Time Bayesian Networks. Superseded by reCTBN. 🐍 https://github.com/madlabunimib/PyCTBN
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
PyCTBN/main_package/classes/structure.py

68 lines
2.4 KiB

import numpy as np
class Structure:
"""
Contiene tutte il informazioni sulla struttura della rete (connessione dei nodi, valori assumibili dalle variabili)
: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
"""
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):
#records = self.structure_frame.to_records(index=False)
#edges_list = list(records)
return self.edges_list
def list_of_nodes_labels(self):
return self.nodes_labels_list
def list_of_nodes_indexes(self):
return self.nodes_indexes_arr
def get_node_id(self, node_indx):
return self.nodes_labels_list[node_indx]
def get_node_indx(self, node_id):
return self.nodes_indexes_arr[self.nodes_labels_list.index(node_id)]
def get_positional_node_indx(self, node_id):
return self.nodes_labels_list.index(node_id)
def get_states_number(self, node):
#print("node", node)
return self.nodes_vals_arr[self.get_positional_node_indx(node)]
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 nodes_values(self):
return self.nodes_vals_arr
def total_variables_number(self):
return self.total_variables_number
def __repr__(self):
return "Variables:\n" + str(self.variables_frame) + "\nEdges: \n" + str(self.structure_frame)
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 NotImplemented