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
                  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):
        model = []
        model.append(network.statCal_edgeNum())
        return np.array(model)
Esempio n. 5
0
#     if self.pid is not None:
#         print("pid:",self.pid," iter:", iter,"/",iter, "time elapsed(second):", round(time.time()-start_time,1))
#     else:
#         print(iter,"/",iter, "time elapsed(second):", round(time.time()-start_time,1))



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):
        model = []
        model.append(network.statCal_edgeNum())
        return np.array(model)
Esempio n. 6
0
    netstat_reader_inst_samplk_vig_conti_d = BSTERGM_latest_exchangeSampler_work()
    netstat_reader_inst_samplk_vig_conti_d.read_from_csv("example_results_samplk/samplk_jointly_normPrior_vignettesEx_conti_2chain_dissolution_NetworkStat")
    netstat_reader_inst_samplk_vig_conti_d.show_traceplot()


#============================================================================================
if gof:
    import numpy as np
    from network import UndirectedNetwork, DirectedNetwork
    from BSTERGM_GOF import BSTERGM_GOF
    
    import data_samplk
    from model_settings import model_netStat_samplk_vignettesEx
    
    samplk_sequence = [
        DirectedNetwork(np.array(data_samplk.samplk1)),
        DirectedNetwork(np.array(data_samplk.samplk2)),
        DirectedNetwork(np.array(data_samplk.samplk3))
    ]

    # #samplk: gof
    # #time 0,1 
    gof_inst_samplk_vig_f = BSTERGM_GOF(model_netStat_samplk_vignettesEx, reader_inst_samplk_vig.MC_formation_samples, 
        is_formation=True, obs_network_seq=samplk_sequence, time_lag=1, additional_netstat_function=model_netStat_samplk_vignettesEx)
    gof_inst_samplk_vig_f.gof_run(num_sim=300, exchange_iter=200)
    gof_inst_samplk_vig_f.show_boxplot(compare=True)

    gof_inst_samplk_vig_d = BSTERGM_GOF(model_netStat_samplk_vignettesEx, reader_inst_samplk_vig.MC_dissolution_samples, 
        is_formation=False, obs_network_seq=samplk_sequence, time_lag=1, additional_netstat_function=model_netStat_samplk_vignettesEx)
    gof_inst_samplk_vig_d.gof_run(num_sim=300, exchange_iter=200)
    gof_inst_samplk_vig_d.show_boxplot(compare=True)
    netstat_reader_inst_friendship_KHEx_conti_d.read_from_csv("example_results_friendship_20210722/friendship_jointly_normPrior_KHEx_20210722_0chain_dissolution_NetworkStat")
    netstat_reader_inst_friendship_KHEx_conti_d.show_traceplot()



#============================================================================================
if gof:
    import numpy as np
    from network import UndirectedNetwork, DirectedNetwork
    from BSTERGM_GOF import BSTERGM_GOF
    
    import data_knecht_friendship
    from model_settings import model_netStat_friendship_KHEx
    
    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))
    ]

    #friendship: gof
    #time 0,1 
    # # def __init__(self, model_fn, posterior_parameter_samples, is_formation, obs_network_seq, time_lag, additional_netstat_function=None , rng_seed=2021):
    gof_inst_friendship_KHEx_f = BSTERGM_GOF(model_netStat_friendship_KHEx, reader_inst_friendship_KHEx.MC_formation_samples, 
        is_formation=True, obs_network_seq=friendship_sequence, time_lag=0, additional_netstat_function=model_netStat_friendship_KHEx)
    gof_inst_friendship_KHEx_f.gof_run(num_sim=300, exchange_iter=200)
    gof_inst_friendship_KHEx_f.show_boxplot(compare=True)
    gof_inst_friendship_KHEx_f.save_boxplot("/example_results_friendship_20210722/friendship", compare=True)

    gof_inst_friendship_KHEx_d = BSTERGM_GOF(model_netStat_friendship_KHEx, reader_inst_friendship_KHEx.MC_dissolution_samples, 
Esempio n. 8
0
                                [0, 0, 0, 0, 0, 0, 0, 1, 1, 0],
                                [0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
                                [0, 0, 0, 0, 0, 0, 1, 0, 0, 1],
                                [0, 0, 0, 0, 0, 0, 0, 1, 1, 0]])
    test_structure3 = np.array([[0, 0, 1, 0, 0, 0, 0, 0, 1, 1],
                                [0, 0, 1, 1, 0, 0, 0, 0, 1, 0],
                                [1, 1, 0, 0, 0, 0, 0, 1, 0, 0],
                                [0, 1, 0, 0, 1, 1, 0, 0, 0, 0],
                                [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
                                [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
                                [0, 0, 0, 0, 0, 0, 0, 1, 1, 0],
                                [0, 0, 1, 0, 0, 0, 1, 0, 0, 1],
                                [1, 1, 0, 0, 0, 0, 1, 0, 0, 1],
                                [1, 0, 0, 0, 0, 0, 0, 1, 1, 0]])

    test_initnet1 = DirectedNetwork(test_structure1)
    test_initnet2 = DirectedNetwork(test_structure2)
    test_initnet3 = DirectedNetwork(test_structure3)
    test_obs_seq = [test_initnet1, test_initnet2, test_initnet3]

    def model_netStat(network):
        model = []
        #define model
        model.append(network.statCal_edgeNum())
        model.append(network.statCal_geoWeightedESP(0.5))
        return np.array(model)

    def gof_additional_netStat(network):
        gof_netstat = []
        gof_netstat.append(network.statCal_edgeNum())
        gof_netstat.append(network.statCal_geoWeightedESP(0.5))