Esempio n. 1
0
def main():
    water_charges = {"t3p" : [-0.834, 0.417, 0.417], "pm6" : [-2.000, 1.000, 1.000]}
    prefix = sys.argv[1]
    curr_dir = os.getcwd()
    n_conf = 5
    n_runs = 1
    charge_sets = ["t3p", "pm6"]
    chg = sys.argv[1]
    if chg not in charge_sets:
        sys.exit("Charge set %s not allowed!" % chg)
    charges = water_charges[chg]
    # input files
    data_dir = os.path.abspath("../data/gramicidin/simulations/input_struct_%s" % chg)
    mu = []
    amide_mu = []
    for n in range(n_runs):
        mu_z = []
        prefix = "run_%02d" % n
        print("Processing %s:" % prefix)
        msdat = os.path.join(data_dir, prefix, "ms.dat")
        head3lst = os.path.join(data_dir, prefix, "head3.lst")
        fort38 = os.path.join(data_dir, prefix, "fort.38")
        energies_opp = os.path.join(data_dir, prefix, "energies.opp")
        step2out = os.path.join(data_dir, prefix, "step2_out.pdb")

        msa = Simulation(msdat, head3lst, fort38)
        msa.parse_trajectory(sample_frequency=10)
        msa.parse_struct(step2out, n_conf)
        msa.calculate_water_dipoles(charges)
Esempio n. 2
0
def calc_muz(n, n_conf, chg, charges, data_dir, save=False, save_freq=1000):
    mu_z = []
    prefix = "run_%02d" % n
    print("Processing %s:" % prefix)
    msdat = os.path.join(data_dir, prefix, "ms.dat")
    head3lst = os.path.join(data_dir, prefix, "head3.lst")
    fort38 = os.path.join(data_dir, prefix, "fort.38")
    energies_opp = os.path.join(data_dir, prefix, "energies.opp")
    step2out = os.path.join(data_dir, prefix, "step2_out.pdb")

    msa = Simulation(msdat, head3lst, fort38)
    msa.parse_trajectory(sample_frequency=100)
    msa.parse_struct(step2out, n_conf)
    msa.calculate_water_dipoles(charges)
    pdb_save_dir = os.path.abspath("pdbs/apolar_gram_%s/%s" % (chg, prefix))
    if not os.path.exists(pdb_save_dir):
        os.makedirs(pdb_save_dir)
    for i in range(msa.trajectory.shape[0]):
        microstate_conf_ids = msa.trajectory[i, :]
        wat_ids = []
        dps = []
        for c in microstate_conf_ids:
            dp = msa.conformer_data[msa.conf_id_name_map[c + 1]][-1]
            if dp is not None:
                dps.append(dp)
                wat_ids.extend(msa.conformer_data[msa.conf_id_name_map[c +
                                                                       1]][2])
        mu_z.append(dps)
        t_dp = sum(dps)
        if save:
            if not i % save_freq:
                print("Saving config %d with dipole %g." % (i, sum(dps)))
                print("Energy = %g" % msa.energies[i])
                snapshot_st = msa.structure.atom_slice(wat_ids)
                snapshot_st.save_pdb("%s/%05d_config.pdb" % (pdb_save_dir, i))
                print("Microstate %d: Energy =  %g, Dipole = %g" %
                      (i, msa.energies[i], t_dp))

    mu_z = np.array([np.cumsum(m) for m in mu_z])
    return mu_z
