From 0cce09b2134943e21c7b7dafb6b88d87e2952a71 Mon Sep 17 00:00:00 2001 From: Daniel Bauer Date: Sun, 17 Jun 2018 10:55:28 +0200 Subject: [PATCH] update gromacs/wham2d example for dialanine --- .gitignore | 3 ++- examples/data/plumed.dat | 13 +++++++++++++ examples/data/sim.sh | 23 +++++++++++++++++++++++ examples/data/topol.edr | Bin 0 -> 844 bytes examples/data/topol.tpr | Bin 0 -> 65976 bytes examples/example.py | 21 ++++++++++----------- 6 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 examples/data/plumed.dat create mode 100755 examples/data/sim.sh create mode 100644 examples/data/topol.edr create mode 100644 examples/data/topol.tpr diff --git a/.gitignore b/.gitignore index e31e431..88e310f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ venv .idea plot - +examples/tmp +examples/run.log diff --git a/examples/data/plumed.dat b/examples/data/plumed.dat new file mode 100644 index 0000000..c1b8b15 --- /dev/null +++ b/examples/data/plumed.dat @@ -0,0 +1,13 @@ +# set up two variables for Phi and Psi dihedral angles +phi: TORSION ATOMS=5,7,9,15 +psi: TORSION ATOMS=7,9,15,17 +# +# Impose an umbrella potential on CV 1 and CV 2 +# with a spring constant of 500 kjoule/mol +# at fixed points on the Ramachandran plot +# +restraint-phi: RESTRAINT ARG=phi KAPPA=100 AT=LAMBDA1 +restraint-psi: RESTRAINT ARG=psi KAPPA=100 AT=LAMBDA2 + +# monitor the two variables and the bias potential from the two restraints +PRINT STRIDE=10 ARG=phi,psi,restraint-phi.bias,restraint-psi.bias FILE=COLVAR UPDATE_FROM=50 diff --git a/examples/data/sim.sh b/examples/data/sim.sh new file mode 100755 index 0000000..217d943 --- /dev/null +++ b/examples/data/sim.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +lambda1=$1 +lambda2=$2 +FOLDER="./tmp/simulations/sim_${lambda1}_${lambda2}" + + +if [ -f $FOLDER/topol.gro ]; then + echo "$FOLDER exists" + exit 0 +fi + +mkdir -p $FOLDER +cp data/plumed.dat $FOLDER +cp data/topol.tpr $FOLDER +sed -i -e "s/LAMBDA1/${lambda1}/g" $FOLDER/plumed.dat +sed -i -e "s/LAMBDA2/${lambda2}/g" $FOLDER/plumed.dat + +cd $FOLDER +source /usr/local/gromacs/bin/GMXRC +gmx --quiet mdrun -deffnm topol -plumed plumed.dat -nsteps 100000 2>&1 +cd ../.. + diff --git a/examples/data/topol.edr b/examples/data/topol.edr new file mode 100644 index 0000000000000000000000000000000000000000..66b9cb0c0ae86f5cdd4d6d7a061dfb9c27bcb6b5 GIT binary patch literal 844 zcmZ`%(N2Rf6s=jtri_0eSz^?L856(2>4S_1B5WDFF;|sH+odfg`*<^3N)2U{q^0-V zo|ALho=(@l0D!R=b1_Ei;7R;|^BvwJQpqK7V@eK?`p@OpLe|}$_lgc?*X)m@FnD;B zEEB(4lDZ;jr<+~PNfi1w$=hw8Giy1z+2vfughR~BLRmIEx~mdHUcUP;_{{$-CA_Fa z2hz`D&!e{_m_hmj_nK*Da8roHxfHynPHIC$i1e^Vz{FIT9yY*L zAD&u;eH&1H%aVMt~;^v5fBks<}s41ptkQ^C@veNhLMum95|1bc5+HItX literal 0 HcmV?d00001 diff --git a/examples/data/topol.tpr b/examples/data/topol.tpr new file mode 100644 index 0000000000000000000000000000000000000000..f049a4f6cab47af604ab49f13041d6e21854852d GIT binary patch literal 65976 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 literal 0 HcmV?d00001 diff --git a/examples/example.py b/examples/example.py index 0ad6329..f52b67c 100644 --- a/examples/example.py +++ b/examples/example.py @@ -24,11 +24,11 @@ class WHAM2DRunner(UmbrellaRunner): import os from shutil import copyfile - simulation_dir = "simulations" + simulation_dir = "tmp/simulations" print("Collecting sampling data from simulations folder") # collect COLVARs - wham_dir = "WHAM/" + wham_dir = "tmp/WHAM/" if not os.path.exists(wham_dir): os.makedirs(wham_dir) @@ -44,7 +44,7 @@ class WHAM2DRunner(UmbrellaRunner): with open(metadata_file, 'w') as out: for f in os.listdir(simulation_dir): prefix, x, y = f.split("_") - out.write("WHAM/{}.xvg {} {} {} {}\n".format(f, x, y, fc_x, fc_y)) + out.write("{}/{}.xvg {} {} {} {}\n".format(wham_dir, f, x, y, fc_x, fc_y)) # run WHAM2d print("Running WHAM-2d") @@ -101,7 +101,7 @@ class WHAM2DRunner(UmbrellaRunner): class MyUmbrellaRunner(WHAM2DRunner): def after_run_hook(self): - filename = "pmf_{}.pdf".format(self.num_iterations) + filename = "tmp/pmf_{}.pdf".format(self.num_iterations) print("Writing new pmf to {}".format(filename)) pmf_to_plot = deepcopy(self.pmf.T) pmf_to_plot[pmf_to_plot < 0] = None @@ -118,22 +118,21 @@ class MyUmbrellaRunner(WHAM2DRunner): cb = plt.colorbar(pad=0.1) cb.set_label("kJ/mol") plt.savefig(filename) - os.system("cp {} {}".format(filename, "pmf_current.pdf")) + os.system("cp {} {}".format(filename, "tmp/pmf_current.pdf")) def simulate_frames(self, lambdas, frames): print("{} new simulations:".format(len(lambdas))) counter = 0 + if not os.path.exists("tmp"): + os.mkdir('tmp') + threads = [] for f in lambdas: counter += 1 - if os.path.exists("sim/sim_{}_{}/COLVAR".format(*f)): - print("{}) Skipping lambdas={}/{}: COLVAR exists".format(counter, *f)) - continue - print("{}) Simulate lambda1={}, lambda2={}".format(counter, *f)) - command = "bash sim.sh {} {} 2>&1 > run.log".format(*f) + command = "bash data/sim.sh {} {} 2>&1 > tmp/run.log".format(*f) # print("Running {}".format(command)) os.system(command) @@ -147,6 +146,6 @@ runner.cvs_init = (1.4, -1.4) runner.E_min = 10 runner.E_max = 100 runner.E_incr = 10 -runner.max_iterations = 100 +runner.max_iterations = 30 runner.run()