
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@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@cgl.ucsf.edu <mailto:ChimeraX-users@cgl.ucsf.edu> Manage subscription: https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users