From: John Stone (johns_at_ks.uiuc.edu)
Date: Wed Nov 21 2007 - 13:26:48 CST

Hi,

On Tue, Nov 06, 2007 at 09:02:27PM -0500, jiwu liu wrote:
> Hi John,
>
> I have tried what you said -- direct output to /dev/null. But it doesn't
> work. The same problem persists.

I could try taking a look at this if you send me your script, but I
can't make any promises about solving it since I don't know what the
source of the problem is.

> 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?

No, its a separate script that you have to run in 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. )

Read the text in the script page and the script itself and you should
be able to figure it out. Try using the script as intended first before
you try modifying it or using it with your code.

Cheers,
  John

> 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
>

-- 
NIH Resource for Macromolecular Modeling and Bioinformatics
Beckman Institute for Advanced Science and Technology
University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801
Email: johns_at_ks.uiuc.edu                 Phone: 217-244-3349
  WWW: http://www.ks.uiuc.edu/~johns/      Fax: 217-244-6078