From: jiwu liu (liujiwu_at_msu.edu)
Date: Tue Nov 06 2007 - 20:02:27 CST

Hi John,

      I have tried what you said -- direct output to /dev/null. But it doesn't
work. The same problem persists.
      What you pointed me to ( the vmdcollab script ) is an interesting
solution. I want to try it out. Could you tell me a little more about how
to use it? Basically my questions are:

      (1) Is it part of standard release of vmd?
      (2) It seems my program should play the role of server. So how should I
start the vmd client together with this script? Because I really want to
finish starting and initializing vmd client in a single command. Can I do
something like:
        "vmd -startup vmdcollab"
      ( Here I understand I have to give the host and port but I don't know
how. )

     Thanks !

jiwu

On Monday 05 November 2007, John Stone wrote:
> Is your code flushing the output or otherwise reading it?
> It's possible that the stdout channel is backing up and causing
> VMD to go to sleep due to a blocking write call on stdout...
> You could either redirect the stdout channel to /dev/null, or
> else flush the output constantly.
>
> You might find it easier to control VMD through a socket interface
> where a Tcl script handles the command processing on the VMD side
> for you so you don't have to worry about output being flushed etc:
> http://www.ks.uiuc.edu/Research/vmd/script_library/scripts/vmdcollab/
>
> Cheers,
> John Stone
> vmd_at_ks.uiuc.edu
>
> On Mon, Nov 05, 2007 at 05:55:50PM -0500, jiwu liu wrote:
> > Hi,
> >
> > I wrote a simple interface to control vmd from a pipe. In python, it
> > is: p = os.popen('/usr/local/lib/vmd/vmd_LINUX', 'w')
> >
> > and then I can write command string to vmd.
> >
> > But I found that command can not be sent immediately after another
> > one, I have to insert a delay
> > time.sleep(0.5)
> > between two consecutive commands.
> >
> > For examples, I had coloring selection commands like:
> >
> > (1) set sel [atomselect 0 "name H"]
> > (2) $sel set user 1.0
> > (3) mol modcolor 0 0 User
> >
> > I had to wait for 0.5 secs between commands sent through pipe to vmd.
> > Otherwise the command would not take any effect until next sending,
> > namely, command (2) will be run when I send command (3), so will the
> > command 3. Everything will be just postponed one step( And I do have
> > "p.flush()" after each command).
> >
> > In vmd TCL scritpt , I don't see any "sleep" between two commands.
> > Why does it take a 'wait' when I use pipe to write to vmd program? does
> > it have to do with how vmd read stdin?
> > Thanks for any help.
> >
> > jiwu