Thank you for your detailed steps!
> 在 2016年5月31日,下午12:53,Christopher Neale <chris.ne...@alum.utoronto.ca> 写道:
> 
> Dear Ouyang:
> 
> There is a script in the gromacs package (at least up to 5.1.2) called 
> demux.pl . You can use it to get more human friendly information out of your 
> REMD runs ( see http://www.gromacs.org/Documentation/How-tos/REMD for some 
> very sparse info on demux.pl ). Basically you feed it the log file and it 
> provides you with some useful output files. You can then use the -demux 
> option to trjcat to get demuxed xtc files.  The demux.pl script is not 
> perfect. The last time I looked it could not handle more than X frames (I 
> forget how many, but I and others posted fixes to the gmx mailing list a few 
> years ago). Also, it relies on a sensible .log file and if you (1) run REMD 
> then (2) have some type of crash or walltime overrun that does not give you 
> .cpt files then (3) you restart REMD and it runs fine past the point of the 
> previous crash, then demux.pl will give you good data. However, if you go 
> through steps 1 and 2 above and then you restart REMS and it crashed again 
> before you get to the 
> point of the first crash then even if you again restart and you pass this 
> point the log file will never be OK for demux.pl . I have some scrips that 
> can recover from such an error but they are generally not necessary unless 
> you have a run on a cluster that is unstable over some period. I have pasted 
> my fix script below for posterity, though you very likely don't need it.
> 
> $ cat checkforproblems.sh
> # This script finds and fixes any problems in the log file prior to demuxing
> # When this script is done:
> #   if the ./problems file is empty then everything was fixed (or no problems 
> ex                                                                            
>             isted)
> #   if the ./problems file is NOT empty, then some problem remain
> #
> # Command line input parameters:
> #   $1 = the number of MD integration steps between exchange attempts
> #   $2 = the location of the log file to use
> 
> STEP=$1
> LOG=$2
> 
> function find_problems {
>  # $1 = log file
>  grep "^Replica exchange at step" $1 |awk '{if($5!=last+'$STEP')print 
> $5,last;l                                                                     
>                    ast=$5}' > problems.init
>  if (($(cat problems.init|wc -l)!=0)); then
>    cat problems.init | awk '{printf("%d\t",$2);if(NR%2==0)printf("\n")}' > 
> prob                                                                          
>               lems
>  else
>    rm -f problems
>    touch problems
>  fi
>  grep "^Replica exchange at step" $1 |awk '{print $5,last;last=$5}' > z
> }
> 
> function fix_problems {
>  # $1 = log file input
>  # $2 = log file output
>  # $3 = low cut
>  # $4 = high cut
>  # $5 = step
>  cat $1 |awk '
>  BEGIN{
>    part=0;
>    step='$5'
>    foundlow=0
>    foundhigh=0
>    printjustonemore=0
>    printnextround=0
>    ##print "Fixing with:","'$1'","'$2'",'$3','$4','$5' >> 
> "./FIX_PROBLEMS_INPUT                                                         
>                                "
>  }
> 
>  {
>    if(part==0){
>      if($1=="Replica"&&$2=="exchange"&&$3=="at"&&$4="step"){
>        part=1
>        n=$5
>        if(n=='$3'){
>          foundlow++
>        }
>        if(n=='$4'){
>          foundhigh++
>        }
>        if(foundlow==0){
>          # output if we did not yet find the low cutoff
>          printit=1
>        }else{
>          # found the low cutoff
>          if(foundhigh==0){
>            # want to print the low cutoff once, so use the printjustonemore 
> var                                                                           
>              iable to do so, then reset printit variable after output
>            printjustonemore=1
>          }else{
>            # Now only ouput if we have seen the first occurrence of the high 
> cu                                                                            
>             toff, but dont want this value, so use the printnextround variable
>            printnextround=1
>          }
>        }
>      }
>    }else{
>      if($1!="Repl"){
>        part=0
>        # Print a sinfle blank line after each replica segment
>        print ""
>      }
>    }
>    if(part){
>      if(printit){
>        print $0
>        if(printjustonemore){
>          printjustonemore=0
>          printit=0
>        }
>      }
>      if(printnextround){
>        printit=1
>      }
>    }
>  }' > $2
> }
> 
> 
> # Step 0: cleanup
> rm -f _ERROR_ problems* z* fixed.log*
> 
> 
> # Step 1: Find any problems
> # this tr command is necessary in case there was corruption in the .log file
> cat $LOG | tr -d '\0' > my.log
> find_problems my.log
> 
> # Step 2: Fix any problems
> n=0
> cp problems problems.$n
> cp problems.init problems.init.$n
> cp z z.$n
> 
> cat problems.0 | while read line; do
>  # exit the loop if there are no more problems
>  if (($(cat problems|wc -l)==0)); then
>    break
>  fi
>  let "n++"
>  fn=($line)
>  fix_problems my.log fixed.log ${fn[0]} ${fn[1]} $STEP
>  cp fixed.log fixed.log.${n}
>  cp fixed.log my.log
>  find_problems fixed.log
>  cp problems problems.$n
>  cp problems.init problems.init.$n
>  cp z z.$n
> done
> 
> 
> # Want this file fixed.log to always exist so that I can use it in the DEMUX 
> scripts
> if [ ! -e fixed.log ]; then
>  mv my.log fixed.log
> else
>  rm my.log
> fi
> # Find any problems
> find_problems fixed.log
> 
> 
> ________________________________________
> From: gromacs.org_gmx-users-boun...@maillist.sys.kth.se 
> <gromacs.org_gmx-users-boun...@maillist.sys.kth.se> on behalf of YanhuaOuyang 
> <15901283...@163.com>
> Sent: 22 May 2016 04:48:53
> To: gmx-us...@gromacs.org
> Subject: [gmx-users] Analyse REMD
> 
> Hi, I have run a REMD, which including 46 replicas. I searched how to analyze 
> my REMD statistics, but I am still confused how to analyze my result; how to 
> generate a continuous a energy distribution curve; how to deal with 46 .log 
> files. It seems so complicated.
> 
> one of my md.log file is as below:
> Replica exchange at step 998000 time 1996.00000
> Repl 18 <-> 19  dE_term =  1.690e+01 (kT)
> Repl ex  0    1    2    3    4 x  5    6 x  7    8 x  9   10   11   12   13   
> 14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29 
>   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   
> 45
> Repl pr   .01       .17       .03       1.0       1.0       .00       .00     
>   .01       .00       .00       .00       .00       .00       .00       .00   
>     .00       .00       .00       .00       .00       .00       .00       .00
> 
> Replica exchange statistics
> Repl  499 attempts, 250 odd, 249 even
> Repl  average probabilities:
> Repl     0    1    2    3    4    5    6    7    8    9   10   11   12   13   
> 14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29 
>   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   
> 45
> Repl      .07  .08  .05  .05  .06  .06  .06  .06  .06  .05  .05  .04  .03  
> .05  .03  .03  .03  .01  .03  .02  .04  .02  .02  .02  .01  .02  .02  .01  
> .01  .01  .01  .01  .01  .01  .01  .02  .01  .01  .02  .00  .02  .00  .02  
> .02  .01
> Repl  number of exchanges:
> Repl     0    1    2    3    4    5    6    7    8    9   10   11   12   13   
> 14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29 
>   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   
> 45
> Repl       14   20   13   12   16   14   15   17   14   15    9   12    8   
> 13    7    5    7    2    5    6   10    6    4    6    2    5    3    1    6 
>    3    3    3    2    3    4    5    2    3    4    2    4    2    4    4    
> 3
> Repl  average number of exchanges:
> Repl     0    1    2    3    4    5    6    7    8    9   10   11   12   13   
> 14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29 
>   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   
> 45
> Repl      .06  .08  .05  .05  .06  .06  .06  .07  .06  .06  .04  .05  .03  
> .05  .03  .02  .03  .01  .02  .02  .04  .02  .02  .02  .01  .02  .01  .00  
> .02  .01  .01  .01  .01  .01  .02  .02  .01  .01  .02  .01  .02  .01  .02  
> .02  .01
> I wonder whether the result is ideal, do I need to optimize my temperature 
> distribution.
> 
> Best regards
> ouyang
> --
> Gromacs Users mailing list
> 
> * Please search the archive at 
> http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before posting!
> 
> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
> 
> * For (un)subscribe requests visit
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or send a 
> mail to gmx-users-requ...@gromacs.org.
> -- 
> Gromacs Users mailing list
> 
> * Please search the archive at 
> http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before posting!
> 
> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
> 
> * For (un)subscribe requests visit
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or send a 
> mail to gmx-users-requ...@gromacs.org.


-- 
Gromacs Users mailing list

* Please search the archive at 
http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before posting!

* Can't post? Read http://www.gromacs.org/Support/Mailing_Lists

* For (un)subscribe requests visit
https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or send a 
mail to gmx-users-requ...@gromacs.org.

Reply via email to