Metal Geometry Analysis - per frame
Dear All, Is there a way I could include the metal geometry analysis as a per frame script for a MD movie? Ideally I would like to have an output file which lists the best geometry and essentially prints out the co-ordination table for two atom selections per frame. I am trying to figure out how to use the python or chimera per-frame commands to specifically select an atom and then print an output file. Any hints and suggestions on how to do this will be greatly appreciated. Thank you in advance for your help. -Veronica
Hi Veronica, Unfortunately all the metal-coordination analysis is intimately integrated into the Metal Geometry graphical interface, but it is extractable via Python. The general approach will be to get a handle on the Metal Geometry dialog and then prod it a lot to force it to tell you what you want. :-) Probably easiest to make the whole thing a Python script and therefore you would play through the trajectory programmatically rather than using the MD Movie dialog. Assuming you have your trajectory open already, the first thing to do in the script would be to bring up the Metal Geometry dialog and get a reference to it: from chimera import dialogs from MetalGeom.gui import MetalsDialog dlg = dialogs.find(MetalsDialog.name, create=True) The Metal Geometry dialog (dlg) has a “metalsMenu” attribute, which is the menu near the top of the dialog that shows which metal is currently being analyzed. That menu has a ‘valueMap’ attribute, which is a dictionary that maps from actual metal atom Python instances to the textual name shown for the atom in the menu. Therefore: metals = dlg.metalsMenu.valueMap.keys() would produce a list of Python metal atoms in the “metals” variable, which will be handy soon. :-) But you probably first need to write the code that loops through the coords sets. The Molecule model that contains the metals will have a ‘coordSets’ instance, which is all the coordinate sets, therefore: mol = metals[0].molecule for coordSet in mol.coordSets: mol.activeCoordSet = coordSet will loop though all the Molecule’s coordinate sets. Within the loop, you would loop through the metals, setting the metals menu as you go, with: for metal in metals: dlg.metalsMenu.invoke(metal) I don’t know if your “two atom selections” is all the metals in the trajectory or not. If not, you’d have to write some code to filter the “metals” list down to just the two you want. The coordinating atoms are in a table of the dialog whose attribute name is “coordinationTable”. The attribute of that table that holds those atoms is named “data”. Therefore you can get the coordinating atoms for the current metal with: coordinators = dlg.coordinationTable.data You can compute the distance, RMSD, and best geometry for each coordinator with: for coordinator in coordinators: dist = metal.coord().distance(coordinator.coord()) rmsd = dlg._avgError[coordinator] geom = dlg._bestGeom[coordinator] You probably also want to put output to a file in that loop. Keep in mind that atoms have a __str__ method, and therefore str(a) is a string representation of atom a. —Eric Eric Pettersen UCSF Computer Graphics Lab
On Jan 27, 2017, at 1:39 AM, Ilkow, Veronica <veronica.ilkow@kcl.ac.uk> wrote:
Dear All,
Is there a way I could include the metal geometry analysis as a per frame script for a MD movie? Ideally I would like to have an output file which lists the best geometry and essentially prints out the co-ordination table for two atom selections per frame. I am trying to figure out how to use the python or chimera per-frame commands to specifically select an atom and then print an output file. Any hints and suggestions on how to do this will be greatly appreciated.
Thank you in advance for your help.
-Veronica
_______________________________________________ Chimera-users mailing list: Chimera-users@cgl.ucsf.edu Manage subscription: http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users
participants (2)
-
Eric Pettersen
-
Ilkow, Veronica