176 lines
4.9 KiB
Bash
Executable File
176 lines
4.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
export VMDNOCUDA=1
|
|
#export VMDNOOPTIX=1
|
|
export VMDNOOSPRAY=1
|
|
|
|
#######################################################################################
|
|
## ADJUSTABLE PARAMETERS ##
|
|
#######################################################################################
|
|
|
|
# set step size for dcd file incrementing
|
|
step_size=10000000
|
|
# set folder name that contains the jobs
|
|
job_folder="4-new_jobs"
|
|
# set sel1
|
|
sel1="chain B and not resname PHQ"
|
|
# set sel2
|
|
sel2="chain A"
|
|
# only run specific systems
|
|
my_systems=("ALL")
|
|
|
|
#######################################################################################
|
|
## FUNCTIONS ##
|
|
#######################################################################################
|
|
|
|
function get_systems() {
|
|
systems=()
|
|
all_systems=()
|
|
_jobs=( $(ls -d ../${job_folder}/*/*/) )
|
|
for _job in ${_jobs[@]}; do
|
|
all_systems+=( $(basename ${_job}) )
|
|
done
|
|
systems+=( $(for _system in ${all_systems[@]}; do echo ${_system}; done | sort -u) )
|
|
}
|
|
|
|
function get_ffs() {
|
|
ffs=()
|
|
for ff in ../0-forcefields/*; do
|
|
if [[ -f "${ff}" ]]; then
|
|
ffs+=(${ff})
|
|
fi
|
|
done
|
|
}
|
|
|
|
#######################################################################################
|
|
## ENERGY ANALYSIS ##
|
|
#######################################################################################
|
|
|
|
# set folder name for output files
|
|
out_dir="$(basename ${0})"
|
|
out_dir="${out_dir%%.*}2"
|
|
|
|
function namd_energy() {
|
|
|
|
get_systems
|
|
get_ffs
|
|
|
|
mkdir -p ${out_dir}
|
|
|
|
ffs_energy=""
|
|
for ff in ${ffs[@]}; do
|
|
ffs_energy+="-par \"${ff}\" "
|
|
done
|
|
|
|
|
|
for system in "${systems[@]}"; do
|
|
|
|
if echo ${my_systems[@]} | grep -w ${system} > /dev/null; then
|
|
|
|
jobs=( $(ls -d ../${job_folder}/*/${system}/) )
|
|
|
|
for job in ${jobs[@]}; do
|
|
job=${job%%/}
|
|
date=${job#*/*/}
|
|
date=${date%/*}
|
|
dcds=( $(ls ${job}/*sim_*.dcd | sort -V) )
|
|
xscs=( $(ls ${job}/*sim_*.xsc | sort -V) )
|
|
|
|
# Run NAMDEnergy
|
|
echo 'package require namdenergy' > temp.tcl
|
|
echo "set sel1 [atomselect top \"${sel1}\"]" >> temp.tcl
|
|
echo "set sel2 [atomselect top \"${sel2}\"]" >> temp.tcl
|
|
echo "namdenergy -vdw -elec -nonb -sel \$sel1 \$sel2 -ofile \""${out_dir}/${system}-${date}.csv"\" -tempname \""${system}-${date}"\" -switch 10 -cutoff 12 -diel 1.0 -T 310 -timemult 2 -stride 10000 -extsys "${xscs[0]}" -pme ${ffs_energy} -exe "/home/bryan/bin/namd2" -plot" >> temp.tcl
|
|
echo 'exit' >> temp.tcl
|
|
|
|
# run temp.tcl
|
|
vmd -dispdev text -eofexit ${job}/${system}_solv_ion.psf ${dcds[@]:1} < "temp.tcl"
|
|
rm "temp.tcl"
|
|
done
|
|
|
|
awk 'FNR == 1 { nfiles++; ncols = NF }
|
|
{ for (i = 1; i < NF; i++) sum[FNR,i] += $i
|
|
if (FNR > maxnr) maxnr = FNR
|
|
}
|
|
END {
|
|
for (line = 1; line <= maxnr; line++)
|
|
{
|
|
for (col = 1; col < ncols; col++)
|
|
printf " %.2f", sum[line,col]/nfiles;
|
|
printf "\n"
|
|
}
|
|
}' ${out_dir}/${system}-* > ${out_dir}/${system}-combined.csv
|
|
fi
|
|
|
|
rm FFTW_NAMD*
|
|
|
|
plot_energy ${system} ${out_dir}/${system}-combined
|
|
|
|
done
|
|
}
|
|
|
|
function plot_energy() {
|
|
gnuplot -persist <<-GNUPLOT_INPUT
|
|
set terminal pngcairo enhanced size 1600,1200 font "arial,24" linewidth 2
|
|
set output "${2}.png"
|
|
set autoscale
|
|
set title "SrtA-{/Arial-Italic Boc} interaction energy" font "arial,40"
|
|
set xlabel "Time (ns)" font "arial,32"
|
|
set ylabel "Energy (kcal/mol)" font "arial,32"
|
|
set border 1+2
|
|
#set xtics nomirror
|
|
set ytics nomirror
|
|
set grid
|
|
set grid noxtics
|
|
set key box off
|
|
set yrange [-25:0]
|
|
#set format y "%+-2.f"
|
|
set style data lines
|
|
set xzeroaxis ls 8
|
|
|
|
# linetypes
|
|
#set style line 1 pi 0 lw 1 ps 1 pt 0 lc rgb '#000000'
|
|
|
|
plot "${2}.csv" using (\$1 / 50):5 with linespoints ls 8 pi 0 pt 0
|
|
|
|
exit
|
|
|
|
GNUPLOT_INPUT
|
|
}
|
|
|
|
function plot_energy2() {
|
|
gnuplot -persist <<-GNUPLOT_INPUT
|
|
set terminal pngcairo enhanced size 1600,1200 font "arial,24" linewidth 2
|
|
set output "ALL-combined-both.png"
|
|
set datafile separator ","
|
|
set autoscale
|
|
set title "SrtA-{/Arial-Italic Boc} interaction energy" font "arial,40"
|
|
set xlabel "Time (ns)" font "arial,32"
|
|
set ylabel "Energy (kcal/mol)" font "arial,32"
|
|
set border 1+2
|
|
#set xtics nomirror
|
|
set ytics nomirror
|
|
set grid
|
|
set grid noxtics
|
|
set key box right bottom
|
|
set yrange [-80:0]
|
|
#set format y "%+-2.f"
|
|
set style data filledcurves
|
|
#set xzeroaxis ls 8
|
|
|
|
# linetypes
|
|
set style line 1 pi 0 lw 1 ps 1 pt 0 lc rgb '#696969'
|
|
set style line 2 pi 0 lw 1 ps 1 pt 0 lc rgb 'black'
|
|
|
|
plot 'ALL-combined-both.csv' using (\$1 / 50):(\$3 + \$4) title 'SS peptide' with filledcurves y1=0 ls 1, \
|
|
'' using (\$1 / 50):(\$3) title '{/Arial-Italic Boc}' with filledcurves y1=0 ls 2
|
|
|
|
exit
|
|
|
|
GNUPLOT_INPUT
|
|
}
|
|
|
|
namd_energy
|
|
|
|
|
|
|