Thomas, When you hash by coordinates you could get odd results from alternate locations and multi-state objects. I like how Takanori solved the problem, but it's not a strictly perfect solution. What I need to do is provide access to the C-object for real. We plan to provide something for this soon.
Cheers, -- Jason On Wed, Feb 1, 2012 at 10:41 AM, Thomas Holder <spel...@users.sourceforge.net> wrote: > Jason, what pitfalls? Are they still present in this script? > > http://pymolwiki.org/index.php/Get_raw_distances > > Cheers, > Thomas > > > On 02/01/2012 04:01 PM, Jason Vertrees wrote: >> >> Takanori, >> >> This is a very clever script -- well done! There are some pitfalls, >> but in general this should work well. >> >> Cheers, >> >> -- Jason >> >> On Tue, Jan 31, 2012 at 6:01 PM, Takanori Nakane >> <t.nak...@mail.mfour.med.kyoto-u.ac.jp> wrote: >>> >>> Hi Abhinav and Jason, >>> >>>> The underlying C-object for a measurement does not support >>>> iterate/alter. This is rather silly; PyMOL should be able to tell you >>>> what's in the object. >>> >>> >>> As an ad-hoc hack, I wrote a Python script to access internal C-object >>> of distance representation and convert it to atom name. >>> >>> Save the script to somewhere and >>> >>> run script_name.py >>> list_dist >>> >>> will do the job. >>> >>> Takanori Nakane >>> >>> === Script start === >>> >>> from pymol import cmd >>> >>> def parseDistObj(obj): >>> if (obj[5][0][3][10] != 1): # 'show dashed' flag >>> return "" >>> points = obj[5][2][0][1] >>> ret = [] >>> for i in range(len(points) / 6): >>> ret.append([(points[i * 6], points[i * 6 + 1], points[i * 6 + >>> 2]), >>> (points[i * 6 + 3], points[i * 6 + 4], points[i * 6 >>> + 5])]) >>> return ret >>> >>> def list_dist(): >>> names = cmd.get_session()['names'] >>> >>> dist_pairs = [] >>> for obj in names: >>> if (obj == None): >>> continue >>> if (obj[1] == 0 and obj[4] == 4): >>> dist_pairs += parseDistObj(obj) >>> >>> namespace = {'dict': {}, 'a': 1} >>> dict = {} >>> cmd.iterate_state(1, 'all', 'dict[x,y,z] = >>> chain+"/"+resn+resi+"/"+name' , space=namespace) >>> >>> dict = namespace['dict'] >>> for pair in dist_pairs: >>> print dict.get(pair[0], '?') + " - " + dict.get(pair[1], '?') >>> >>> cmd.extend('list_dist', list_dist) > > > -- > Thomas Holder > MPI for Developmental Biology > Spemannstr. 35 > D-72076 Tübingen -- Jason Vertrees, PhD PyMOL Product Manager Schrodinger, LLC (e) jason.vertr...@schrodinger.com (o) +1 (603) 374-7120 ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net) Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net