ó
Q)‡Tc           @   s  d  Z  d d l Z d d l Td d l Z d d l Td d l Td d l Td d l Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z m Z y d d l Z Wn n Xd Z d Z d Z d e j f d „  ƒ  YZ d S(	   s¡  
     pygl/moleculargraphicsmodel.py: CCP4MG Molecular Graphics Program
     Copyright (C) 2001-2008 University of York, CCLRC
     Copyright (C) 2009-2010 University of York
     Copyright (C) 2012 STFC

     This library is free software: you can redistribute it and/or
     modify it under the terms of the GNU Lesser General Public License
     version 3, modified in accordance with the provisions of the 
     license to address the requirements of UK law.
 
     You should have received a copy of the modified GNU Lesser General 
     Public License along with this library.  If not, copies may be 
     downloaded from http://www.ccp4.ac.uk/ccp4license.php
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU Lesser General Public License for more details.
iÿÿÿÿN(   t   *(   t   QtCoret   QtGuii   i   t   moleculargraphicsmodelc           B   s"  e  Z d  „  Z d „  Z d „  Z d d d d d „ Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d d „ Z d d „ Z d d „ Z d „  Z d d d d g d d d g e d e e d e d e e d e e d d e e d „ Z d „  Z d d „ Z d d „ Z d „  Z RS(   c         C   sS   t  |  d ƒ r* |  j r* |  ` d |  _ n  d  St  |  d ƒ rO |  j rO |  ` n  d  S(   Nt
   conn_listst	   conn_draw(    (   t   hasattrR   R   (   t   self(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   __del__7   s    c         K   s“   xŒ | j  ƒ  D]~ } t |  | | | ƒ | d k rI t | | ƒ |  _ q | d k rr |  j j t | | ƒ ƒ q | d k r |  j ƒ  q q Wd  S(   Nt   symmetry_radiust   draw_symmetryt
   parameters(   t   keyst   setattrt   floatR	   t   objt   SetDrawSymmetryt   intt   rebuild(   R   t   keywordst   key(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt	   setparamsA   s    c         C   sð   |  j  r¦ |  j j ƒ  d k r" d  S|  j j d d ƒ } t | ƒ d k rM d  St j t | ƒ ƒ } |  j j d ƒ |  j j	 | ƒ |  j j
 | ƒ |  j j d ƒ d  S|  j d k s¿ |  j rÜ t |  _ |  j j	 g  ƒ d  S|  j | | ƒ d  S(   Ni    i   (   t   doBiomoleculeR   t   GetNumSymmetryMatricest   molHndt   GetBiomoleculeAsMatricest   lent
   pygl_coordt	   IntVectorR   t   SetSymmetryMatricest   SetSymmetryMatrixNumberst   SetDrawSymmetryColouredR
   t
   doSymmetryt   Truet   doCentralSymmetryt   setup_symmetry(   R   t   pointt   extentst   matricest   numbers(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   SetupSymmetryK   s"    		i    c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   t   draw_unit_cellt   xshiftst   yshiftst   zshifts(   R   R)   t   xshiftt   yshiftt   zshift(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   DrawUnitCell^   s    			c         C   s
  |  j  r d  |  _  n  |  j t j t j t j t j g k râ d d  l } t	 j
 ƒ  } | j |  j |  j ƒ } | j ƒ  } | j |  j | | ƒ } | j ƒ  } | |  _  | |  _ | j ƒ  |  _ |  j j |  j | | | d d ƒ n$ |  j j ƒ  |  _  |  j j ƒ  |  _ d  S(   Niÿÿÿÿi    (   t
   conn_atomst   Nonet   modet   cprimt   SPLINEt   WORMt   FATWORMt   VARIABLEWORMt   mmutR   t   intpt   GetCAFromSelectionR   t   selHndt
   newPPCAtomt   GetAtomSelIndext   valuet   conn_natomst   Connectivityt   SplineConnectivityt   AddBondst   GetAtomst   GetNumberOfAtoms(   R   R9   t	   selindexpt	   redSelHndt   reducedSelAtomst   nreducedSelAtoms(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   update_conn_atomsd   s     	'		%c         C   s�   |  j  ƒ  t |  j |  j ƒ } t j |  j | | ƒ } g  } x= t t | ƒ ƒ D]) } t	 |  j | | ƒ } | j
 | ƒ qP W| S(   N(   RJ   t   CartesiansFromAtomsR1   R@   R4   t   GetPointsInVolumeR   t   rangeR   t	   getPCAtomt   append(   R   t   contained_volumet   cartst   selected_atomst	   atom_listt   it   atom(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   GetAtomsInVolume†   s    
c         C   sÃ   |  j  } | d d k  r- | d d k  r- d  S| d d k rQ | d d k rQ d  S| d d k rn | d } n  | d d k r‹ | d } n  | d k  r› d  St |  j | ƒ } | j | j | j g S(   Ni    i   (   t   lineR2   RN   R1   t   xt   yt   z(   R   RW   t   atomidt   at(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   ClickedPrimitiveCoords’   s    	   c         C   s£   |  j  s |  j r d  S|  j | | | ƒ } | d d k rV t |  j  | d ƒ } n d  } | d d k r… t |  j  | d ƒ } n d  } | | | d | d g S(   Ni    i   i   i   (   R1   R@   t   GetClickedLinesAndPointsRN   R2   (   R   t   xyzboxt   neart   farRW   t   at1t   at2(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   GetClickedAtoms¤   s    c         C   s)  t  |  d ƒ s |  j ƒ  n  |  j s0 |  j r4 d  St |  j |  j ƒ } |  j t j t j t j	 t j
 g k r— t j |  j | | |  j |  j ƒ } n$ t j |  j | | |  j |  j ƒ } | j d k  sÙ | j d k  r| j | j | j d | j g |  _ n! | j | j | j | j g |  _ |  j S(   NR1   i    g      à?(   R   RJ   R1   R@   RK   R3   R4   R5   R6   R7   R8   t   FindLineR   RB   R
   RA   t   firstt   secondt   distt   symmRW   (   R   R_   R`   Ra   RQ   RW   (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyR^   ²   s    ''$(!c         C   s“   |  j  } | d d k  s) | d d k  r- d  St |  j | d ƒ } | j | j | j g } t |  j | d ƒ } | j | j | j g } | | g S(   Ni    i   (   RW   RN   R1   RX   RY   RZ   (   R   RW   R\   t   coord1t   coord2(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   ClickedLineCoordsÄ   s    	 c         C   s­   |  j  } | d d k  s) | d d k  r- d  St |  j | d ƒ } d d  l } | j j j |  j j |  j | ƒ t |  j | d ƒ } | j j j |  j j |  j | ƒ d  S(   Ni    i   iÿÿÿÿ(	   RW   RN   R1   t   atom_pickingt
   picklabelst   instst   draw_atom_labelt   uit   parent(   R   RW   R\   Rm   (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   AddLineLabelÏ   s    	 "t    c         C   sê   |  j  } | d d k  r- | d d k  r- d  S| d d k rQ | d d k rQ d  S| d d k rn | d } n  | d d k r‹ | d } n  t |  j | ƒ } | j ƒ  } | d k ræ d d  l } | j j j |  j	 j
 |  j	 | ƒ n  | S(   Ni    i   t   DUMMYiÿÿÿÿ(   RW   R2   RN   R1   t   GetAtomNameRm   Rn   Ro   Rp   Rq   Rr   (   R   t
   text_labelRW   R[   R\   t   atnameRm   (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   AddLabelÙ   s    	  %c         C   s€   g  } xs |  j  d d !D]a } | d k r t |  j | ƒ } | rx |  j | d | ƒ} | d k ru | j | ƒ qu qx q q W| S(   Ni    i   t   user_defineds   /-/-/-/DUMMY(   RW   RN   R1   t   GetAtomLabelRO   (   R   Rz   R[   t   llR\   t	   atom_name(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   GetPrimitiveLabelð   s    i   c         C   sê   | s | j  ƒ  d } nÍ d d  l } d d  l } | j j } | j ƒ  j j } t d ƒ } x! t	 d d ƒ D] }	 d | |	 <qk WxO t	 d t
 | j ƒ ƒ D]5 }	 | j |	 r˜ x | |	 D] }
 d | |
 <q¶ Wq˜ q˜ W|  j j | | ƒ } | S(   Ni    iÿÿÿÿi   i   (   t	   GetAtomIDt   display_tableRm   Rn   Ro   t   DTt
   moldisplayt   label_style_maskt   intaRM   R   t   atom_label_styleR   t   AtomLabel_mask(   R   t   atomPtrRz   Rw   R€   Rm   t   plt   mappingt   maskt   jt   k(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyR{   þ   s     c         C   s  d d  l  } | j  ƒ  } d d  l } |  j d k  r7 d  S| j |  j |  j ƒ } | j ƒ  } | j ƒ  } | j ƒ  } | j ƒ  } | j	 ƒ  }	 | j
 ƒ  }
 | j ƒ  } | j ƒ  } | j ƒ  } | j ƒ  } |	 j ƒ  } |
 j ƒ  } | | } | | } | | } t | | | ƒ } | j  ƒ  } | S(   Niÿÿÿÿi   (   t   timet   symmetryt	   nSelAtomst   molecule_extents_tt   selAtomst   get_leftt	   get_rightt   get_topt
   get_bottomt	   get_frontt   get_backt   get_xt   get_yt   get_zt   max(   R   R�   t   t1RŽ   t   extt   leftt   rightt   topt   bottomt   frontt   backt   minxt   maxxt   minyt   maxyt   minzt   maxzt   xdistt   ydistt   zdistRh   t   t2(    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   GetMaxDimension  s0     


c         C   sÓ  t  |  _ t |  _ t j ƒ  } |  j d | ƒ |	 |  _ |
 |  _ | |  _ | |  _	 | |  _
 | |  _ d |  _ d |  _ t j |  _ | |  _ | |  _ d d  l } | d  k r¾ | j ƒ  |  _ n	 | |  _ | d  k rå | j ƒ  |  _ n	 | |  _ | |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _  d |  _! d |  _" d |  _# d |  _$ | |  _% | |  _& t' j( ƒ  |  _) | |  _* | |  _+ d |  _, t j ƒ  } d |  _- d |  _. d  |  _/ d |  _0 d  S(   NRq   i    iÿÿÿÿiñØÿÿiK   i   Rt   (1   R!   R    t   FalseR   R�   t   graphicsmodel_initR   R<   R‘   R�   RA   t	   atomRadiit   diagnostic_timingt   stick_colourR4   t   DRAW_ALL_BONDSt   external_bonds_modet   side_to_ribbont   side_to_wormR9   R2   t
   SplineInfot   splineinfo_ribbont   splineinfo_wormR
   R)   t   old_draw_unit_cellt   draw_contactst   old_draw_contactsR*   R+   R,   t   old_xshiftst   old_yshiftst   old_zshiftsR	   t   symmetry_labelst   stylet   atomColourVectorR   t   Treet   treeR   t   global_parameterst   update_surfaceR1   R@   R3   t   customWidthUDD(   R   Rq   t   comt   originR‘   R�   RA   RÂ   t   visibleR   R<   RÃ   R±   R
   R   RÆ   R¶   R·   R¹   Rº   Rœ   R9   R­   (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   __init__/  s\    																																			c   	      C   sÜ  t  j | ƒ } t  j | d ƒ } t  j | d ƒ } t  j | d ƒ } t  j | d ƒ } d d  l } |  j d k rŠ |  j d k sä |  j |  j k sä |  j |  j k sä |  j |  j k sä |  j	 |  j
 k sä |  j |  j k rœ| j |  j |  j | | | | | |  j |  j |  j	 |  j |  j |  j ƒ |  _ |  j j |  j j ƒ  ƒ |  j j |  j j ƒ  ƒ |  j j |  j j ƒ  ƒ |  j rœ|  j j g  ƒ qœn  |  j |  _ |  j	 |  _
 |  j |  _ |  j |  _ |  j |  _ d  S(   Ni    i   i   i   iÿÿÿÿ(   R   t	   CartesianRŽ   R¼   R)   R½   R»   R*   R¾   R+   R¿   R,   RÀ   t   SymmetryR   R<   R	   R   R   t   GetSymmetryMatricest   SetUnitCellt   GetUnitCellR   t   GetSymmetryMatrixNumbersR   (	   R   t   pR%   R$   t   tlt   trt   brt   blRŽ   (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyR#   o  s$    xN	c   '         sz  t  } t j j d ƒ r! t } n  | r9 d GHt j ƒ  n  | rQ d GHt j ƒ  n  ˆ j } ˆ j } ˆ j	 } ˆ j
 } | d  k sˆ | r‘ d } n  ˆ j ‰ ˆ j ‰ | d k s» | d k rû ˆ j rû t ˆ j d ƒ rû t ˆ j j ƒ rû ˆ j j t ƒ n ˆ j j t  ƒ | r#d GHt j ƒ  n  ˆ j j ƒ  | rHd	 GHt j ƒ  n  ˆ j r]d
 G| GHn  | d k rxt j ˆ _ n2d d d d d d d d d d d g } t j t j t j t j t j t j t j t j t j t j t j  g } | j! t" j# j$ ƒ r€| t" j# j% k r€yJ t" j# j% | d ˆ j d ˆ j d ˆ j ƒ \ ˆ _& ‰ ‰ t j  ˆ _ Wn d ˆ _& t j ˆ _ n Xd } n3 | j! t" j# j$ ƒ r³d ˆ _& t j ˆ _ d } n  | j' | ƒ rá| | j( | ƒ ˆ _ d } n  | d k rd } t j) ˆ _ n  | d k r#d } t j* ˆ _ n  | d k r>t j+ ˆ _ n  | d k rYt j, ˆ _ n  | d k rtt j- ˆ _ n  | d k r�t j. ˆ _ n  | d k rªt j/ ˆ _ n  | rÂd  GHt j ƒ  n  ˆ j r×d! G| GHn  t  ‰ t ‰ t0 j1 d" ƒ }	 t2 j3 d# k rgt2 j4 j' d$ ƒ rgd d  l5 }
 |
 j6 |
 j7 ƒ } |	 j8 d% ƒ } | sgd& | k rdd' GHt  ‰ qdqgn  t0 j9 ƒ  ‰ |	 j8 d( ƒ } | rt ˆ d) ƒ rt ˆ j: d* ƒ rt ˆ j: j; ƒ rt ˆ j: j; ƒ  d+ ƒ rt ˆ j: j; ƒ  j< ƒ rˆ j: j; ƒ  j< ƒ  t k rt ‰ qqn  t j= t j> g j' ˆ j? ƒ r-| d k rìˆ j@ ƒ  ˆ Gd, GHd d  lA ‰	 t0 j1 d- ƒ } | j8 d. ƒ ‰ | j8 d/ ƒ tB jC d0 ‰ | j8 d1 ƒ ‰  ‡  ‡ ‡ ‡ f d2 †  } ‡ ‡	 f d3 †  } t2 j4 j' d$ ƒ rÀt2 j3 d4 k rÀˆ jD rÀˆ	 jA ƒ  ˆ _E tF jG ˆ ƒ ˆ _H ˆ jH jI d5 ƒ ˆ jH jJ tK jL jM ƒ t jN jO t jN jP t jN jQ tR ƒ d6 d7 ƒ ƒ } tF jS t jN jP | d8 ƒ ƒ } ˆ jH jT | ƒ ˆ jU ˆ jH tK jV d9 ƒ tW jX tY jY jZ d: ƒ ƒ xO t ˆ d; ƒ r!ˆ j[ j\ ƒ  sˆ j[ j] ƒ  r!tY jY jZ d: ƒ ˆ j[ j^ ƒ  qÓWtY jY jZ d< ƒ t_ j_ | ƒ ˆ _[ ˆ jU ˆ j[ tK jV d= ƒ | ƒ ˆ jU ˆ j[ tK jV d= ƒ tW jX ˆ j` ƒ  ja ˆ jH ƒ ƒ ˆ j[ jb ƒ  ˆ j` ƒ  jc ˆ jH ƒ qìˆ jD râˆ	 jA ƒ  ˆ _E | ƒ  n  | ƒ  n  | d k r1
ˆ j@ ƒ  d d  ld ‰ ‡ ‡ f d> †  } ‡ ‡ ‡ f d? †  } t2 j4 j' d$ ƒ r
t2 j3 d4 k r
tF jG ˆ ƒ ˆ _H ˆ jH jI d@ ƒ ˆ jH jJ tK jL jM ƒ t jN jO t jN jP t jN jQ tR ƒ d6 d7 ƒ ƒ } tF jS t jN jP | d8 ƒ ƒ } ˆ jH jT | ƒ ˆ jU ˆ jH tK jV d9 ƒ tW jX tY jY jZ d: ƒ ƒ xO t ˆ dA ƒ ro	ˆ je j\ ƒ  sO	ˆ je j] ƒ  ro	tY jY jZ d: ƒ ˆ je j^ ƒ  q!	WtY jY jZ d< ƒ t_ j_ | ƒ ˆ _e ˆ jU ˆ je tK jV d= ƒ | ƒ ˆ jU ˆ je tK jV d= ƒ tW jX ˆ j` ƒ  ja ˆ jH ƒ ƒ g  ˆ _f ˆ je jb ƒ  ˆ j` ƒ  jc ˆ jH ƒ q1
| ƒ  | ƒ  g  ˆ _f n  | dB k rü
ˆ j@ ƒ  t jg ˆ j ˆ j ˆ j ˆ jh ˆ ji ˆ jj ˆ jk jl ƒ ˆ r—
ˆ j jm t ƒ n  ˆ rü
t2 j3 d# k sÊ
t2 j3 d4 k sÊ
t2 j3 dC k rù
ˆ j j t ƒ ˆ rö
ˆ j jn t ƒ qö
qù
qü
n  | d k ryˆ j@ ƒ  to ˆ dD t jp ƒ } to ˆ dE dF ƒ } tq jr ˆ ji ƒ } x$ ts tt | ƒ ƒ D] } dF | | <q^Wˆ jk j8 dG ƒ d: k rÊt ju ˆ j ˆ j ˆ jh ˆ ji ˆ jj ˆ jv | | ˆ jw jl ƒ	 n: t ju ˆ j ˆ j ˆ jh ˆ ji ˆ jj | | | ˆ jw jl ƒ	 ˆ rˆ j jm t ƒ n  t2 j3 d# k sJt2 j3 d4 k sJt2 j3 dC k ryˆ j j t ƒ ˆ rvˆ j jn t ƒ qvqyn  | d k rÆˆ j@ ƒ  t jx ˆ j ˆ jy ˆ jj ˆ jk jl ˆ jw jl ˆ jz ƒ n  | d k rUˆ j@ ƒ  t j{ ˆ j ˆ j ˆ jy ˆ jj ˆ jk jl ˆ jw jl ƒ ˆ r)ˆ j jm t ƒ n  ˆ j j t ƒ ˆ rUˆ j jn t ƒ qUn  | d k rçˆ j@ ƒ  t j| ˆ j ˆ j ˆ j ˆ jh ˆ ji ˆ jj ˆ jk jl ƒ ˆ r»ˆ j jm t ƒ n  ˆ j j t ƒ ˆ rçˆ j jn t ƒ qçn  | d k rvˆ j@ ƒ  t j} ˆ j ˆ jy ˆ jj ˆ jk jl ˆ jw jl ˆ jv ƒ ˆ rJˆ j jm t ƒ n  ˆ j j t ƒ ˆ rvˆ j jn t ƒ qvn  | d k r-ˆ j@ ƒ  d d  ld ‰ ˆ j t j* k r*ˆ j~ ƒ  } t0 j1 dH ƒ } dI G| GH| j ƒ  } tq j€ dJ ƒ } | dK | d< <| dL | d: <| dM | dN <| dO | dP <| dQ | dR <| dS | dT <| dU | dV <| dW | dX <| j� ˆ j ˆ j ˆ jh ˆ ji ˆ jj | ƒ dR } ˆ j‚ ˆ j ˆ j ˆ jj | d d d: ˆ jk j8 dY ƒ ƒ } t jƒ ˆ j | | ˆ jk jl ƒ ˆ rûˆ j jm t ƒ n  ˆ j j t ƒ ˆ r'ˆ j jn t ƒ q'q*q-n  | rEdZ GHt j ƒ  n  | d k rï| rid[ GHt j ƒ  n  t„ j„ ƒ  } t„ j„ ƒ  } | r™d\ GHt j ƒ  n  t„ j„ ƒ  } ˆ j rËd] G| | GHt2 j… j† ƒ  n  | rãd^ GHt j ƒ  n  t„ j„ ƒ  } ˆ j@ ƒ  t„ j„ ƒ  } | rd_ GHt j ƒ  n  ˆ j rCd` G| | GHt2 j… j† ƒ  n  | r[da GHt j ƒ  n  | d< k rkd  S| rƒdb GHt j ƒ  n  t„ j„ ƒ  } ˆ j‡ dz dc dd d< g dd dd d< g dd dc d< g dc dc d< g g ƒ | rçde GHt j ƒ  n  ˆ j jˆ ˆ j‰ jŠ ƒ  ƒ ˆ j‹ rˆ j jˆ g  ƒ n  ˆ j rNt„ j„ ƒ  } df G| | GHt2 j… j† ƒ  n  | rfdg GHt j ƒ  n  dh ‰ ˆ jv r�ˆ jv }  n tq jr dN ƒ }  | r¨di GHt j ƒ  n  t j t j t j t j  g j' ˆ j ƒ s¡| rêdj GHt j ƒ  n  t„ j„ ƒ  } | r"t ˆ dk ƒ rˆ jŒ rˆ `Œ n  t„ j„ ƒ  }! t j� ƒ  ˆ _Œ t„ j„ ƒ  }" | r\dl GHt j ƒ  n  ˆ j rudm G|" |! GHn  ˆ jŒ jŽ ˆ jy ˆ j ˆ j ˆ j ˆ jk jl ˆ jw jl | ˆ jj |  ˆ j� ˆ j� dh ˆ ˆ jz ˆ j‘ ˆ j’ ˆ j? ƒ | rúdn GHt j ƒ  n  t„ j„ ƒ  }# ˆ j rwdo G|# |" GHqwnU ˆ jŒ j“ ˆ j ˆ j ˆ jk jl ˆ jw jl | ˆ jj |  dh ˆ ˆ jz ˆ j‘ ˆ j’ ˆ j? ƒ t„ j„ ƒ  } ˆ j rœdp G| | GHn  | r´dq GHt j ƒ  n  ˆ j t j k s ˆ j t j k s ˆ j t j k s ˆ j t j k s ˆ j t j k s ˆ j t j k r�ˆ r9ˆ j jm t ƒ n  ˆ ržt2 j3 d# k slt2 j3 d4 k slt2 j3 dC k r›ˆ j j t ƒ ˆ r˜ˆ j jn t ƒ q˜q›qžq�nìt j= t j> g j' ˆ j? ƒ rd d  ld ‰ t2 j… j† ƒ  ˆ j@ ƒ  ˆ j ‰
 ‡ ‡ ‡ ‡ ‡
 f dr †  }$ ‡ ‡ ‡ ‡
 ‡ ‡ f ds †  }% t  røt2 j4 j' d$ ƒ røt2 j3 d4 k røxO t ˆ dt ƒ r�ˆ j” j\ ƒ  s}ˆ j” j] ƒ  r�tY jY jZ d: ƒ ˆ j” j^ ƒ  qOWtY jY jZ d< ƒ t_ j_ |$ ƒ ˆ _” ˆ jU ˆ j” tK jV d= ƒ |% ƒ d  ˆ _• ˆ j” jb ƒ  q|$ ƒ  |% ƒ  d  ˆ _• n  ˆ r+ˆ j jm t ƒ n  ˆ r�t2 j3 d# k s^t2 j3 d4 k s^t2 j3 dC k r�ˆ j j t ƒ ˆ rŠˆ j jn t ƒ qŠq�n  t„ j„ ƒ  }& | r±du GHt j ƒ  n  ˆ j j– ƒ  rÓˆ j j— d: ƒ n  ˆ j rvdv G|& | GHqvn‡ | d{ k rv| t" j# j% k rv| j! t" j# j$ ƒ rvt" j# j% | d ˆ j d ˆ j d ˆ j dw ˆ jj dx ˆ jk jl dy ˆ jw jl ƒ qvn  d  S(|   Nt   CCP4MG_DEBUG_MEMORYs   Memory build_primitives 1s   Memory build_primitives 2t   TREEt   CIRCLESt   SURFACEt   SetAnchoreds   Memory build_primitives 3s   Memory build_primitives 4s   STYLE 1:t   BONDSt   FATBONDSt	   THINBONDSt   SPHERESt   PYRAMIDSt	   CYLINDERSt	   BALLSTICKR5   R7   R6   R8   R   R   R<   iÿÿÿÿt   LIPIDSt   NUCLEICBASEPAIRSt   IMPOSTER_SPHERESt   ANISOUt   BLOB_ELLIPSOIDSt   SUGAR_BLOCKSs   Memory build_primitives 5s   STYLE 2:t   render_qualityt   win32s   -quitt   force_use_vat   IntelsL   Disabling use of VA on Windows with Intel GMA because of probable CCP4MG bugt   use_vbot   glWidgett   formatt   directRenderings   drawing a surfacet   surface_drawing_stylet   probe_radiust   resolution_deltag     €f@t   blend_edgesc              sJ   d GHt  j j ƒ  ˆ j j ˆ j ˆ j ˆ ˆ ˆ  ƒ d GHt  j j ƒ  d  S(   Ns   Recalc surfaces   Finished recalc surface(   t   syst   stdoutt   flusht   surft	   calculateR   R<   (    (   Rõ   Ró   Rô   R   (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   calcSurface  s
     " c              sB   ˆ  j  j ˆ  j ˆ  j ˆ  j ƒ ˆ j ˆ  j  ˆ  j ƒ d ˆ  _ d  S(   Ni    (   Rù   t   ColourSurfaceR   R<   RÃ   t   add_surfaceR   RÇ   (    (   R   t   surface(    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   drawSurface  s    t   linux2s   Interrupt surface calculations   ..t   qticonss   stop_sign_128x128.pngs   clicked(bool)i   t   surfaceThreadi    s
   finished()c             sT   t  j  ƒ  }  ˆ  j ˆ j ˆ j d ƒ ˆ _ t  j  ƒ  } d G| |  GHt j j ƒ  d  S(   Ni   s   Time to calculate lipids(   R�   t   MMUTLipidCalculateR   R<   t   lipidsRö   R÷   Rø   (   t   t1_lipidt   t2_lipid(   R9   R   (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt
   calcLipids'  s
     c             s÷   t  j  ƒ  }  t ˆ  d ƒ rg t ˆ  j ƒ d k rg t j ˆ  j ˆ  j ˆ  j ˆ  j ˆ  j	 j
 ˆ  j j
 ƒ n  t  j  ƒ  } g  ˆ  _ d G| |  GHt j j ƒ  ˆ r¯ ˆ  j j t ƒ n  ˆ ró t j d k ró ˆ  j j t ƒ ˆ rð ˆ  j j t ƒ qð qó n  d  S(   NR  i    s   Time to draw lipidsR   (   R�   R   R   R  R4   t
   DrawLipidsR   R   RÃ   R   t   CParamsManagerRÆ   Rö   R÷   Rø   t   SetUseVertexArraysR!   t   platformRÜ   t	   SetUseVBO(   R  R  (   R   t   useVAt   useVBO(    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt
   drawLipids,  s    $7	   s   Interrupt lipid calculationt   lipidThreadt   NUCLEICBASEBLOCKSt   darwint   anisou_stylet   anisou_scaleg      ð?t   anisou_scale_byvdwt   HBond_params   NUCLEICBASEPAIRS:i   t   min_D_At   max_D_At	   max_D_A_Si   t   max_H_Ai   t
   min_DD_D_Ai   t
   min_D_A_AAi   t
   min_H_A_AAi   t	   min_D_H_Ai   t   flatten_loops   Memory build_primitives 6s   Memory build_primitives 6.1s   Memory build_primitives 6.2s   Time to do simple stuffs   Memory build_primitives 6.3s   Memory build_primitives 6.4s   Time to do update_conn_atomss   Memory build_primitives 6.5s   Memory build_primitives 6.6i2   iÎÿÿÿs   Memory build_primitives 6.7s)   Time to do self.obj.SetSymmetryMatrices()s   Memory build_primitives 6.8Rt   s   Memory build_primitives 6.9s   Memory build_primitives 7R   s   Memory build_primitives 7.1s   Time to create ConnectivityDraws   Memory build_primitives 7.2s!   Time to SetParametersAndCalculates    Time to do build_tree_primitivess   Memory build_primitives 8c             s‚  d ˆ j  j d ƒ d }  ˆ t j k s8 ˆ t j k rPt j ƒ  } ˆ t j k r¿ ˆ  j ˆ j ˆ j ˆ j	 |  d d ˆ j
 j d ƒ ˆ j
 j d ƒ d ˆ j
 j d ƒ ˆ j
 j d ƒ ƒ ˆ _ ni ˆ  j ˆ j ˆ j ˆ j	 |  d d ˆ j
 j d ƒ ˆ j
 j d ƒ d	 ˆ j
 j d ƒ ˆ j
 j d ƒ ƒ ˆ _ t j ƒ  } ˆ j r~d
 G| | GHq~n.ˆ t j k rðt j ƒ  } ˆ  j ˆ ˆ ˆ j	 |  d d d ˆ j
 j d ƒ d ˆ j
 j d ƒ ˆ j
 j d ƒ ˆ j ƒ ˆ _ t j ƒ  } ˆ j r~d
 G| | GHq~nŽ t j ƒ  } ˆ  j ˆ j ˆ j ˆ j	 |  d d d ˆ j
 j d ƒ d ˆ j
 j d ƒ ˆ j
 j d ƒ ƒ ˆ _ t j ƒ  } ˆ j r~d
 G| | GHn  d  S(   Ni   t   solid_qualityiÿÿÿÿt   flatten_betaR  i    t   trace_cutofft	   loop_fraci   s   Time to do get spline(   RÆ   t   getR4   R5   R7   R�   t   GetSplineInfoR   R<   RÃ   R   t   sinfoR²   R8   RÈ   (   t   spline_accuRœ   R­   (   R9   R   R<   R   t   theMode(    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt
   calcSpline  s(    li	 ]	 ]	 c             sB  t  ˆ d ƒ rƒ ˆ j d  k rƒ t j ƒ  }  t j ˆ j ˆ j ˆ ˆ j j ˆ j	 j d ˆ  ƒ t j ƒ  } ˆ j
 rƒ d G| |  GHqƒ n  d  ˆ _ ˆ r¥ ˆ j j t ƒ n  ˆ rt j d k sØ t j d k sØ t j d k rˆ j j t ƒ ˆ rˆ j j t ƒ qqn  ˆ r>t  ˆ d ƒ r>t  ˆ j d ƒ r>ˆ j j ƒ  n  d  S(	   NR&  Rt   s   Time to do draw splineRë   R   R  Rï   t   updateGL(   R   R&  R2   R�   R4   t   build_splineR   R   R	  RÆ   R²   R
  R!   Rö   R  RÜ   R  Rï   R*  (   Rœ   R­   (   t   bumpmapt   mainwinR   R(  R  R  (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt
   drawSpline0  s     1	 	 - 't   splineThreads   Memory build_primitives 9s   Time to build it allRÃ   t   paramst   global_params(   i    i    i    (   s   LIPIDSRÛ   R  s   NUCLEICBASEPAIRSs   ANISOUs   CIRCLES(˜   R¯   t   ost   environt   has_keyR!   t   memusaget   print_memory_usageR�   R‘   RÊ   RÂ   R2   R   R<   R   R   t   callableRÜ   t   clear_primsR²   R4   RÝ   R3   RÞ   Rß   Rà   Rá   Râ   Rã   R5   R7   R6   R8   t
   startswitht   modelt   MolDispt   custom_spline_style_prefixt   custom_style_methodsRÈ   t   countt   indexRä   Rå   RÚ   Ræ   Rç   Rè   Ré   t   global_definitionst   PMRö   R  t   argvt   openglt   glGetStringt   GL_RENDERERR$  t
   MAINWINDOWRï   Rð   Rñ   R´   t   DRAW_INTERNAL_BONDSRµ   RJ   Rþ   t   matht   piRÇ   Rù   R   t   QToolButtont   interruptButtont   setTextt   setToolButtonStyleR   t   Qtt   ToolButtonTextBesideIcont   patht   abspatht   joint   dirnamet   __file__t   QIcont   setIcont   connectt   SIGNALt	   functoolst   partialt   mginterruptt	   SetStatusR  t	   isRunningt
   isFinishedt   waitt   UtilityThreadt	   statusBart   removeWidgett   startt   addPermanentWidgetR9   R  R  t   DrawBaseBlocksR1   R@   RÃ   R   R	  R
  R  t   getattrt   SPHEROID_AXESR   t   DoubleVectorRM   R   t
   DrawAnisoUR±   RÆ   t   DrawCirclesRA   R³   t   DrawBlobEllipsoidst   DrawSugarBlockst   DrawImposterSpherest   CNABasePairst	   getparamst   doubleat	   CalculateR%  t   DrawBasePairsR�   R÷   Rø   R#   R   RŽ   RÏ   R   R   t   ConnectivityDrawt   SetParametersAndCalculateR¹   Rº   R¶   R·   t   RedrawPrimitivesR/  R&  t   get_transparentt   set_transparent('   R   t   structure_changedt   debug_memoryR�   R‘   RÊ   RÂ   t   tree_stylest
   tree_modest   rpmRC  t   gl_renderert   useVAoptt	   useVBOoptt   pmRû   Rÿ   t   icondirt   iconR  R  t   scalet   radVecRT   t
   base_pairst	   hb_paramst   hb_params_arrayR'  R&  t   taRœ   R­   t   atomRadt   tbcdt   tacdt   taspcR)  R.  t   tb(    (   Rõ   R,  R-  R9   R   Ró   Rô   R<   R   Rþ   R(  R  R  sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   build_primitivesˆ  sÎ   								E	 *':						 "90
	+0117	


"0117	
7 - 
@: - 
7
4  
7  
4  
	+9  	
	@			*		 m	 U	 l - 
	(1	 - 	 (c         C   s   | |  _  d  S(   N(   RÇ   (   R   RÇ   (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   do_update_surfaceh  s    c         C   s   | |  _  |  j ƒ  d S(   sd   
      Request recalculation of an objects
      primitives based on new representation type.
      N(   RÂ   R   (   R   RÂ   (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   change_stylek  s    	(   t   __name__t
   __module__R   R   R(   R0   RJ   RV   R]   Rd   R^   Rl   Rs   Ry   R~   R{   R®   R2   RÌ   R#   RŽ  R�  R�  (    (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyR   5   s4   	
	
		"						
			;	ÿ á(   t   __doc__R�   t   displayobjectt   graphicsmodelt   texturet	   atom_utilt   mmdb2R   RH  R4   R2  Rö   RY  R@  R[  R`  R:  t   PyQt4R   R   R5  t
   ALPHAHELIXt
   BETASTRANDt	   BETABULGER   (    (    (    sH   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/pygl/moleculargraphicsmodel.pyt   <module>   s2   



