Re: [PyMOL] Make sure zoom is viewed from surface
Hi Troels, Jason, Edward, nice little problem and nice layouts by Jason and Edward. Let me contribute some code, it follows Edwards approach. See attachment. Requires psico. Cheers, Thomas Edward A. Berry wrote, On 10/08/12 20:57: Jason Vertrees wrote: Hi Troels, I've run into this problem a few times, too, but never took the time to solve it correctly. A quick plan might look like: * cmd.orient on the selection * store the view vector (http://www.pymolwiki.org/index.php/Get_View) * let C1 = count the number of atoms behind the view vector, using something like (http://www.pymolwiki.org/index.php/SelInside) * invert the view vector * let C2 = count the number of atoms behind the view vector, using something like (http://www.pymolwiki.org/index.php/SelInside) * compare C1 to C2, choosing the * if C2< C1 then flip the view You could use other tricks. I'm sure the community has other ideas. Calculate center of mass or average of all coordinates calculate vector from that to point of interest rotate view so that vector points toward front/camera translate so point of interest is centerd maybe reverse the last two steps? Cheers, -- Jason On Sun, Oct 7, 2012 at 10:04 AM, Troels Emtekær Linnet wrote: Hi pymolers. I am generating a list of residue ID's from some calculations. Now I want to make a little script that select the residue and sticks it and then zoom and make .png file. How do I make sure that the zoom, is viewed from "outside" the protein for each residue/.png file? Best Troels Emtekær Linnet Ved kløvermarken 9, 1.th 2300 København S Mobil: +45 60210234 -- Thomas Holder MPI for Developmental Biology Spemannstr. 35 D-72076 Tübingen from pymol import cmd, CmdException def zoomoutside(selection, ref='', state=-1, operator='byobject', quiet=1, **kwargs): ''' DESCRIPTION Zoom the given selection and orient such that the object center of mass is behind the selection center of mass. USAGE zoomoutside selection [, ref [, state ]] ARGUMENTS selection = string: atom selection to zoom on ref = string: reference selection to orient behind selection {default: byobject } SEE ALSO zoom, orient ''' from chempy import cpv from psico.querying import centerofmass state, quiet = int(state), int(quiet) if not ref: ref = '%s (%s)' % (operator, selection) com_sele = centerofmass(selection, state) com_ref = centerofmass(ref, state) view = list(cmd.get_view()) camera_rotation = [view[0:3], view[3:6], view[6:9]] vec = cpv.sub(com_sele, com_ref) vec_camera = cpv.transform(camera_rotation, vec) axis = cpv.cross_product(vec_camera, [0.,0.,1.]) angle = cpv.get_angle(vec_camera, [0.,0.,1.]) rotation = cpv.rotation_matrix(angle, axis) view[:9] = [x for row in cpv.multiply(rotation, camera_rotation) for x in row] cmd.set_view(view) cmd.zoom(selection, state=state, **kwargs) cmd.extend('zoomoutside', zoomoutside) -- Don't let slow site performance ruin your business. Deploy New Relic APM Deploy New Relic app performance management and know exactly what is happening inside your Ruby, Python, PHP, Java, and .NET app Try New Relic at no cost today and get our sweet Data Nerd shirt too! http://p.sf.net/sfu/newrelic-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
Re: [PyMOL] Make sure zoom is viewed from surface
Jason Vertrees wrote: > Hi Troels, > > I've run into this problem a few times, too, but never took the time > to solve it correctly. > > A quick plan might look like: >* cmd.orient on the selection >* store the view vector (http://www.pymolwiki.org/index.php/Get_View) >* let C1 = count the number of atoms behind the view vector, using > something like (http://www.pymolwiki.org/index.php/SelInside) >* invert the view vector >* let C2 = count the number of atoms behind the view vector, using > something like (http://www.pymolwiki.org/index.php/SelInside) >* compare C1 to C2, choosing the >* if C2< C1 then flip the view > > You could use other tricks. I'm sure the community has other ideas. > Calculate center of mass or average of all coordinates calculate vector from that to point of interest rotate view so that vector points toward front/camera translate so point of interest is centerd maybe reverse the last two steps? > Cheers, > > -- Jason > > > On Sun, Oct 7, 2012 at 10:04 AM, Troels Emtekær Linnet > wrote: >> Hi pymolers. >> >> I am generating a list of residue ID's from some calculations. >> Now I want to make a little script that select the residue and sticks it >> and then zoom and make .png file. >> >> How do I make sure that the zoom, is viewed from "outside" the protein for >> each residue/.png file? >> >> Best >> >> Troels Emtekær Linnet >> Ved kløvermarken 9, 1.th >> 2300 København S >> Mobil: +45 60210234 >> >> >> -- >> Don't let slow site performance ruin your business. Deploy New Relic APM >> Deploy New Relic app performance management and know exactly >> what is happening inside your Ruby, Python, PHP, Java, and .NET app >> Try New Relic at no cost today and get our sweet Data Nerd shirt too! >> http://p.sf.net/sfu/newrelic-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 > > > -- Don't let slow site performance ruin your business. Deploy New Relic APM Deploy New Relic app performance management and know exactly what is happening inside your Ruby, Python, PHP, Java, and .NET app Try New Relic at no cost today and get our sweet Data Nerd shirt too! http://p.sf.net/sfu/newrelic-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
Re: [PyMOL] Make sure zoom is viewed from surface
Hi Troels, I've run into this problem a few times, too, but never took the time to solve it correctly. A quick plan might look like: * cmd.orient on the selection * store the view vector (http://www.pymolwiki.org/index.php/Get_View) * let C1 = count the number of atoms behind the view vector, using something like (http://www.pymolwiki.org/index.php/SelInside) * invert the view vector * let C2 = count the number of atoms behind the view vector, using something like (http://www.pymolwiki.org/index.php/SelInside) * compare C1 to C2, choosing the * if C2 < C1 then flip the view You could use other tricks. I'm sure the community has other ideas. Cheers, -- Jason On Sun, Oct 7, 2012 at 10:04 AM, Troels Emtekær Linnet wrote: > Hi pymolers. > > I am generating a list of residue ID's from some calculations. > Now I want to make a little script that select the residue and sticks it > and then zoom and make .png file. > > How do I make sure that the zoom, is viewed from "outside" the protein for > each residue/.png file? > > Best > > Troels Emtekær Linnet > Ved kløvermarken 9, 1.th > 2300 København S > Mobil: +45 60210234 > > > -- > Don't let slow site performance ruin your business. Deploy New Relic APM > Deploy New Relic app performance management and know exactly > what is happening inside your Ruby, Python, PHP, Java, and .NET app > Try New Relic at no cost today and get our sweet Data Nerd shirt too! > http://p.sf.net/sfu/newrelic-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 Schrödinger, Inc. (e) jason.vertr...@schrodinger.com (o) +1 (603) 374-7120 -- Don't let slow site performance ruin your business. Deploy New Relic APM Deploy New Relic app performance management and know exactly what is happening inside your Ruby, Python, PHP, Java, and .NET app Try New Relic at no cost today and get our sweet Data Nerd shirt too! http://p.sf.net/sfu/newrelic-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