def main():
    water_charges = {"t3p" : [-0.834, 0.417, 0.417], "pm6" : [-2.000, 1.000, 1.000]}
    prefix = sys.argv[1]
    curr_dir = os.getcwd()
    n_conf = 1
    charge_sets = ["t3p", "pm6"]
    chg = sys.argv[1]
    if chg not in charge_sets:
        sys.exit("Charge set %s not allowed!" % chg)
    charges = water_charges[chg]
    # input files
    data_dir = os.path.abspath("../data/gramicidin/simulations/mc_type")

    msdat = os.path.join(data_dir, prefix + "_ms.dat")
    head3lst = os.path.join(data_dir, prefix + "_head3.lst")
    fort38 = os.path.join(data_dir, prefix + "_fort.38")
    energies_opp = os.path.join(data_dir, prefix + "_energies.opp")
    step2out = os.path.join(data_dir, "step2_out.pdb")

    msa = Simulation(msdat, head3lst, fort38)
    msa.parse_trajectory(sample_frequency=1)
    msa.parse_struct(step2out, n_conf)
    msa.calculate_water_dipoles(charges)

    mu_z = []
    for i in range(msa.trajectory.shape[0]):
        microstate_conf_ids = msa.trajectory[i, :]
        wat_ids = []
        dps = []
        for c in microstate_conf_ids:
            dp = msa.conformer_data[msa.conf_id_name_map[c + 1]][-1]
            if dp is not None:
                dps.append(dp)
                wat_ids.extend(msa.conformer_data[msa.conf_id_name_map[c + 1]][2])
        mu_z.append(dps)
        t_dp = sum(dps)
        #if  t_dp > -0.2 and t_dp < 0.2:
            #print("Found config %d with desired dipole %g, saving.." % (i, sum(dps)))
            #print("Energy = %g" % msa.energies[i])
            #snapshot_st = msa.structure.atom_slice(wat_ids)
            #snapshot_st.save_pdb("test_pdbs/%05d_config.pdb" % i)
            #print("Microstate %d: Energy =  %g, Dipole = %g" % (i, msa.energies[i], t_dp))
            
    mu_z = np.array([sum(m) for m in mu_z])
    figure = pylab.figure(figsize=(7.5, 3.5), dpi=300)    
    y, bin_edges = np.histogram(mu_z, bins=50)
    kernel = stats.gaussian_kde(mu_z)
    bin_centers = 0.5 * (bin_edges[1:] + bin_edges[:-1])
    plt.hist(mu_z, bins=50, normed=1, histtype='stepfilled')
    p_y = kernel.evaluate(bin_centers)
    plt.plot(bin_centers, p_y, 'k-')
    plt.xlim(-4.0, 4.0)
    #plt.ylim(0.0, np.max(p_x) + 0.1)
    plt.ylim(0.0, 1.2)

    plt.xlabel(r'$\mu_{z,total}$', size=14)
    plt.ylabel(r'$P(\mu_{z,total})$', size=14)
    plt.tight_layout()
    plt.savefig("sim_07_%s_histogram_total_dipole.png" % str(chg))


    os.chdir(curr_dir)
