
Dear Chimera, Is there a way to run a command within a python script equivalent to the chimera command 'define axis' to be able to retrieve the results (length,center, direction) ? Something like: (length,center,direction) = mydefineaxis(atomspec) Thanks Hernando

Hi Hernando, Mostly yes. The function is chimera.StructMeasure.axis(). There is a doc string for the function describing its arguments and return values. In its simplest form it takes a numpy array of xyz values and returns a Point (centroid) instance and a Vector (unit direction vector) instance. To get a length you would also have to supply the findBounds=True keyword argument, in which case it will return two additional floating-point values, the scale factors to apply to the unit vector to get it to the approximate bounds of the axis in each direction (so one of the scale factors will be negative). If you have a list of Atom instances, the easiest way to generate the numpy xyz array is with numpyArrayFromAtoms, e.g.: import chimera xyzs = chimera.numpyArrayForAtoms(atoms) If you only really have an atom spec, let me know and I can help with how to generate a list of Atoms from that. --Eric Eric Pettersen UCSF Computer Graphics Lab
On Jul 10, 2020, at 11:54 AM, Hernando J Sosa <hernando.sosa@einsteinmed.org> wrote:
Dear Chimera,
Is there a way to run a command within a python script equivalent to the chimera command 'define axis' to be able to retrieve the results (length,center, direction) ? Something like:
(length,center,direction) = mydefineaxis(atomspec)
Thanks
Hernando
_______________________________________________ Chimera-users mailing list: Chimera-users@cgl.ucsf.edu <mailto:Chimera-users@cgl.ucsf.edu> Manage subscription: https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users <https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users>

Hi Eric, I can't find the function. Trying to call it within the chimera idle-python shell I get the following error:
chimera.StructMeasure.axis() Traceback (most recent call last): File "<pyshell#3>", line 2, in <module> AttributeError: 'module' object has no attribute 'StructMeasure'
I can't see it either (or something similarly called) within the functions listed if a do
help(chimera)
H. ___________________________________ Hernando Sosa Dept. of Physiology and Biophysics Albert Einstein College of Medicine 1300 Morris Park Av. Bronx NY 10461 phone (718) 430-3456 FAX (718) 430-8819 emai: hernando.sosa@einsteinmed.org<mailto:hernando.sosa@einsteinmed.org> ___________________________________ ________________________________ From: Eric Pettersen <pett@cgl.ucsf.edu> Sent: Friday, July 10, 2020 4:44 PM To: Hernando J Sosa <hernando.sosa@einsteinmed.org> Cc: chimera-users@cgl.ucsf.edu <chimera-users@cgl.ucsf.edu> Subject: Re: [Chimera-users] axes CAUTION: This email comes from an external source; the attachments and/or links may compromise our secure environment. Do not open or click on suspicious emails. Please click on the “Phish Alert” button on the top right of the Outlook dashboard to report any suspicious emails. Hi Hernando, Mostly yes. The function is chimera.StructMeasure.axis(). There is a doc string for the function describing its arguments and return values. In its simplest form it takes a numpy array of xyz values and returns a Point (centroid) instance and a Vector (unit direction vector) instance. To get a length you would also have to supply the findBounds=True keyword argument, in which case it will return two additional floating-point values, the scale factors to apply to the unit vector to get it to the approximate bounds of the axis in each direction (so one of the scale factors will be negative). If you have a list of Atom instances, the easiest way to generate the numpy xyz array is with numpyArrayFromAtoms, e.g.: import chimera xyzs = chimera.numpyArrayForAtoms(atoms) If you only really have an atom spec, let me know and I can help with how to generate a list of Atoms from that. --Eric Eric Pettersen UCSF Computer Graphics Lab On Jul 10, 2020, at 11:54 AM, Hernando J Sosa <hernando.sosa@einsteinmed.org<mailto:hernando.sosa@einsteinmed.org>> wrote: Dear Chimera, Is there a way to run a command within a python script equivalent to the chimera command 'define axis' to be able to retrieve the results (length,center, direction) ? Something like: (length,center,direction) = mydefineaxis(atomspec) Thanks Hernando _______________________________________________ Chimera-users mailing list: Chimera-users@cgl.ucsf.edu<mailto:Chimera-users@cgl.ucsf.edu> Manage subscription: https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplato.cgl.ucsf.edu%2Fmailman%2Flistinfo%2Fchimera-users&data=02%7C01%7Chernando.sosa%40einsteinmed.org%7Cdf93aa552ac3413bb97708d8251216e0%7C9c01f0fd65e040c089a82dfd51e62025%7C0%7C0%7C637300106911058025&sdata=8fjGN1Ve%2B4HNUZL4ltu41pBMDoEsEFa3nY7CeNrL%2Fio%3D&reserved=0>

