Difference between revisions of "Per-residue energy decompositions"
From Rizzo_Lab
(→Per-residue energy decompositions) |
(→Using Namd) |
||
Line 1: | Line 1: | ||
− | == Using Namd == | + | The Molecular Mechanics energy function is a pair-wise additive function which can be broken into per-residue components. |
+ | |||
+ | We call these plots molecular interaction footprints. | ||
+ | |||
+ | == Calculate Decompositions Using Namd == | ||
+ | |||
+ | |||
+ | The following script uses vmd to create pdb files label every atom with the | ||
+ | |||
+ | |||
+ | run.005.vmd.namd.energy.decomp_sw.csh: | ||
+ | |||
+ | #! /bin/csh -fe | ||
+ | |||
+ | set mountdir = "/nfs/user03/chembio/AMBER_Project" | ||
+ | |||
+ | set start = 1 | ||
+ | set stop = 35 | ||
+ | set offset = 1 | ||
+ | |||
+ | set workdir = "${mountdir}/006.FP.VMD.NAMD" | ||
+ | |||
+ | cd ${workdir} | ||
+ | |||
+ | ########################################### | ||
+ | |||
+ | set res_start = ${start} | ||
+ | set res_stop = ${stop} | ||
+ | @ loop_stop = ${res_stop} + 1 | ||
+ | |||
+ | cat << EOF > ptraj.in | ||
+ | trajin ${mountdir}/004.ptraj/1qp6.rec.trj.stripfit | ||
+ | trajout 1qp6.rec.stripfit.dcd charmm | ||
+ | EOF | ||
+ | |||
+ | ptraj ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.prm7 ptraj.in > ptraj.out | ||
+ | |||
+ | |||
+ | ########################################### | ||
+ | cat <<EOFK >pair.maker.tcl | ||
+ | #opens the file that has the atoms that are to be set-up for pair-interaction calculations | ||
+ | mol load parm7 ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.prm7 rst7 ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.rst7 | ||
+ | |||
+ | for {set resid_num $res_start} {\$resid_num < $loop_stop} {incr resid_num} { | ||
+ | set all [atomselect top all] | ||
+ | \$all set beta 0 | ||
+ | set case1 [atomselect top "protein and resid 36 to 70"] | ||
+ | \$case1 set beta 1 | ||
+ | set case2 [atomselect top "protein and resid \$resid_num"] | ||
+ | \$case2 set beta 2 | ||
+ | \$all writepdb 1qp6.rec.gas.pair.\$resid_num.pdb | ||
+ | } | ||
+ | quit | ||
+ | EOFK | ||
+ | ########################################### | ||
+ | # copy DCD files required in the calculations | ||
+ | # to the current directory | ||
+ | |||
+ | # make a special PDB files defining what the two species will be for pair interaciton calcs | ||
+ | /nfs/user03/sudipto/vmd-1.9/bin/vmd -dispdev text -e pair.maker.tcl >> zzz.pair.maker.out | ||
+ | |||
+ | echo "MAKE INPUT FILES" | ||
+ | date | ||
+ | |||
+ | set res_start = ${start} | ||
+ | set res_stop = ${stop} | ||
+ | @ loop_stop = ${res_stop} + 1 | ||
+ | |||
+ | set start_residue = $res_start | ||
+ | set loop_stop = $loop_stop | ||
+ | set count01 = $start_residue | ||
+ | |||
+ | ########################################### | ||
+ | ########################################### | ||
+ | while ( $count01 < $loop_stop ) | ||
+ | ########################################### | ||
+ | cat <<EOFL >07_to_08pr.$count01.in | ||
+ | # initial config | ||
+ | temperature 0 | ||
+ | |||
+ | # output params | ||
+ | outputname 1qp6.rec.gas.$count01 | ||
+ | binaryoutput no | ||
+ | |||
+ | # integrator params | ||
+ | timestep 1.0 | ||
+ | |||
+ | # force field params | ||
+ | amber on | ||
+ | parmfile ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.prm7 | ||
+ | ambercoor ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.rst7 | ||
+ | readexclusions yes # exclusions are taken from parmfile | ||
+ | exclude scaled1-4 | ||
+ | 1-4scaling 0.833333 # =1/1.2, default is 1.0 | ||
+ | scnb 2.0 # Defalt | ||
+ | switching off | ||
+ | cutoff 999.0 | ||
+ | |||
+ | # Atoms in group 1 have a 1 in the B column; group 2 has a 2 | ||
+ | pairInteraction on | ||
+ | pairInteractionFile 1qp6.rec.gas.pair.$count01.pdb | ||
+ | pairInteractionCol B | ||
+ | pairInteractionGroup1 1 | ||
+ | pairInteractionGroup2 2 | ||
+ | |||
+ | # First frame saved was frame 1000. | ||
+ | set ts 1000 | ||
+ | |||
+ | coorfile open dcd 1qp6.rec.stripfit.dcd | ||
+ | |||
+ | # Read all frames until nonzero is returned. | ||
+ | while { ![coorfile read] } { | ||
+ | # Set firstTimestep so our energy output has the correct TS. | ||
+ | firstTimestep \$ts | ||
+ | # Compute energies and forces, but don't try to move the atoms. | ||
+ | run 0 | ||
+ | incr ts 1000 | ||
+ | } | ||
+ | coorfile close | ||
+ | EOFL | ||
+ | ########################################### | ||
+ | |||
+ | |||
+ | cat << EOF > fp.namd.${count01}.csh | ||
+ | #! /bin/csh | ||
+ | #PBS -l walltime=24:00:00 | ||
+ | #PBS -V | ||
+ | |||
+ | cd ${workdir} | ||
+ | |||
+ | hostname | ||
+ | date | ||
+ | echo "START CALCS" | ||
+ | |||
+ | namd2 07_to_08pr.${count01}.in > 07_to_08pr.${count01}.out | ||
+ | |||
+ | EOF | ||
+ | |||
+ | qsub fp.namd.${count01}.csh | ||
+ | |||
+ | |||
+ | @ count01 = $count01 + 1 | ||
+ | ########################################### | ||
+ | ########################################### | ||
+ | end | ||
+ | |||
+ | exit | ||
+ | |||
+ | |||
+ | Analysis script using ack which calculates the mean and standard deviation | ||
+ | |||
+ | run.006.vmd.namd.energy.decomp_sw_analysis.csh: | ||
+ | #! /bin/csh -fe | ||
+ | |||
+ | set mountdir = "/nfs/user03/chembio/AMBER_Project" | ||
+ | |||
+ | set start = 1 | ||
+ | set stop = 35 | ||
+ | set offset = 1 | ||
+ | |||
+ | set workdir = "${mountdir}/006.FP.VMD.NAMD" | ||
+ | |||
+ | cd ${workdir} | ||
+ | |||
+ | set res_start = ${start} | ||
+ | set res_stop = ${stop} | ||
+ | @ loop_stop = ${res_stop} + 1 | ||
+ | |||
+ | set start_residue = $res_start | ||
+ | set loop_stop = $loop_stop | ||
+ | set count01 = $start_residue | ||
+ | |||
+ | echo "resid,mean,std" > vdw.fp.output.csv | ||
+ | echo "resid,mean,std" > es.fp.output.csv | ||
+ | |||
+ | ########################################### | ||
+ | while ( $count01 < $loop_stop ) | ||
+ | |||
+ | ## Gets VDW | ||
+ | awk ' BEGIN{count=0;sum=0;sum2=0;} /^ENERGY:/{count=count+1;sum=sum+$8;sum2 = sum2 + $8^2} END{mean=sum/count; std= ((sum2/count)- (mean^2))^(1/2); print "'${count01}'," mean "," std } ' 07_to_08pr.${count01}.out >> vdw.fp.output.csv | ||
+ | |||
+ | ##Get ES | ||
+ | awk ' BEGIN{count=0;sum=0;sum2=0;} /^ENERGY:/{count=count+1;sum=sum+$7;sum2 = sum2 + $7^2} END{mean=sum/count; std= ((sum2/count)- (mean^2))^(1/2); print "'${count01}'," mean "," std } ' 07_to_08pr.${count01}.out >> es.fp.output.csv | ||
+ | |||
+ | @ count01 = $count01 + 1 | ||
+ | |||
+ | end # while | ||
+ | |||
+ | exit |
Revision as of 17:03, 5 May 2011
The Molecular Mechanics energy function is a pair-wise additive function which can be broken into per-residue components.
We call these plots molecular interaction footprints.
Calculate Decompositions Using Namd
The following script uses vmd to create pdb files label every atom with the
run.005.vmd.namd.energy.decomp_sw.csh:
#! /bin/csh -fe set mountdir = "/nfs/user03/chembio/AMBER_Project" set start = 1 set stop = 35 set offset = 1 set workdir = "${mountdir}/006.FP.VMD.NAMD" cd ${workdir} ########################################### set res_start = ${start} set res_stop = ${stop} @ loop_stop = ${res_stop} + 1 cat << EOF > ptraj.in trajin ${mountdir}/004.ptraj/1qp6.rec.trj.stripfit trajout 1qp6.rec.stripfit.dcd charmm EOF ptraj ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.prm7 ptraj.in > ptraj.out ########################################### cat <<EOFK >pair.maker.tcl #opens the file that has the atoms that are to be set-up for pair-interaction calculations mol load parm7 ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.prm7 rst7 ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.rst7 for {set resid_num $res_start} {\$resid_num < $loop_stop} {incr resid_num} { set all [atomselect top all] \$all set beta 0 set case1 [atomselect top "protein and resid 36 to 70"] \$case1 set beta 1 set case2 [atomselect top "protein and resid \$resid_num"] \$case2 set beta 2 \$all writepdb 1qp6.rec.gas.pair.\$resid_num.pdb } quit EOFK ########################################### # copy DCD files required in the calculations # to the current directory # make a special PDB files defining what the two species will be for pair interaciton calcs /nfs/user03/sudipto/vmd-1.9/bin/vmd -dispdev text -e pair.maker.tcl >> zzz.pair.maker.out echo "MAKE INPUT FILES" date set res_start = ${start} set res_stop = ${stop} @ loop_stop = ${res_stop} + 1 set start_residue = $res_start set loop_stop = $loop_stop set count01 = $start_residue ########################################### ########################################### while ( $count01 < $loop_stop ) ########################################### cat <<EOFL >07_to_08pr.$count01.in # initial config temperature 0 # output params outputname 1qp6.rec.gas.$count01 binaryoutput no # integrator params timestep 1.0 # force field params amber on parmfile ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.prm7 ambercoor ${mountdir}/002.TLEAP/1qp6.rec.gas.leap.rst7 readexclusions yes # exclusions are taken from parmfile exclude scaled1-4 1-4scaling 0.833333 # =1/1.2, default is 1.0 scnb 2.0 # Defalt switching off cutoff 999.0 # Atoms in group 1 have a 1 in the B column; group 2 has a 2 pairInteraction on pairInteractionFile 1qp6.rec.gas.pair.$count01.pdb pairInteractionCol B pairInteractionGroup1 1 pairInteractionGroup2 2 # First frame saved was frame 1000. set ts 1000 coorfile open dcd 1qp6.rec.stripfit.dcd # Read all frames until nonzero is returned. while { ![coorfile read] } { # Set firstTimestep so our energy output has the correct TS. firstTimestep \$ts # Compute energies and forces, but don't try to move the atoms. run 0 incr ts 1000 } coorfile close EOFL ########################################### cat << EOF > fp.namd.${count01}.csh #! /bin/csh #PBS -l walltime=24:00:00 #PBS -V cd ${workdir} hostname date echo "START CALCS" namd2 07_to_08pr.${count01}.in > 07_to_08pr.${count01}.out EOF qsub fp.namd.${count01}.csh @ count01 = $count01 + 1 ########################################### ########################################### end exit
Analysis script using ack which calculates the mean and standard deviation
run.006.vmd.namd.energy.decomp_sw_analysis.csh:
#! /bin/csh -fe set mountdir = "/nfs/user03/chembio/AMBER_Project" set start = 1 set stop = 35 set offset = 1 set workdir = "${mountdir}/006.FP.VMD.NAMD" cd ${workdir} set res_start = ${start} set res_stop = ${stop} @ loop_stop = ${res_stop} + 1 set start_residue = $res_start set loop_stop = $loop_stop set count01 = $start_residue echo "resid,mean,std" > vdw.fp.output.csv echo "resid,mean,std" > es.fp.output.csv ########################################### while ( $count01 < $loop_stop ) ## Gets VDW awk ' BEGIN{count=0;sum=0;sum2=0;} /^ENERGY:/{count=count+1;sum=sum+$8;sum2 = sum2 + $8^2} END{mean=sum/count; std= ((sum2/count)- (mean^2))^(1/2); print "'${count01}'," mean "," std } ' 07_to_08pr.${count01}.out >> vdw.fp.output.csv ##Get ES awk ' BEGIN{count=0;sum=0;sum2=0;} /^ENERGY:/{count=count+1;sum=sum+$7;sum2 = sum2 + $7^2} END{mean=sum/count; std= ((sum2/count)- (mean^2))^(1/2); print "'${count01}'," mean "," std } ' 07_to_08pr.${count01}.out >> es.fp.output.csv @ count01 = $count01 + 1 end # while exit