def run(traj): try: # extract parameters N = traj.par.data.N K = traj.par.data.K p_cts = traj.par.data.p_cts p_bin = traj.par.data.p_bin var_adj = traj.par.data.var_adj var_cov = traj.par.data.var_cov missing_rate = traj.par.data.missing_rate seed = traj.par.data.seed alpha_mean = traj.par.data.alpha_mean print(p_bin, alpha_mean, seed) adj_model = traj.par.model.adj_model bin_model = traj.par.model.bin_model # generate data Z, alpha, X_cts, X_cts_missing, X_bin, X_bin_missing, A, B, B0 = generate_dataset( N=N, K=K, p_cts=p_cts, p_bin=p_bin, var_adj=var_adj, alpha_mean=alpha_mean, var_cov=var_cov, missing_rate=missing_rate, seed=seed, link_model=adj_model, bin_model=bin_model) density = tf.reduce_sum(tf.where(tf.math.is_nan(A), 0., A)).numpy() * 2 / (N * (N - 1)) density = density except: density = np.nan traj.f_add_result("runs.$.alpha_mean", alpha_mean, "alpha_mean") traj.f_add_result("runs.$.seed", seed, "seed") traj.f_add_result("runs.$.density", density, "Network density") print(p_bin, alpha_mean, seed, density) return p_bin, alpha_mean, seed, density
def run(traj): try: # extract parameters N = traj.par.data.N K = traj.par.data.K p_cts = traj.par.data.p_cts p_bin = traj.par.data.p_bin var_adj = traj.par.data.var_adj var_cov = traj.par.data.var_cov missing_rate = traj.par.data.missing_rate seed = traj.par.data.seed alpha_mean = traj.par.data.alpha_mean print(p_bin, N, seed) K_model = traj.par.model.K adj_model = traj.par.model.adj_model bin_model = traj.par.model.bin_model n_iter = traj.par.fit.n_iter n_vmp = traj.par.fit.n_vmp n_gd = traj.par.fit.n_gd step_size = traj.par.fit.step_size # generate data Z, alpha, X_cts, X_cts_missing, X_bin, X_bin_missing, A, B, B0 = generate_dataset( N=N, K=K, p_cts=p_cts, p_bin=p_bin, var_adj=var_adj, alpha_mean=alpha_mean, var_cov=var_cov, missing_rate=missing_rate, seed=seed, link_model=adj_model, bin_model=bin_model) initial = { "bias": B0, "weights": B, "positions": Z, "heterogeneity": alpha } # initialize model model = JointModel2(K=K_model, A=A, X_cts=X_cts, X_bin=X_bin, link_model="Logistic", bin_model="Logistic", initial=initial) # fit model.fit( n_iter=n_iter, n_vmp=n_vmp, n_gd=n_gd, verbose=False, ) # metrics metrics = model.covariate_metrics(X_cts_missing, X_bin_missing) dists = model.latent_distance(Z) elbo = model.elbo.numpy() density = tf.reduce_sum(tf.where(tf.math.is_nan(A), 0., A)).numpy() * 2 / (N * (N - 1)) # store result elbo = elbo mse = metrics["mse"] auroc = metrics["auroc"] dist_inv = dists["inv"] dist_proj = dists["proj"] density = density except: elbo = np.nan mse = np.nan auroc = np.nan dist_inv = np.nan dist_proj = np.nan density = np.nan traj.f_add_result("runs.$.p_bin", p_bin, "p_bin") traj.f_add_result("runs.$.N", N, "N") traj.f_add_result("runs.$.seed", seed, "seed") traj.f_add_result("runs.$.elbo", elbo, "ELBO") traj.f_add_result("runs.$.mse", mse, "MSE") traj.f_add_result("runs.$.auroc", auroc, "AUROC") traj.f_add_result("runs.$.dist_inv", dist_inv, "Invariant distance") traj.f_add_result("runs.$.dist_proj", dist_proj, "Projection distance") traj.f_add_result("runs.$.density", density, "Network density") print(p_bin, N, seed, elbo, mse, auroc, dist_inv, dist_proj, density) return p_bin, N, seed, elbo, mse, auroc, dist_inv, dist_proj, density