Hi Johannes,

My guess is that you missed that get_view[0:8] is a _column-major_
rotation matrix.  Transpose it before using it.

I decided to take a look at this problem for preparation of better
clipping planes in PyMOL.  I got it to work in PyMOL using Python,
after much fussing about.

Here's what I did:
 * center the molecule in the model space
 * rotate by the transpose of the rotation matrix.
 * add the model-based origin of rotation back to the coordinates
 * compare the z-values to the z-values of the clipping planes.

I'll clean up the code and post it tomorrow on the wiki if I remember.
 I made a few other convenience functions for placing pseudoatoms at
the origin or rotation, camera center, etc.

Last, atom labels have an offset, so will disappear at a different
time than their corresponding atoms; also, if you cannot see the atom,
it could still be shown--it could be very slightly inside the slab,
but hinted away for a better viewing experience.

Cheers,

-- Jason

On Wed, Mar 2, 2011 at 11:27 AM, 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
>



-- 
Jason Vertrees, PhD
PyMOL Product Manager
Schrodinger, LLC

(e) jason.vertr...@schrodinger.com
(o) +1 (603) 374-7120

------------------------------------------------------------------------------
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