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)
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()
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]