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]

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:

run clipped.py
fetch 3lzt,async=0
clip near,-30
cmd.select_list("clipsed","3lzt",clipped("3lzt"))
orient
hide
show spheres, not clipsed

Hope it helps,

Tsjerk


On Wed, Mar 2, 2011 at 5:27 PM, Johannes Wollbold <jwollb...@gmx.de> 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" <jwollb...@gmx.de> 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 <jwollb...@gmx.de>
>> 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@lists.sourceforge.net)
> Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
> Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
>



-- 
Tsjerk A. Wassenaar, Ph.D.

post-doctoral researcher
Molecular Dynamics Group
* Groningen Institute for Biomolecular Research and Biotechnology
* Zernike Institute for Advanced Materials
University of Groningen
The Netherlands

------------------------------------------------------------------------------
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@lists.sourceforge.net)
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net

Reply via email to