Re: [chimera-dev] [Chimera-users] Motion of an atom

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

Thank you very much Eric. I will try this out. 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

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

Hi Raju, Executing the code you sent below does not hang for me, so I don't know what that issue is. There are two other problems. One is that you are changing the Z coordinate, which moves the atom in/out of the screen, not left/right or up/down, so the motion may be hard to see. Second is that there is some kind of bad interaction between Idle and the wait() call. If you put your code into a script and execute it you can see the motion fine, but if you run the code in Idle you only see the start and end positions. --Eric On Jul 11, 2012, at 5:23 AM, Raju Purohit wrote:
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
_______________________________________________ Chimera-dev mailing list Chimera-dev@cgl.ucsf.edu http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-dev
participants (2)
-
Eric Pettersen
-
Raju Purohit