[chimerax-users] scalemol extension not working
Tom Goddard
goddard at sonic.net
Thu Jan 19 13:21:54 PST 2023
Hi André,
In ChimeraX if you selected the atoms of your structure then use the Python shell from menu Tools / General / Shell and type in this bit of Python code
from chimerax.atomic import selected_atoms
for a in selected_atoms(session):
a.coord = 1.5 * a.coord
it will scale all atom positions by a factor of 1.5. This code could be turned into a simple ChimeraX command if you needed to use it many times. Here are examples of simple Python code to define ChimeraX commands.
https://rbvi.github.io/chimerax-recipes/
I am not sure why the old Chimera script does not work in Chimera 1.16. We have not developed the old Chimera software for about 6 years so I forget the details of how atom coordinates are retrieved.
Tom
> On Jan 19, 2023, at 3:13 AM, André Graça via ChimeraX-users <chimerax-users at cgl.ucsf.edu> wrote:
>
>
> Hi everyone,
>
> I hope to at least get a reply from Tom, but this may need a bit of troubleshooting (?).
>
> I looked into a very old post of yours, Tom, about rescaling an atomic model (see it at the end of my email).
> I put everything in place but I get an error and I wonder if anything has changed with the PDB format since 2005, or some incompatibility with new chimera versions…
>
> If there is actually a way of doing the same with ChimeraX, that would be incredible =)
>
> Cheers!
> André
>
> Error and forwarded message comes now:
> __________________________________________________
> AttributeError Exception in Tk callback
> Function: <bound method MidasUI.processCommand of <Midas.midas_ui.MidasUI instance at 0x00000000079092C8>> (type: <type 'instancemethod'>)
> Module: <module 'Midas.midas_ui' from 'C:\Program Files\Chimera 1.16\share\Midas\midas_ui.pyc'> (line: 618)
> Args: (<Tkinter.Event instance at 0x00000000198D8AC8>,)
> Event type: KeyPress (type num: 2)
> Traceback (innermost last):
> File "C:\Program Files\Chimera 1.16\bin\lib\site-packages\Pmw\Pmw_1_3_3\lib\PmwBase.py", line 1747, in __call__
> return apply(self.func, args)
> File "C:\Program Files\Chimera 1.16\share\Midas\midas_ui.py", line 628, in processCommand
> midas_text.makeCommand(cmdText)
> File "C:\Program Files\Chimera 1.16\share\Midas\midas_text.py", line 69, in makeCommand
> f(c, args)
> File "C:\Program Files\Chimera 1.16\share\scalemol\ChimeraExtension.py", line 23, in scale_molecule
> x, y, z = a.coord().xyz.data()
> AttributeError: '_chimera.Point' object has no attribute 'xyz'
>
> ================================================
> Event contents:
> char:
> delta: 0
> height: ??
> keycode: 13
> keysym: Return
> keysym_num: 65293
> num: ??
> serial: 14638
> state: 8
> time: 154527203
> type: 2
> widget: .121252488L.126915336L.428746824L.428747592L.428747720L
> width: ??
> x: 228
> x_root: 288
> y: -22
> y_root: 941
> ______________________________________________________________________
>
>
>
>
>
>
>
>
> ------- Start of forwarded message -------
>
> Date: Wed, 27 Apr 2005 11:05:55 -0700 (PDT)
> From: Thomas Goddard <goddard at cgl.ucsf.edu <http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users>>
>
> Hi Jinghua,
>
> By "virus cage pdb file" I guess you mean you placed atoms at
> icosahedral positions, and want to show them connected up to show some
> icosahedral pattern.
>
> I think the easiest approach is to open your old session, run a
> command to change the diameter of the cage, then save a new session.
> Below is some Python code that provides a "scalemol" Chimera command.
> Make a directory chimera/share/scalemol in your Chimera distribution
> and put the code below in file chimera/share/scalemol/ChimeraExtension.py.
> Then start Chimera, open the cage PDB model, use menu entry
> Favorites/Command line, and type a command:
>
> scalemol 0 1.5
>
> to make model number 0 bigger by a factor of 1.5. If you have more than
> one model open you can see the model numbers using Favorites / Model Panel,
> the model number is shown in the left hand column.
>
> Tom
>
>
> - ----
> scalemol/ChimeraExtension.py code follows:
>
>
> # -----------------------------------------------------------------------------
> #
> def scale_molecule(cmdname, args):
>
> from Midas.midas_text import error
>
> fields = args.split()
> try:
> model_num = int(fields[0])
> factor = float(fields[1])
> except:
> error('Syntax error: scalemol <model-number> <factor>')
> return
>
> import chimera
> mlist = chimera.openModels.list(id = model_num)
> if len(mlist) == 0:
> error('scalemol: No model number %d' % model_num)
> return
>
> for model in mlist:
> for a in model.atoms:
> x, y, z = a.coord().xyz.data()
> c = chimera.Coord()
> c.x, c.y, c.z = (factor*x, factor*y, factor*z)
> a.setCoord(c)
>
> # -----------------------------------------------------------------------------
> #
> import Midas.midas_text
> Midas.midas_text.addCommand('scalemol', scale_molecule)
>
> ------- End of forwarded message -------
>
> _______________________________________________
> ChimeraX-users mailing list
> ChimeraX-users at cgl.ucsf.edu <mailto:ChimeraX-users at cgl.ucsf.edu>
> Manage subscription:
> https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.rbvi.ucsf.edu/pipermail/chimerax-users/attachments/20230119/e3b4fc17/attachment.html>
More information about the ChimeraX-users
mailing list