Re: [AMBER] problem in plotting total energy graphs by perl script

From: Bill Ross <ross.cgl.ucsf.edu>
Date: Sat, 19 Mar 2016 13:11:40 -0700

Have you looked at mden file contents? They could be easier to work with.

Bill

On 3/19/16 3:16 AM, Sehrish Naz Aijaz wrote:
> Dear Hai,
> I try to run this in my amber12 but it gives the following error. Can you explain this to me...
> Traceback (most recent call last):
> File "/usr/local/amber14/bin/mdout_analyzer.py", line 3, in <module>
> from tkFileDialog import askopenfilenames
> ImportError: No module named tkFileDialog
>
> Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>
> From: Hai Nguyen<mailto:nhai.qn.gmail.com>
> Sent: 19 March 2016 14:48
> To: AMBER Mailing List<mailto:amber.ambermd.org>
> Subject: Re: [AMBER] problem in plotting total energy graphs by perl script
>
> I think it should be compatible (Jason might correct me if I am wrong).
>
> Here is the tutorial: http://jswails.wikidot.com/helpful-scripts#toc8
>
> Cheers
> Hai
>
> On Sat, Mar 19, 2016 at 2:26 AM, Sehrish Naz Aijaz <sehrish.naz.outlook.com>
> wrote:
>
>> Dear Hai,
>> I have amber12 in my system. Is this script compatible for amber12 which I
>> think not compatible with amber12. So what should I do???
>>
>> Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for
>> Windows 10
>>
>> From: Hai Nguyen<mailto:nhai.qn.gmail.com>
>> Sent: 19 March 2016 13:56
>> To: AMBER Mailing List<mailto:amber.ambermd.org>
>> Subject: Re: [AMBER] problem in plotting total energy graphs by perl script
>>
>> Can you try to use mdout_analyzer.py in AmberTools15? (It's pain to debug
>> Perl code)
>>
>> Check http://ambermd.org/doc12/Amber15.pdf (page 515)
>>
>> Hai
>>
>> On Sat, Mar 19, 2016 at 1:25 AM, Sehrish Naz Aijaz <
>> sehrish.naz.outlook.com>
>> wrote:
>>
>>> Dear all,
>>> I had run 10 ns simulation (AMBER12) of large compounds in TIP3P box to
>>> check their stable conformation with time. the input file I used for
>>> production is
>>> NPT production with no restrains
>>> &cntrl
>>> imin=0, ntx=7, irest=1, ntrx=1, ntxo=1,
>>> ntpr=500, ntwx=500, ntwv=200, ntwe=200,
>>> ntf=2, ntb=2, cut=10.0,
>>> nsnb=100, igb=0,
>>> nstlim=2000000,
>>> t=0.0, dt=0.001,
>>> ntt=3, gamma_ln=1.0, tempi=300.0, temp0=300.0,
>>> vlimit=20,
>>> ntp=1, taup=1.0, pres0=1.0, comp=44.6,
>>> ntc=2, tol=0.00000001,
>>> /
>>>
>>> after getting the production files. I tried to calculate the total energy
>>> graphs of the system by using perl script as follows
>>> . #!/usr/bin/perl
>>>
>>>
>>> if ($#ARGV < 0) {
>>> print " Incorrect usage...\n";
>>> exit;
>>> }
>>>
>>>
>>> foreach $i ( 0..$#ARGV ) {
>>> $filein = $ARGV[$i];
>>> $checkfile = $filein;
>>> $checkfile =~ s/\.Z//;
>>> if ( $filein ne $checkfile ) {
>>> open(INPUT, "zcat $filein |") ||
>>> die "Cannot open compressed $filein -- $!\n";
>>> } else {
>>> open(INPUT, $filein) || die "Cannot open $filein -- $!\n";
>>> }
>>> print "Processing sander output file ($filein)...\n";
>>> &process_input;
>>> close(INPUT);
>>> }
>>>
>>> print "Starting output...\n";
>>> .sortedkeys = sort by_number keys(%TIME);
>>> .sortedavgkeys = sort by_number keys(%AVG_TIME);
>>>
>>> foreach $i ( TEMP, TSOLUTE, TSOLVENT, PRES, EKCMT, ETOT, EKTOT, EPTOT,
>>> DENSITY, VOLUME, ESCF ) {
>>> print "Outputing summary.$i\n";
>>> open(OUTPUT, "> summary.$i");
>>> %outarray = eval "\%$i";
>>> foreach $j ( .sortedkeys ) {
>>> print OUTPUT "$j ", $outarray{$j}, "\n";
>>> }
>>> close (OUTPUT);
>>>
>>> print "Outputing summary_avg.$i\n";
>>> open(OUTPUT, "> summary_avg.$i");
>>> %outarray = eval "\%AVG_$i";
>>> foreach $j ( .sortedavgkeys ) {
>>> print OUTPUT "$j ", $outarray{$j}, "\n";
>>> }
>>> close (OUTPUT);
>>>
>>> print "Outputing summary_rms.$i\n";
>>> open(OUTPUT, "> summary_rms.$i");
>>> %outarray = eval "\%RMS_$i";
>>> foreach $j ( .sortedavgkeys ) {
>>> print OUTPUT "$j ", $outarray{$j}, "\n";
>>> }
>>> close (OUTPUT);
>>>
>>>
>>> }
>>>
>>>
>>> sub by_number {
>>> if ($a < $b) {
>>> -1;
>>> } elsif ($a == $b) {
>>> 0;
>>> } elsif ($a > $b) {
>>> 1;
>>> }
>>> }
>>>
>>> sub process_input {
>>>
>>> $status = 0;
>>> $debug = 0;
>>> while ( <INPUT> ) {
>>> $string = $_;
>>>
>>> print $_ if ( ! /NB-upda/ && $debug );
>>>
>>> if (/A V E R A G E S/) {
>>> $averages = 1;
>>> ($averages_over) = /.*O V E R.*(\d*).*S T E P S/;
>>> }
>>>
>>> $rms = 1 if (/R M S/);
>>>
>>> if (/NSTEP/) {
>>> ($time, $temp, $pres) =
>>> /NSTEP =.*TIME.* =(.*\d*\.\d*).*TEMP.* =(.*\d*\.\d*).*PRESS =
>>> (.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "time is $time, temp is $temp, pres is $pres\n";
>>> }
>>> $_ = <INPUT>;
>>>
>>> if (/Etot/) {
>>> ($etot, $ektot, $eptot) =
>>>
>>> /Etot.*=(.*\d*\.\d*).*EKtot.*=(.*\d*\.\d*).*EPtot.*=(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "Etot is $etot, ektot is $ektot, eptot is $eptot\n";
>>> }
>>> $_ = <INPUT>;
>>> }
>>> if (/BOND.*ANGLE.*DIHED/) {
>>> ($bond, $angle, $dihedral) =
>>>
>>> /BOND.*=(.*\d*\.\d*).*ANGLE.*=(.*\d*\.\d*).*DIHED.*=(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "bond is $bond, angle is $angle, dihedral is
>>> $dihedral\n";
>>> }
>>> $_ = <INPUT>;
>>> }
>>> if (/1-4 NB/) {
>>> ($nb14, $eel14, $nb) =
>>> /1-4 NB.*=(.*\d*\.\d*).*1-4
>>> EEL.*=(.*\d*\.\d*).*VDWAALS.*=(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "nb14 is $nb14, eel14 is $eel14, vdwaals is $nb\n";
>>> }
>>> $_ = <INPUT>;
>>> }
>>> if (/EELEC/) {
>>> ($eel, $ehbond, $constraint) =
>>>
>>> /EELEC.*=(.*\d*\.\d*).*EHBOND.*=(.*\d*\.\d*).*CONSTRAINT.*=(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "eel is $eel, ehbond is $ehbond, constraint is
>>> $constraint\n";
>>> }
>>> $_ = <INPUT>;
>>> #
>>> # check to see if EAMBER is in the mdout file (present when
>>> # NTR=1)
>>> #
>>> if ( /EAMBER/ ) {
>>> $_ = <INPUT>;
>>> }
>>> }
>>> if (/EKCMT/) {
>>> ($ekcmt, $virial, $volume) =
>>>
>>> /EKCMT.*=(.*\d*\.\d*).*VIRIAL.*=(.*\d*\.\d*).*VOLUME.*=(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "Ekcmt is $ekcmt, virial is $virial, volume is
>>> $volume\n";
>>> }
>>> $_ = <INPUT>;
>>> }
>>> if (/T_SOLUTE/) {
>>> ($tsolute, $tsolvent) =
>>> /T_SOLUTE =(.*\d*\.\d*).*T_SOLVENT =(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "Temp solute is $tsolute, temp solvent is $tsolvent\n";
>>> }
>>> $_ = <INPUT>;
>>> }
>>>
>>> if (/Density/) {
>>> ($density) = /.*Density.*=(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "Density is $density\n";
>>> }
>>> $_ = <INPUT>;
>>> }
>>>
>>> if (/Etot/) {
>>> ($etot, $ektot, $eptot) =
>>>
>>> /Etot.*=(.*\d*\.\d*).*EKtot.*=(.*\d*\.\d*).*EPtot.*=(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "Etot is $etot, ektot is $ektot, eptot is $eptot\n";
>>> }
>>> $_ = <INPUT>;
>>> }
>>> if (/ESCF/) {
>>> ($escf) =
>>> /.*ESCF.*=(.*\d*\.\d*)/;
>>> if ( $debug ) {
>>> print $_;
>>> print "ESCF is $escf\n";
>>> }
>>> $_ = <INPUT>;
>>> }
>>>
>>> # update arrays
>>>
>>> if ( $averages == 1 ) {
>>> $AVG_TIME{$time} = $time;
>>> $AVG_TEMP{$time} = $temp;
>>> $AVG_PRES{$time} = $pres;
>>> $AVG_ETOT{$time} = $etot;
>>> $AVG_EKTOT{$time} = $ektot;
>>> $AVG_EPTOT{$time} = $eptot;
>>> $AVG_BOND{$time} = $bond;
>>> $AVG_ANGLE{$time} = $angle;
>>> $AVG_DIHEDRAL{$time} = $dihedral;
>>> $AVG_NB14{$time} = $nb14;
>>> $AVG_EEL14{$time} = $eel14;
>>> $AVG_NB{$time} = $nb;
>>> $AVG_EEL{$time} = $eel;
>>> $AVG_EHBOND{$time} = $ehbond;
>>> $AVG_CONSTRAINT{$time} = $constraint;
>>> $AVG_EKCMT{$time} = $ekcmt;
>>> $AVG_VIRIAL{$time} = $virial;
>>> $AVG_VOLUME{$time} = $volume;
>>> $AVG_TSOLUTE{$time} = $tsolute;
>>> $AVG_TSOLVENT{$time} = $tsolvent;
>>> $AVG_DENSITY{$time} = $density;
>>> $AVG_ESCF{$time} = $escf;
>>> $averages = 0;
>>> } elsif ( $rms == 1 ) {
>>> $RMS_TIME{$time} = $time;
>>> $RMS_TEMP{$time} = $temp;
>>> $RMS_PRES{$time} = $pres;
>>> $RMS_ETOT{$time} = $etot;
>>> $RMS_EKTOT{$time} = $ektot;
>>> $RMS_EPTOT{$time} = $eptot;
>>> $RMS_BOND{$time} = $bond;
>>> $RMS_ANGLE{$time} = $angle;
>>> $RMS_DIHEDRAL{$time} = $dihedral;
>>> $RMS_NB14{$time} = $nb14;
>>> $RMS_EEL14{$time} = $eel14;
>>> $RMS_NB{$time} = $nb;
>>> $RMS_EEL{$time} = $eel;
>>> $RMS_EHBOND{$time} = $ehbond;
>>> $RMS_CONSTRAINT{$time} = $constraint;
>>> $RMS_EKCMT{$time} = $ekcmt;
>>> $RMS_VIRIAL{$time} = $virial;
>>> $RMS_VOLUME{$time} = $volume;
>>> $RMS_TSOLUTE{$time} = $tsolute;
>>> $RMS_TSOLVENT{$time} = $tsolvent;
>>> $RMS_DENSITY{$time} = $density;
>>> $RMS_ESCF{$time} = $escf;
>>>
>>> $rms = 0;
>>> } else {
>>> $TIME{$time} = $time;
>>> $TEMP{$time} = $temp;
>>> $PRES{$time} = $pres;
>>> $ETOT{$time} = $etot;
>>> $EKTOT{$time} = $ektot;
>>> $EPTOT{$time} = $eptot;
>>> $BOND{$time} = $bond;
>>> $ANGLE{$time} = $angle;
>>> $DIHEDRAL{$time} = $dihedral;
>>> $NB14{$time} = $nb14;
>>> $EEL14{$time} = $eel14;
>>> $NB{$time} = $nb;
>>> $EEL{$time} = $eel;
>>> $EHBOND{$time} = $ehbond;
>>> $CONSTRAINT{$time} = $constraint;
>>> $EKCMT{$time} = $ekcmt;
>>> $VIRIAL{$time} = $virial;
>>> $VOLUME{$time} = $volume;
>>> $TSOLUTE{$time} = $tsolute;
>>> $TSOLVENT{$time} = $tsolvent;
>>> $DENSITY{$time} = $density;
>>> $ESCF{$time} = $escf;
>>> }
>>>
>>> }
>>> }
>>> }
>>>
>>> But after running this perl script on the output files I got graph
>>> displaying half values of output files as attached here. Can anybody
>> guide
>>> me whats wrong with the perl graph or my input file as my output files
>> are
>>> printing all values for energy but perl script plot half values???
>>>
>>>
>>>
>>> Sent from Mail for Windows 10
>>>
>>>
>>> _______________________________________________
>>> AMBER mailing list
>>> AMBER.ambermd.org
>>> http://lists.ambermd.org/mailman/listinfo/amber
>>>
>>>
>> _______________________________________________
>> AMBER mailing list
>> AMBER.ambermd.org
>> http://lists.ambermd.org/mailman/listinfo/amber
>> _______________________________________________
>> AMBER mailing list
>> AMBER.ambermd.org
>> http://lists.ambermd.org/mailman/listinfo/amber
>>
> _______________________________________________
> AMBER mailing list
> AMBER.ambermd.org
> http://lists.ambermd.org/mailman/listinfo/amber
> _______________________________________________
> AMBER mailing list
> AMBER.ambermd.org
> http://lists.ambermd.org/mailman/listinfo/amber


_______________________________________________
AMBER mailing list
AMBER.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber
Received on Sat Mar 19 2016 - 13:30:03 PDT
Custom Search