wait function doesn't seem to help. If I use wait(<some positive integer>), python stops executing ahead and hangs. If I use wait(<zero or some negative integer>), the code runs ignoring wait.

This is my program:
I have defined a variable atom1 which is an atom in chimera. Then I execute this program:

>>> atom1.setCoord(chimera.Point(0,0,0));
>>> for i in range(5):
     time.sleep(0.1);
     atom1.setCoord(chimera.Point(0,0,i));
     wait(1);

I was expecting to see the atom move by 1 unit every loop but that does not happen. What would you suggest me to insert in this for loop so that the value on atom1 is updated in chimera?

Thank you.

On Tue, Jul 10, 2012 at 7:22 PM, Eric Pettersen <pett@cgl.ucsf.edu> wrote:
Hi Raju,
During the execution of a Python script, Chimera does not redraw the graphics screen until explicitly requested or when the script ends.  The simplest way to ask for a redraw is to execute the "wait 1" Chimera command, which you can do from Python with:

from chimera import runCommand
runCommand("wait 1")

So if you embed that in your loop you should be able to see your atom move.  Frames are redrawn at a rate of 25 per second (though future versions of Chimera may allow faster redraw rates), so you may want to wait more than 1 frame if the atoms moves too fast.
Alternatively, there is also a direct Python call to wait():

from Midas import wait
wait(1)

FYI, there is another mailing list, chimera-dev, where programming-intensive questions like this one are more appropriate, so that the regular user's eyes don't glaze over. :-)

--Eric

                        Eric Pettersen
                        UCSF Computer Graphics Lab
                        http://www.cgl.ucsf.edu

On Jul 10, 2012, at 9:07 AM, Raju Purohit wrote:

Hello friends,

I need some help here.

I created a basic model having just an atom and set its coordinates as (0,0,0). Now I want to make it move along a certain path defined mathematically (say, along x axis) and I need to see it move. So I used a for loop. But I couldn't see and motion and soon realised that the loop is very quick in executing and thus I could see the atom at its last coordinates. So I tried to add delay of 0.5 seconds for each loop by importing time module and useing time.sleep. But still I couldn't see any motion and the coordinates of the atom is set only at the end of the for loop. I could not see the intermediate path. I am sure you people must have tried this earlier and this problem has a solution but I just couldn't figure it out. 

Can you please help me out?

Thank you in advance.

--
Raju R.N.
Third Year, B.Tech
Mechanical Engineering
National Institute of Technology Karnataka, Surathkal

_______________________________________________
Chimera-users mailing list
Chimera-users@cgl.ucsf.edu
http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users






--
Raju R.N.
Third Year, B.Tech
Mechanical Engineering
National Institute of Technology Karnataka, Surathkal