Hi Hernando, I forgot that, unlike ChimeraX, Chimera's modules are imported into the global namespace. So the module is just "StructMeasure", not "chimera.StructMeasure". Sorry about that. --Eric
On Jul 10, 2020, at 1:59 PM, Hernando J Sosa <hernando.sosa@einsteinmed.org> wrote:
Hi Eric,
I can't find the function. Trying to call it within the chimera idle-python shell I get the following error:
chimera.StructMeasure.axis() Traceback (most recent call last): File "<pyshell#3>", line 2, in <module> AttributeError: 'module' object has no attribute 'StructMeasure'
I can't see it either (or something similarly called) within the functions listed if a do
help(chimera)
H. ___________________________________ <> Hernando Sosa <> Dept. of Physiology and Biophysics Albert Einstein College of Medicine 1300 Morris Park Av. Bronx NY 10461 phone (718) 430-3456 FAX (718) 430-8819 emai: hernando.sosa@einsteinmed.org <mailto:hernando.sosa@einsteinmed.org> ___________________________________ <> <>
From: Eric Pettersen <pett@cgl.ucsf.edu <mailto:pett@cgl.ucsf.edu>> Sent: Friday, July 10, 2020 4:44 PM To: Hernando J Sosa <hernando.sosa@einsteinmed.org <mailto:hernando.sosa@einsteinmed.org>> Cc: chimera-users@cgl.ucsf.edu <mailto:chimera-users@cgl.ucsf.edu> <chimera-users@cgl.ucsf.edu <mailto:chimera-users@cgl.ucsf.edu>> Subject: Re: [Chimera-users] axes
CAUTION: This email comes from an external source; the attachments and/or links may compromise our secure environment. Do not open or click on suspicious emails. Please click on the “Phish Alert” button on the top right of the Outlook dashboard to report any suspicious emails. Hi Hernando, Mostly yes. The function is chimera.StructMeasure.axis(). There is a doc string for the function describing its arguments and return values. In its simplest form it takes a numpy array of xyz values and returns a Point (centroid) instance and a Vector (unit direction vector) instance. To get a length you would also have to supply the findBounds=True keyword argument, in which case it will return two additional floating-point values, the scale factors to apply to the unit vector to get it to the approximate bounds of the axis in each direction (so one of the scale factors will be negative). If you have a list of Atom instances, the easiest way to generate the numpy xyz array is with numpyArrayFromAtoms, e.g.:
import chimera xyzs = chimera.numpyArrayForAtoms(atoms)
If you only really have an atom spec, let me know and I can help with how to generate a list of Atoms from that.
--Eric
Eric Pettersen UCSF Computer Graphics Lab
On Jul 10, 2020, at 11:54 AM, Hernando J Sosa <hernando.sosa@einsteinmed.org <mailto:hernando.sosa@einsteinmed.org>> wrote:
Dear Chimera,
Is there a way to run a command within a python script equivalent to the chimera command 'define axis' to be able to retrieve the results (length,center, direction) ? Something like:
(length,center,direction) = mydefineaxis(atomspec)
Thanks
Hernando
_______________________________________________ Chimera-users mailing list: Chimera-users@cgl.ucsf.edu <mailto:Chimera-users@cgl.ucsf.edu> Manage subscription: https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users <https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplato.cgl.ucsf.edu%2Fmailman%2Flistinfo%2Fchimera-users&data=02%7C01%7Chernando.sosa%40einsteinmed.org%7Cdf93aa552ac3413bb97708d8251216e0%7C9c01f0fd65e040c089a82dfd51e62025%7C0%7C0%7C637300106911058025&sdata=8fjGN1Ve%2B4HNUZL4ltu41pBMDoEsEFa3nY7CeNrL%2Fio%3D&reserved=0>
Chimera-users mailing list: Chimera-users@cgl.ucsf.edu <mailto:Chimera-users@cgl.ucsf.edu> Manage subscription: https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users <https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users>

Ok StructMeasure without the 'chimera.' is there but now I can't find the function to generate the numpy array of atoms. I get the following errors: NameError: name 'numpyArrayForAtoms' is not defined or AttributeError: 'module' object has no attribute 'numpyArrayForAtoms' if I use:
xyzs = chimera.numpyArrayForAtoms(atoms)
H. ________________________________

Sorry again, it's "From" not "For". --Eric
On Jul 10, 2020, at 2:26 PM, Hernando J Sosa <hernando.sosa@einsteinmed.org> wrote:
Ok StructMeasure without the 'chimera.' is there but now I can't find the function to generate the numpy array of atoms. I get the following errors:
NameError: name 'numpyArrayForAtoms' is not defined
or
AttributeError: 'module' object has no attribute 'numpyArrayForAtoms'
if I use:
xyzs = chimera.numpyArrayForAtoms(atoms)
H.
_______________________________________________ Chimera-users mailing list: Chimera-users@cgl.ucsf.edu <mailto:Chimera-users@cgl.ucsf.edu> Manage subscription: https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users <https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users>

Thanks Eric, I got it to work now. To summarize the code to get the axis information from an atom spec string looks like this. Please let me know if there is a better or simpler way to do it. #----------------------------------- import StructMeasure atomspec = '#0:14-37.A@CA' atoms = chimera.selection.OSLSelection(atomspec).vertices() xyzs = chimera.numpyArrayFromAtoms(atoms) myaxis = StructMeasure.axis(xyzs) print myaxis #------------------------------------- Note that I had to import StructMeasure. Best H.

Looks good to me. Glad you got it to work. --Eric
On Jul 11, 2020, at 10:01 AM, Hernando J Sosa <hernando.sosa@einsteinmed.org> wrote:
Thanks Eric, I got it to work now. To summarize the code to get the axis information from an atom spec string looks like this. Please let me know if there is a better or simpler way to do it.
#----------------------------------- import StructMeasure
atomspec = '#0:14-37.A@CA' atoms = chimera.selection.OSLSelection(atomspec).vertices() xyzs = chimera.numpyArrayFromAtoms(atoms) myaxis = StructMeasure.axis(xyzs) print myaxis #-------------------------------------
Note that I had to import StructMeasure.
Best
H.
_______________________________________________ Chimera-users mailing list: Chimera-users@cgl.ucsf.edu <mailto:Chimera-users@cgl.ucsf.edu> Manage subscription: https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users <https://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users>
participants (2)
-
Eric Pettersen
-
Hernando J Sosa