Loading analyze/ML_analyze.py +9 −8 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ def get_feature_Iq_gq_data(folder, parameters, random=True): data = np.genfromtxt(filename, delimiter=",", skip_header=1) bnum_phi = len(data[0]) - 7 print(f"bnum_phi: {bnum_phi}") bnum_r = int((len(data) - 2) / 3) bnum_r = int((len(data) - 2) / 2) print(f"bnum_r: {bnum_r}") Rmu, n, sigma, sqrtD, gxy = data[0, 1], data[0, 2], data[0, 3], data[0, 4], data[0, 5] Loading @@ -46,16 +46,17 @@ def get_feature_Iq_gq_data(folder, parameters, random=True): qphi = data[1, 7:] qr = data[2 : 2 + bnum_r, 6] Iq2D = data[2 : 2 + bnum_r, 7:] Iq2D_af = data[2 + bnum_r : 2 + 2 * bnum_r, 7:] IqIq_af = data[2 + 2 * bnum_r : 2 + 3 * bnum_r, 7:] #Iq2D_af = data[2 + bnum_r : 2 + 2 * bnum_r, 7:] IqIq_af = data[2 + bnum_r : 2 + 2 * bnum_r, 7:] gq = IqIq_af / (Iq2D * Iq2D) QPHI, QR = np.meshgrid(qphi, qr) gq_phi = np.mean(gq*QR, axis=0)/np.mean(QR, axis=0) #gq_phi = np.mean(gq*QR, axis=0)/np.mean(QR, axis=0) gq_phi = np.mean(gq, axis=0) gq_r = np.mean(gq, axis=1) all_Iq2D.append(Iq2D) #all_Iq2D.append(Iq2D) all_IqIq_af.append(IqIq_af) all_gq.append(gq) all_gq_phi.append(gq_phi) Loading Loading @@ -267,9 +268,9 @@ def GaussianProcess_optimization(folder, parameters_train): grid_size = 30 theta_per_feature = { "sigma": (np.logspace(-1, 0, grid_size), np.logspace(-3, -1, grid_size)), "sqrtD": (np.logspace(-1, 0, grid_size), np.logspace(-3, -2, grid_size)), "gxy": (np.logspace(-1, 1, grid_size), np.logspace(-4, -2, grid_size)), "sigma": (np.logspace(-2, 0, grid_size), np.logspace(-3, -1, grid_size)), "sqrtD": (np.logspace(-2, 0, grid_size), np.logspace(-3, -1, grid_size)), "gxy": (np.logspace(-2, 1, grid_size), np.logspace(-3, 0, grid_size)), } # feature normalization Loading analyze/main_ML_analyze.py +4 −4 Original line number Diff line number Diff line Loading @@ -10,9 +10,9 @@ import time def main(): print("analyzing data using ML model") folder = "../data/20241126_rand" folder = "../data/20241201_rand" rand_num = 4000 rand_max = 4000 rand_max = 3000 parameters = [] for i in range(rand_num): filename = f"{folder}/obs_random_run{i}.csv" Loading @@ -23,9 +23,9 @@ def main(): print("parameters", parameters) print("total number of parameters", len(parameters)) calc_svd(folder, parameters) #calc_svd(folder, parameters) return 0 #return 0 random.shuffle(parameters) parameters_train = parameters[: int(0.7 * len(parameters))] parameters_test = parameters[int(0.7 * len(parameters)) :] Loading code/main.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -49,11 +49,14 @@ int main(int argc, char const *argv[]) std::string finfo = "n" + std::string(argv[1]) + "_Rmu" + std::string(argv[2]) + "_sigma" + std::string(argv[3]) + "_sqrtD" + std::string(argv[4]) + "_gxy" + std::string(argv[5]); int number_of_config = 10000; // 2000 for local test int number_of_config = 20000; // 2000 for local test int bnum_r = 100; int bnum_phi = 101; gas_2d.run_simulation(number_of_config, bnum_r, bnum_phi, folder, finfo); //gas_2d.save_gas_config_to_file(folder + "/config_" + finfo + ".csv"); //gas_2d.save_avg_observable_to_file(folder + "/obs_" + finfo + ".csv", true); gas_2d.save_avg_observable_to_file(folder + "/obs_" + finfo + ".csv"); } // random run Loading @@ -67,10 +70,11 @@ int main(int argc, char const *argv[]) suspension gas_2d(R0, 1.0*R0, 100, 0.0, 1.0, 0.0, true); std::string finfo = "random_run" + std::to_string(run_num); int number_of_config = 10000; // 2000 for local test int number_of_config = 20000; // 2000 for local test int bnum_r = 100; int bnum_phi = 101; gas_2d.run_simulation(number_of_config, bnum_r, bnum_phi, folder, finfo); gas_2d.save_avg_observable_to_file(folder + "/obs_" + finfo + ".csv"); } std::clock_t c_end = std::clock(); Loading code/suspension +448 B (94.9 KiB) File changed.No diff preview for this file type. View original file View changed file code/suspension.cpp +30 −30 Original line number Diff line number Diff line Loading @@ -33,11 +33,11 @@ suspension::suspension(double R0_, double Rmu_, int n_, double sigma_, double sq // gxx*gyy-gxy*gyx=1 // Rmu = (0.9+0.2*rand_uni(gen))*R0; Rmu = 1.0 * R0; n = 100 + 50 * rand_uni(gen); n = 100 + 100 * rand_uni(gen); // n = 100; sigma = 0.0 + 0.5 * rand_uni(gen); sqrtD = (0.0 + 5 * rand_uni(gen)) * R0; gxy = (50 * rand_uni(gen)) * R0; sigma = 0.0 + 0.4 * rand_uni(gen); sqrtD = (1 + 4 * rand_uni(gen)) * R0; gxy = (10 + 40 * rand_uni(gen)) * R0; } else { Loading Loading @@ -412,7 +412,7 @@ void suspension::save_observable_to_file(std::string filename, std::vector<obser } } void suspension::save_avg_observable_to_file(std::string filename) void suspension::save_avg_observable_to_file(std::string filename, bool save_Iqaf) { // save the observable to file std::ofstream f(filename); Loading Loading @@ -443,28 +443,30 @@ void suspension::save_avg_observable_to_file(std::string filename) } } // it's the same as Iq_2D on average /* for (int kr = 0; kr < avg_obs.Iq2D_af.size(); kr++) for (int kr = 0; kr < avg_obs.IqIq_af.size(); kr++) { f << "\nIq2D_af,NA,NA,NA,NA,NA"; f << "\nIqIq_af,NA,NA,NA,NA,NA"; f << "," << avg_obs.qr[kr]; for (int kphi = 0; kphi < avg_obs.Iq2D[kr].size(); kphi++) { f << "," << avg_obs.Iq2D_af[kr][kphi]; f << "," << avg_obs.IqIq_af[kr][kphi]; } } */ for (int kr = 0; kr < avg_obs.IqIq_af.size(); kr++) // it's the same as Iq_2D on average if (save_Iqaf) { f << "\nIqIq_af,NA,NA,NA,NA,NA"; for (int kr = 0; kr < avg_obs.Iq2D_af.size(); kr++) { f << "\nIq2D_af,NA,NA,NA,NA,NA"; f << "," << avg_obs.qr[kr]; for (int kphi = 0; kphi < avg_obs.Iq2D[kr].size(); kphi++) { f << "," << avg_obs.IqIq_af[kr][kphi]; f << "," << avg_obs.Iq2D_af[kr][kphi]; } } } f.close(); } } Loading Loading @@ -511,7 +513,5 @@ void suspension::run_simulation(int N_config, int bnum_r, int bnum_phi, std::str } } //save_gas_config_to_file(folder + "/config_" + finfo + ".csv"); // save_observable_to_file(folder + "/obs_" + finfo + ".csv", obs_ensemble); save_avg_observable_to_file(folder + "/obs_" + finfo + ".csv"); } No newline at end of file Loading
analyze/ML_analyze.py +9 −8 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ def get_feature_Iq_gq_data(folder, parameters, random=True): data = np.genfromtxt(filename, delimiter=",", skip_header=1) bnum_phi = len(data[0]) - 7 print(f"bnum_phi: {bnum_phi}") bnum_r = int((len(data) - 2) / 3) bnum_r = int((len(data) - 2) / 2) print(f"bnum_r: {bnum_r}") Rmu, n, sigma, sqrtD, gxy = data[0, 1], data[0, 2], data[0, 3], data[0, 4], data[0, 5] Loading @@ -46,16 +46,17 @@ def get_feature_Iq_gq_data(folder, parameters, random=True): qphi = data[1, 7:] qr = data[2 : 2 + bnum_r, 6] Iq2D = data[2 : 2 + bnum_r, 7:] Iq2D_af = data[2 + bnum_r : 2 + 2 * bnum_r, 7:] IqIq_af = data[2 + 2 * bnum_r : 2 + 3 * bnum_r, 7:] #Iq2D_af = data[2 + bnum_r : 2 + 2 * bnum_r, 7:] IqIq_af = data[2 + bnum_r : 2 + 2 * bnum_r, 7:] gq = IqIq_af / (Iq2D * Iq2D) QPHI, QR = np.meshgrid(qphi, qr) gq_phi = np.mean(gq*QR, axis=0)/np.mean(QR, axis=0) #gq_phi = np.mean(gq*QR, axis=0)/np.mean(QR, axis=0) gq_phi = np.mean(gq, axis=0) gq_r = np.mean(gq, axis=1) all_Iq2D.append(Iq2D) #all_Iq2D.append(Iq2D) all_IqIq_af.append(IqIq_af) all_gq.append(gq) all_gq_phi.append(gq_phi) Loading Loading @@ -267,9 +268,9 @@ def GaussianProcess_optimization(folder, parameters_train): grid_size = 30 theta_per_feature = { "sigma": (np.logspace(-1, 0, grid_size), np.logspace(-3, -1, grid_size)), "sqrtD": (np.logspace(-1, 0, grid_size), np.logspace(-3, -2, grid_size)), "gxy": (np.logspace(-1, 1, grid_size), np.logspace(-4, -2, grid_size)), "sigma": (np.logspace(-2, 0, grid_size), np.logspace(-3, -1, grid_size)), "sqrtD": (np.logspace(-2, 0, grid_size), np.logspace(-3, -1, grid_size)), "gxy": (np.logspace(-2, 1, grid_size), np.logspace(-3, 0, grid_size)), } # feature normalization Loading
analyze/main_ML_analyze.py +4 −4 Original line number Diff line number Diff line Loading @@ -10,9 +10,9 @@ import time def main(): print("analyzing data using ML model") folder = "../data/20241126_rand" folder = "../data/20241201_rand" rand_num = 4000 rand_max = 4000 rand_max = 3000 parameters = [] for i in range(rand_num): filename = f"{folder}/obs_random_run{i}.csv" Loading @@ -23,9 +23,9 @@ def main(): print("parameters", parameters) print("total number of parameters", len(parameters)) calc_svd(folder, parameters) #calc_svd(folder, parameters) return 0 #return 0 random.shuffle(parameters) parameters_train = parameters[: int(0.7 * len(parameters))] parameters_test = parameters[int(0.7 * len(parameters)) :] Loading
code/main.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -49,11 +49,14 @@ int main(int argc, char const *argv[]) std::string finfo = "n" + std::string(argv[1]) + "_Rmu" + std::string(argv[2]) + "_sigma" + std::string(argv[3]) + "_sqrtD" + std::string(argv[4]) + "_gxy" + std::string(argv[5]); int number_of_config = 10000; // 2000 for local test int number_of_config = 20000; // 2000 for local test int bnum_r = 100; int bnum_phi = 101; gas_2d.run_simulation(number_of_config, bnum_r, bnum_phi, folder, finfo); //gas_2d.save_gas_config_to_file(folder + "/config_" + finfo + ".csv"); //gas_2d.save_avg_observable_to_file(folder + "/obs_" + finfo + ".csv", true); gas_2d.save_avg_observable_to_file(folder + "/obs_" + finfo + ".csv"); } // random run Loading @@ -67,10 +70,11 @@ int main(int argc, char const *argv[]) suspension gas_2d(R0, 1.0*R0, 100, 0.0, 1.0, 0.0, true); std::string finfo = "random_run" + std::to_string(run_num); int number_of_config = 10000; // 2000 for local test int number_of_config = 20000; // 2000 for local test int bnum_r = 100; int bnum_phi = 101; gas_2d.run_simulation(number_of_config, bnum_r, bnum_phi, folder, finfo); gas_2d.save_avg_observable_to_file(folder + "/obs_" + finfo + ".csv"); } std::clock_t c_end = std::clock(); Loading
code/suspension +448 B (94.9 KiB) File changed.No diff preview for this file type. View original file View changed file
code/suspension.cpp +30 −30 Original line number Diff line number Diff line Loading @@ -33,11 +33,11 @@ suspension::suspension(double R0_, double Rmu_, int n_, double sigma_, double sq // gxx*gyy-gxy*gyx=1 // Rmu = (0.9+0.2*rand_uni(gen))*R0; Rmu = 1.0 * R0; n = 100 + 50 * rand_uni(gen); n = 100 + 100 * rand_uni(gen); // n = 100; sigma = 0.0 + 0.5 * rand_uni(gen); sqrtD = (0.0 + 5 * rand_uni(gen)) * R0; gxy = (50 * rand_uni(gen)) * R0; sigma = 0.0 + 0.4 * rand_uni(gen); sqrtD = (1 + 4 * rand_uni(gen)) * R0; gxy = (10 + 40 * rand_uni(gen)) * R0; } else { Loading Loading @@ -412,7 +412,7 @@ void suspension::save_observable_to_file(std::string filename, std::vector<obser } } void suspension::save_avg_observable_to_file(std::string filename) void suspension::save_avg_observable_to_file(std::string filename, bool save_Iqaf) { // save the observable to file std::ofstream f(filename); Loading Loading @@ -443,28 +443,30 @@ void suspension::save_avg_observable_to_file(std::string filename) } } // it's the same as Iq_2D on average /* for (int kr = 0; kr < avg_obs.Iq2D_af.size(); kr++) for (int kr = 0; kr < avg_obs.IqIq_af.size(); kr++) { f << "\nIq2D_af,NA,NA,NA,NA,NA"; f << "\nIqIq_af,NA,NA,NA,NA,NA"; f << "," << avg_obs.qr[kr]; for (int kphi = 0; kphi < avg_obs.Iq2D[kr].size(); kphi++) { f << "," << avg_obs.Iq2D_af[kr][kphi]; f << "," << avg_obs.IqIq_af[kr][kphi]; } } */ for (int kr = 0; kr < avg_obs.IqIq_af.size(); kr++) // it's the same as Iq_2D on average if (save_Iqaf) { f << "\nIqIq_af,NA,NA,NA,NA,NA"; for (int kr = 0; kr < avg_obs.Iq2D_af.size(); kr++) { f << "\nIq2D_af,NA,NA,NA,NA,NA"; f << "," << avg_obs.qr[kr]; for (int kphi = 0; kphi < avg_obs.Iq2D[kr].size(); kphi++) { f << "," << avg_obs.IqIq_af[kr][kphi]; f << "," << avg_obs.Iq2D_af[kr][kphi]; } } } f.close(); } } Loading Loading @@ -511,7 +513,5 @@ void suspension::run_simulation(int N_config, int bnum_r, int bnum_phi, std::str } } //save_gas_config_to_file(folder + "/config_" + finfo + ".csv"); // save_observable_to_file(folder + "/obs_" + finfo + ".csv", obs_ensemble); save_avg_observable_to_file(folder + "/obs_" + finfo + ".csv"); } No newline at end of file