def main():
    water_charges = {
        "t3p": [-0.834, 0.417, 0.417],
        "pm6": [-2.000, 1.000, 1.000]
    }
    prefix = sys.argv[1]
    curr_dir = os.getcwd()
    n_conf = 5
    n_runs = 10
    charge_sets = ["t3p", "pm6"]
    chg = sys.argv[1]
    if chg not in charge_sets:
        sys.exit("Charge set %s not allowed!" % chg)
    charges = water_charges[chg]
    # input files
    data_dir = os.path.abspath(
        "../data/gramicidin/simulations/apolar_gram_%s" % chg)
    mu = []
    amide_mu = []
    for n in range(n_runs):
        mu_z = []
        prefix = "run_%02d" % n
        print("Processing %s:" % prefix)
        msdat = os.path.join(data_dir, prefix, "ms.dat")
        head3lst = os.path.join(data_dir, prefix, "head3.lst")
        fort38 = os.path.join(data_dir, prefix, "fort.38")
        energies_opp = os.path.join(data_dir, prefix, "energies.opp")
        step2out = os.path.join(data_dir, prefix, "step2_out.pdb")

        msa = Simulation(msdat, head3lst, fort38)
        msa.parse_trajectory(sample_frequency=10)
        msa.parse_struct(step2out, n_conf)
        msa.calculate_water_dipoles(charges)
        test = calc_amide_dipole(step2out)
        pdb_save_dir = os.path.abspath("pdbs/apolar_gram_%s/%s" %
                                       (chg, prefix))
        if not os.path.exists(pdb_save_dir):
            os.makedirs(pdb_save_dir)
        for i in range(msa.trajectory.shape[0]):

            microstate_conf_ids = msa.trajectory[i, :]
            wat_ids = []
            dps = []
            for c in microstate_conf_ids:
                dp = msa.conformer_data[msa.conf_id_name_map[c + 1]][-1]
                if dp is not None:
                    dps.append(dp)
                    wat_ids.extend(
                        msa.conformer_data[msa.conf_id_name_map[c + 1]][2])
            mu_z.append(dps)
            t_dp = sum(dps)
            #if not i % 1000:
            #print("Saving config %d with dipole %g." % (i, sum(dps)))
            #print("Energy = %g" % msa.energies[i])
            #snapshot_st = msa.structure.atom_slice(wat_ids)
            #snapshot_st.save_pdb("%s/%05d_config.pdb" % (pdb_save_dir, i))
            #print("Microstate %d: Energy =  %g, Dipole = %g" % (i, msa.energies[i], t_dp))

        mu_z = np.array([sum(m) for m in mu_z])
        mu.append(np.mean(mu_z))
        amide_mu.append(test)
        figure = pylab.figure(figsize=(7.5, 3.5), dpi=300)
        y, bin_edges = np.histogram(mu_z, bins=50)
        kernel = stats.gaussian_kde(mu_z)
        bin_centers = 0.5 * (bin_edges[1:] + bin_edges[:-1])
        plt.hist(mu_z, bins=50, normed=1, histtype='stepfilled')
        p_y = kernel.evaluate(bin_centers)
        plt.plot(bin_centers, p_y, 'k-')
        plt.xlim(-6.0, 6.0)
        plt.ylim(0.0, np.max(p_y) + 0.2)
        #plt.ylim(0.0, 1.2)
        style = dict(size=10, color='gray')
        plt.text(-5.8, 0.1, "%.2f" % test, **style)
        plt.xlabel(r'$\mu_{z,total}$', size=14)
        plt.ylabel(r'$P(\mu_{z,total})$', size=14)
        plt.tight_layout()
        plt.savefig("%s_sim_04_%s" % (chg + "_apolar_gram_", prefix))

    os.chdir(curr_dir)
    figure = pylab.figure(figsize=(4.5, 4.5), dpi=300)
    plt.scatter(mu, amide_mu)
    plt.xlabel(r'$\mu_{z,water}$', size=14)
    plt.ylabel(r'$\mu_{z,amide}$', size=14)
    plt.tight_layout()
Esempio n. 5
0
mu = []
ab_indices = []
n_wat = []
dipole_x = []
dipole_y = []
dipole_z = []
data_dir = '/home/yzhang/Dropbox/ProtonHopping/data/gramicidin/simulations/input_struct_dp_groups_positive_t3p'
prefix = "run_restart200_000001_1_update"
print("Processing %s:" % prefix)
msdat = os.path.join(data_dir, prefix, "ms.dat")
head3lst = os.path.join(data_dir, prefix, "head3.lst")
fort38 = os.path.join(data_dir, prefix, "fort.38")
step2out = os.path.join(data_dir, prefix, "step2_out.pdb")

msa = Simulation(msdat, head3lst, fort38)
msa.parse_trajectory(sample_frequency=10)
msa.parse_struct(step2out)
conf_dipoles = msa.calculate_dipoles()
print(conf_dipoles['HOH01W0233_006'])
numbers = zeros(msa.trajectory.shape[0], dtype="int64")
for i in range(msa.trajectory.shape[0]):
    microstate_conf_ids = msa.trajectory[i, :]
    numbers[i] = msa.state_counts[i]
    dps = []
    curr_wat_ids = []
    for index, c in enumerate(microstate_conf_ids):
        conf_name = msa.conf_id_name_map[c + 1]
        if "DM" not in conf_name:
            dpX = conf_dipoles[conf_name][0]
            dpY = conf_dipoles[conf_name][1]