Seth, PyMOL is definitely behind other packages right now when it comes to geometric measurement, which is shame since Python is such a good tool for working up this stuff. We'll get there eventually though...
I think a brute-force approach is currently necessary, and here is a little code to get you started: # define interface cmd.select("query", ...) cmd.select("target", ...) # example depends on "query" and "target" selections from pymol import cmd import pymol result_list = [] for a in cmd.index("query"): # for each query atom, generate a list of # neighbors within 8 angstroms, including # attributes and xyz coordinates q_sel = "%s`%d"%a print q_sel cmd.iterate(q_sel, "stored.qry_info = (chain,resn,resi,name)") cmd.iterate_state(1,q_sel, "stored.qry_xyz = (x,y,z)") pymol.stored.nbr_info = [] pymol.stored.nbr_xyz = [] cmd.iterate("target and (%s expand 8)"%q_sel, "stored.nbr_info.append((chain,resn,resi,name))") cmd.iterate_state(1,"target and (%s expand 8)"%q_sel, "stored.nbr_xyz.append((x,y,z))") result_list.append(( ((stored.qry_info), (stored.qry_xyz)), map(None,stored.nbr_info, stored.nbr_xyz))) # the rest of the task is just pure Python math, using the # values stored in result_list. for a in result_list: print "Query:",a[0] if len(a[1]): print "Neighbors:" for b in a[1]: print " ",b -- mailto:war...@delanoscientific.com Warren L. DeLano, Ph.D. Principal Scientist DeLano Scientific LLC Voice (650)-346-1154 Fax (650)-593-4020 > -----Original Message----- > From: pymol-users-ad...@lists.sourceforge.net [mailto:pymol-users- > ad...@lists.sourceforge.net] On Behalf Of Seth Harris > Sent: Friday, July 11, 2003 5:37 PM > To: pymol-users@lists.sourceforge.net > Subject: [PyMOL] how to get minimum distances in script? > > Hello all, > > I am trying to write a script that will go through each residue in a > dimer interface and determine for each one how close it is to the > partner monomer. > > I can interactively plot all the distances within a certain cutoff > using the handy: > distance chosen, residue_selected_on_first_chain, > partner_monomer_selection, cutoff > > For atom selections Warren earlier explained how to parse into its > components (using list=[]; iterate > (selection),list.append((resi,resn))). However, the selection > created by the distance command (i.e. "chosen") does not behave the > same way it seems and I haven't been able to iterate over it to get > at the info. > > I see from "help distance" that in the API cmd.distance returns the > average, so it suggested that perhaps minimum and maximum or even > each individual value might also be accessible, giving me hope that > the more elegant solution was close at hand and limited more by my > ignorance than the chosen approach. > > Otherwise I suppose there's the more brute-force avenue of going > through each residue, selecting atoms from the partner monomer within > a certain distance if any, and then explicitly measuring the distance > to each atom one by one, but I thought I'd check with the community > before launching such an ugly attack on the problem, having walked > that road before! > > Also, not to push my luck, but if you'd like to write your > suggestions in both English and Python, my less-than-rudimentary > knowledge of Python will thank you(!) > > Cheers and thanks, > Seth > -- > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Seth F. Harris, PhD > Agard Laboratory > University of California, San Francisco > Mission Bay Genentech Hall > 600 16th St. Suite S416 > San Francisco, CA 94143-2240 > 415.502.2930 > > > ------------------------------------------------------- > This SF.Net email sponsored by: Parasoft > Error proof Web apps, automate testing & more. > Download & eval WebKing and get a free book. > www.parasoft.com/bulletproofapps1 > _______________________________________________ > PyMOL-users mailing list > PyMOL-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/pymol-users