def change_vertex_name(self, old_name, new_name): # change in edges for i in range(len(self.E)): # change in parents if old_name == self.E[i][0]: self.E[i][0] = new_name # in vdata pars = self.Vdata[self.E[i][1]]["parents"] self.Vdata[self.E[i][1]]["parents"] = \ ulist.change_element_in_list(pars, old_name, new_name) # change in children elif old_name == self.E[i][1]: self.E[i][1] = new_name # in vdata children = self.Vdata[self.E[i][0]]["children"] self.Vdata[self.E[i][0]]["children"] = \ ulist.change_element_in_list(children, old_name, new_name) self.Vdata[new_name] = self.Vdata.pop(old_name) self.V = ulist.change_element_in_list(self.V, old_name, new_name)
def change_state_name(self, vertex_name, old_name, new_name): # state name l_vals = self.Vdata[vertex_name]["vals"] self.Vdata[vertex_name]["vals"] = \ ulist.change_element_in_list(l_vals, old_name, new_name) # CPT in children children = self.getchildren(vertex_name) for child in children: cprob = self.Vdata[child]["cprob"] cpt = [cprob[k] for k in cprob.keys()] parents_mtx = self.get_parent_states(child) str_parent_mtx = self.str_parent_states(parents_mtx) new_cprob = {} # Maybe this is not the best way for j in range(len(str_parent_mtx)): new_cprob[str_parent_mtx[j]] = cpt[j] self.Vdata[child]["cprob"] = new_cprob