[Chimera-users] Motion of an atom
Conrad Huang
conrad at cgl.ucsf.edu
Wed Jul 11 10:22:58 PDT 2012
This script works for me on the current daily build. It should work on
all versions of Chimera.
Conrad
On 7/11/12 6:26 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 at cgl.ucsf.edu
> <mailto:pett at 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 at cgl.ucsf.edu <mailto:Chimera-users at 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-users mailing list
> Chimera-users at cgl.ucsf.edu
> http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: moveatom.py
Type: text/x-python-script
Size: 436 bytes
Desc: not available
URL: <http://plato.cgl.ucsf.edu/pipermail/chimera-users/attachments/20120711/1b75e683/attachment.bin>
More information about the Chimera-users
mailing list