def dissociate_network(self, last_network, now_network): y_last_structure = last_network.structure y_now_structure = now_network.structure y_plus = y_last_structure.copy() y_minus = y_last_structure.copy() for row in range(self.node_num): for col in range(self.node_num): if y_now_structure[row, col] == 1: y_plus[row, col] = 1 if y_now_structure[row, col] == 0: y_minus[row, col] = 0 result = 0 if self.isDirected: result = (DirectedNetwork(y_plus), DirectedNetwork(y_minus)) else: result = (UndirectedNetwork(y_plus), UndirectedNetwork(y_minus)) return result
def make_block_diag_net(self, network_list): num_block = len(network_list) block_mat = network_list[0].structure for i in range(1, num_block): block_mat = block_diag(block_mat, network_list[i].structure) if self.isDirected: return DirectedNetwork(block_mat) else: return UndirectedNetwork(block_mat)
def propose_network(self, last_network): proposed_structure = last_network.structure.copy() edge_idx = self.choose_mutable_edge( ) #choose_edge or choose_mutable_edge result_network = 0 if isinstance(last_network, UndirectedNetwork): proposed_structure[ edge_idx[0], edge_idx[1]] = 1 - proposed_structure[edge_idx[0], edge_idx[1]] proposed_structure[edge_idx[1], edge_idx[0]] = proposed_structure[edge_idx[0], edge_idx[1]] result_network = UndirectedNetwork(proposed_structure) elif isinstance(last_network, DirectedNetwork): proposed_structure[ edge_idx[0], edge_idx[1]] = 1 - proposed_structure[edge_idx[0], edge_idx[1]] result_network = DirectedNetwork(proposed_structure) return result_network
with open("pyBSTERGM/" + filename + '.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) for vec_f, vec_d in zip(formation_netStat, dissolution_netStat): csv_row = vec_f.tolist() + vec_d.tolist() writer.writerow(csv_row) if __name__ == "__main__": import data_samplk, data_knecht_friendship, data_tailor sociational_interactions = [ UndirectedNetwork(np.array(data_tailor.KAPFTS1)), UndirectedNetwork(np.array(data_tailor.KAPFTS2)) ] friendship_sequence = [ DirectedNetwork(np.array(data_knecht_friendship.friendship_t1)), DirectedNetwork(np.array(data_knecht_friendship.friendship_t2)), DirectedNetwork(np.array(data_knecht_friendship.friendship_t3)), DirectedNetwork(np.array(data_knecht_friendship.friendship_t4)) ] samplk_sequence = [ DirectedNetwork(np.array(data_samplk.samplk1)), DirectedNetwork(np.array(data_samplk.samplk2)), DirectedNetwork(np.array(data_samplk.samplk3)) ] def model_netStat_edgeonly(network):
def model_netStat(network: UndirectedNetwork): model = [] #define model model.append(network.statCal_edgeNum()) model.append(network.statCal_geoWeightedESP(0.3)) return np.array(model)
#define model model.append(network.statCal_edgeNum()) model.append(network.statCal_geoWeightedESP(0.3)) return np.array(model) test_structure = np.array([[0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 1, 0, 0, 0, 0, 0, 0], [1, 1, 0, 1, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]) test_initnet = UndirectedNetwork(test_structure) test_constraint_structure = np.array([ [0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0], ]) test_constraint_net = UndirectedNetwork(test_constraint_structure) #1