Screenshot instructions:
Windows
Mac
Red Hat Linux
Ubuntu
Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)
From: Johannes Wollbold <jwollbold@gm...> - 2011-03-03 14:43:34
|
Hello Tsjerk, I can use the function and commands. print clipped("clipsed") - but not print clipped("3lzt") - shows the indices of the atoms between the clipping planes Tsjerk Wassenaar wrote: > Hi Johannes, > > Coincidentally, I found myself in need of the same functionality the > other day. I came up with this: > > #### > > from pymol import cmd > > def clipped_by(at,v): > x,y,z = at.coord > nz = v[2]*(x-v[12])+v[5]*(y-v[13])+v[8]*(z-v[14])-v[11] > return nz > v[15] and nz < v[16] > > ATTENTION: The rotation matrix is in column-major order <http://en.wikipedia.org/wiki/Column-major#Column-major_order> - that's understandable. Hence by multiplying with v[2], v[5] and v[8], you multiply the third column - not row! - with the coordinate vector, in order to get the rotated z-component. The matrix seems to be transposed. For me that is very unusual. In my R script, I made ordinary matrix multiplication and got erroneous results. > def clipped(selection="all",state=1): > v = cmd.get_view() > return [ i.id for i in cmd.get_model(selection,state).atom if > clipped_by(i,v) ] > > #### > > The function 'clipped' returns a list of IDs for atoms from a given > selection that are outside the clipping planes. You can use it like: > The function returns the atoms inside the planes. > run clipped.py > fetch 3lzt,async=0 > clip near,-30 > cmd.select_list("clipsed","3lzt",clipped("3lzt")) > orient > hide > show spheres, not clipsed > Hence show spheres, clipsed reproduces the selection by a previous slab. Thank you very much. Johannes > On Wed, Mar 2, 2011 at 5:27 PM, Johannes Wollbold <jwollbold@...> wrote: > >> Hi, >> >> I implemented the coordinate transformation and the selection of atoms >> outside PyMol, in R. In principle it works, but there seems to be some >> error, since too many atoms are selected, corresponding roughly, but not >> completely to an enlarged clipping corridor between the planes defined by >> get_view, matrix elements (6,1) and (6,2). Or could it be that not the >> complete slab is visualized in PyMol? However, the missing atoms are >> completely shadowed. >> >> Do I understand the rows of the view matrix well (see >> http://www.pymolwiki.org/index.php/Get_View), by computing the following >> coordinate transformation?: >> 1) Translation of the original pdb coordinates by subtracting row 5 of the >> view matrix (translation of the coordinate origin to the rotation center). >> 2) Rotation of the coordinates by rows 1-3 of the view matrix. >> 3) Test: view[4,3] + view[6,1]) <= z <= view[4,3] + view[6,2]. >> >> Sorry for this simple question of affine geometry, but I hope I did not make >> a logical mistake in this domain... >> >> Regards >> Johannes >> >> >> Tsjerk Wassenaar wrote: >> >> Hi Johannes, >> >> It's not that hard. The clipping planes are defined by the z coordinate (in >> the viewing matrix). So you can get the atoms for a selection, transform to >> get the new z coordinate only, and check whether it's in between the planes: >> >> m = cmd.get_model(selection).atom >> v = cmd.get_view() >> m = [ i for i in m if clipped(i,v) ] >> >> So clipped should do the transform and check whether the atom is clipped. >> The trick then is to turn m back into a selection. >> >> Hope it helps, >> >> Tsjerk >> >> On Feb 25, 2011 5:18 PM, "Johannes Wollbold" <jwollbold@...> wrote: >> >> Jason Vertrees wrote: > Having said this, you can however, can get the >> clipping information > from P... >> >> Hi Jason, >> >> thank you again for the hint. First I looked if I can select atoms >> according to their coordinates, or store new coordinates after a >> rotation / shift. But implicitly you already said that such >> functionalities are not yet implemented. If clipping is performed with >> the original camera view, the task is simple. get_view gives the output >> (see above link to the help page): >> >> set_view (\ >> 1.000000000, 0.000000000, 0.000000000,\ >> 0.000000000, 1.000000000, 0.000000000,\ >> 0.000000000, 0.000000000, 1.000000000,\ >> 0.000000000, 0.000000000, -320.337890625,\ >> 74.147140503, 74.174217224, 74.123344421,\ >> 317.145324707, 323.530487061, -20.000000000 ) >> >> According to (4,3), the camera is shifted by -320 A in z direction only. >> Since (6,1) and (6,2) indicate the camera distances of the slab planes, >> I can select, in the pdb file, the atoms with (74 - 320 + 317 ) <= z <= >> (74 - 320 + 323). >> >> For different views, coordinate transformations with the rotation matrix >> of the first 3 lines are needed. This should not be very difficult, but >> perhaps somebody has already a solution? >> >> Best regards >> Johannes >> >> >>> On Thu, Feb 24, 2011 at 3:50 AM, Johannes Wollbold <jwollbold@...> >>> wrote: > >> Hello, >> >>... >>> >> ------------------------------------------------------------------------------ >> Free Software Download: Index, Search & Analyze Logs and other IT data in >> Real-Time with Splunk. Collect, index and harness all the fast moving IT >> data >> generated by your applications, servers and devices whether physical, >> virtual >> or in the cloud. Deliver compliance at lower cost and gain new business >> insights. http://p.sf.net/sfu/splunk-dev2dev >> _______________________________________________ >> PyMOL-users mailing list (PyMOL-users@...) >> Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users >> Archives: http://www.mail-archive.com/pymol-users@... >> >> > > > > |