Esempio n. 1
0
 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
Esempio n. 2
0
 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)
Esempio n. 3
0
 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
Esempio n. 4
0
        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):
Esempio n. 5
0
 def model_netStat(network: UndirectedNetwork):
     model = []
     #define model
     model.append(network.statCal_edgeNum())
     model.append(network.statCal_geoWeightedESP(0.3))
     return np.array(model)
Esempio n. 6
0
        #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