Commit 2be6ad72 authored by Ding, Lijie's avatar Ding, Lijie
Browse files

make saving config and Iq2d_af flexible

parent 9824c2af
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -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]
@@ -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)
@@ -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
+4 −4
Original line number Diff line number Diff line
@@ -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"
@@ -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)) :]
+6 −2
Original line number Diff line number Diff line
@@ -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
@@ -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();
+448 B (94.9 KiB)

File changed.

No diff preview for this file type.

+30 −30
Original line number Diff line number Diff line
@@ -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
    {
@@ -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);
@@ -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();
    }
}
@@ -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