Re: Feature request for the colvars module -- TCL syntax

From: Axel Kohlmeyer (akohlmey_at_gmail.com)
Date: Tue Jan 18 2011 - 09:09:54 CST

dear ajasja,

while i can understand your excitement about using
scripting abilities in, there is one issue that i recommend
to take seriously before going too far with this.

first off, i would advise strongly against making your
input depend on environment variables. this adds an
"external" element to your input and makes reproducing
a run depend on _two_ factors: your input and the current
environment (which may or may not be set from a script).
this can very easily to confusion or scenarios, where you
don't know for certain how to reproduce a given result.
not exactly what you want to have.

secondly, scripting is most valuable when you can use
it to handle repetitive tasks and thus avoid typos or to
guarantee that certain parts of an input are consistent.
however, as it was already mentioned, you can do most,
if not all, of it by simply using a preprocessor and templates
then generating a single full input file. again, the benefit
is that it is much easier to reproduce calculations and
to verify that certain settings have been made exactly
as you expect them to be.

the fact that something can technically be done, does
not always mean that it is a good idea to do it.

cheers,
    axel.

On Tue, Jan 18, 2011 at 8:17 AM, Ajasja Ljubetič
<ajasja.ljubetic_at_gmail.com> wrote:
> Dear Jérôme and Chris,
>
> In general I think that this templating system I linked to could be used
> directly from the NAMD conf file. It would take the input template and
> output a substituted conf file. I think something like this could be
> implemented in pure TCL
> #NAMD.conf
> colvarsConfig   [substify template.name out.name]
>
> This would then create a filled out template out.name and return the correct
> file name.
>
> All my "problems" are basically just minor inconveniences, result from the
> fact that I'm spoiled by NAMD's TCL syntax.
> Here are some concrete examples:
>
> 0) I use TCL variables extensivaly in NAMD conf files here's an example:
> #NAMD.conf
> set strucname    $env(STRUCTNAME)
> structure        $strucname.psf
> coordinates      $strucname.pdb
> ..
> #set length      $env(LENGTH_NS) ;#ns
> set timestep     1 ;#femtosecond
> ..
> #set numsteps     [expr round(($length * 1000000)/ $timestep)]
>
> 1) Lets say I would like to change the number of samples for each bin. But
> then I have to edit the number of steps to run in the NAMD conf file as well
> (and I always kept forgetting this). Using TCl I could just do:
>
> #NAMD.conf
> set fullsamples 500
> set numbins   10 ;#
>
> ..
> set numsteps [expr $fullsamples*($numbins+1)]
> run $numsteps
>
> #colvars.in
> colvar {
>   name chi1
>
>   width [expr 360/$numbins]
>   lowerboundary -180
>   upperboundary 180
>   ...
> }
>
> abf {
>   colvars chi1
>   fullSamples     $fullsamples
> }
>
> 2) Let's say I have 5 colvars and I would like to run the simulations on the
> pairs of colvars. Using TCl I could have just one pair of configurations
> files instead of 10 pairs.
> #namd.conf
>
> set colvar1 chi1
> set colvar2 chi2
>
> #colvar.in
> if {[string compare "chi1" $colvar1 ] || [string compare "chi1" $colvar2 ] }
> {
> .define chi1..
> }
>
> if {[string compare "chi2" $colvar1 ] || [string compare "chi2" $colvar2] }
> {
> .define chi2..
> }
> ..
> abf {
>   colvars $colvar1 $colvar2
>   fullSamples     $fullsamples
> }
>
>
> 3) Let's say I have some similar systems (a protein labeled at different
> positions). Using enviorment variables I could use the same pair of conf
> files and pass the different atom ID’s like this:
> #colvar.in
> …
>  dihedral {
>     group1 { $env(ATOM1) }
>     group2 { $env(ATOM2)}
>     group3 { $env(ATOM3)}
>     group4 { $env(ATOM4)}
>   }
> …
>
>
>
> Best regards,
> Ajasja
>
>

-- 
Dr. Axel Kohlmeyer
akohlmey_at_gmail.com  http://goo.gl/1wk0
Institute for Computational Molecular Science
Temple University, Philadelphia PA, USA.

This archive was generated by hypermail 2.1.6 : Wed Feb 29 2012 - 15:56:32 CST