ó
ÉÝ{Tc        
   @   sÍ   d  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 m	 Z	 d „  Z
 d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 d
 d
 d
 d
 d d
 d d
 d „	 Z d d „ Z d S(   s“  
     python/ui/map.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ÿÿÿÿ(   t   *N(   t   QtCorec         C   s)  d GHt  |  ƒ } | j ƒ  } | j ƒ  xû| D] } | j d ƒ r. d GH|  Sq. Wd GHd d  l } | j ƒ  | j ƒ  } | j | j | j	 Bƒ | j
 | ƒ | j ƒ  } | j ƒ  } t j d d d t ƒ }	 |	 j }
 |	 j | d	 ƒ | d	 d
 d !} |	 j d ƒ |	 j d | d ƒ |	 j d d | d	 d ƒ |	 j d d | d d ƒ |	 j d d | d d ƒ |	 j d d | d d ƒ |	 j d d | d d ƒ |	 j d d | d d ƒ |	 j d ƒ |	 j d | d ƒ |	 j d | d ƒ |	 j | d ƒ |	 j ƒ  d G|
 GH|
 Sd  S(   Ns   check for cell/spacegroupt   _cells	   Have cells   Do not have celliÿÿÿÿt   suffixs   .mmcift   deletei    i   i
   s   #
s   _cell.entry_id      s   
s   _cell.length_a      s   %.4fs   _cell.length_b      i   s   _cell.length_c      i   s   _cell.angle_alpha   i   s   _cell.angle_beta    i   s   _cell.angle_gamma   i   s!   _symmetry.entry_id               s"   _symmetry.space_group_name_H-M   's   '
t   return(   t   opent	   readlinest   closet
   startswitht   mmutt   InitMatTypet   CMMUTManagert   SetFlagt   MMDBF_AutoSerialst   MMDBF_IgnoreDuplSeqNumt   ReadCoorFilet   GetCellInfot   GetSpaceGroupt   tempfilet   NamedTemporaryFilet   Falset   namet   writet
   writelines(   t   fnamet   coorfilet   ft   linest   lR
   t   molHndt	   cell_infot   sgt   tfilet   tnamet   pdbid(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   CheckMMCIF_SG_Cell    sF    

	
	t   MapDatac           B   sÙ   e  Z i  Z i d  d 6d  d 6d  d 6d d 6d  d 6d d 6e d	 6d
 d 6Z d  g  d i  d d  d „ Z d „  Z d „  Z d d „ Z d „  Z	 e d „ Z
 d „  Z d d „ Z i  d „ Z d „  Z d  d „ Z d „  Z RS(   t    R   t   phit   wti    t
   differencet
   structFileg      à?t   ratet	   is_em_mapt   MTZt   filetypec   	      K   s  d |  _  i  } | j t j ƒ | j | ƒ | j | ƒ d G| G| GHt j |  d d | d d d | d | ƒ| j d ƒ rº | d d	 k rº | d d  k	 rº d
 G| d GH| d |  _ n d G| GH| |  _ d G|  j GH| j d ƒ r÷ | d |  _	 n	 | |  _	 d  S(   Nt   maps   MapData.__init__R%   R   t   modulet   filenamet
   dataparamsR*   R&   s/   set self.structFile to dataparams["structFile"]s!   set self.structFile to structFiles   self.structFileR)   (
   R0   t   updateR%   t   initialisationt   DataObjt   __init__t   has_keyt   NoneR*   R)   (	   t   selfR   R1   R)   R2   t   restore_from_legendR*   t   keywordst   pars(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR6   ^   s"    	/		c         K   s   t  j |  ƒ ~  d  S(   N(   R5   R   (   R9   R;   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR   y   s    c         C   s5   g  } t  ƒ  j |  j ƒ } | r1 | j | ƒ n  | S(   N(   t   CRYSTALMANAGERt
   getCrystalR   t   append(   R9   t   xtl_listt   xtl(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   getDependentsForDeletion€   s
     i   c         C   sg   t  j |  d | ƒ} xK t j j ƒ  D]: \ } } t |  | ƒ } | sR | | k r% | | | <q% q% W| S(   Nt   all(   R5   R2   R%   R4   t   itemst   getattr(   R9   RC   t   datapart   keyt   defaultt   value(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR2   Š   s     c         C   sG   x@ d d d d d d g D]& } t  |  | ƒ | j | k r d Sq Wd S(	   NR1   R   R'   R(   R+   R)   i    i   (   RE   R2   (   R9   t   shadow_datat   item(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt
   isSameData“   s    c      	   K   s¦  d d  l  } | r t |  _ n  d d  l } |  j d k r» |  j r€ t j |  j d |  j	 |  j
 |  j d d d |  j ƒ |  _ qt j |  j d |  j	 |  j
 d d d d |  j ƒ |  _ n\|  j d k ræ t j |  j d ƒ |  _ n1|  j d	 k rIt |  j d |  j ƒ } d	 G| G|  j GHt j | |  j |  j d |  j ƒ |  _ nÎ |  j d
 k r|  j d j ƒ  j d ƒ rët j d d d d t t j ƒ  ƒ ƒ } | j } | j ƒ  | j |  j d | ƒ t j | |  j d |  j ƒ |  _ qt j |  j d |  j d |  j ƒ |  _ n  |  j j ƒ  |  _ |  j j ƒ  |  _ d d  l } |  j j ƒ  }	 |  j j ƒ  }
 t  | j! |
 ƒ |	 ƒ |  _" |  j# ƒ  |  _$ |  j% d ƒ d d g S(   NiÿÿÿÿR-   i   i   i    g      ð?R&   t   MAPt   MMCIFt   CIFt   fcfR   s   .cift   prefixt   ccp4mgt   create(&   t   cprimt   TrueR,   t   convert_shelx_fcf_to_cifR.   R(   t   xmapviewt   XMapR1   R   R'   R+   t   clipper_mapR$   R*   R)   t   lowert   endswithR   R   t   strt   ost   getpidR   R   t   GetMeant   map_meant	   GetStdDevt   map_sdt   matht   GetMaxt   GetMint   maxt   fabst   absolute_maxt   getClipperSymmetryt   originalSymmetryt   update_dependents(   R9   t   emMapR;   RT   RV   t   ciffilet   ftR   Rc   Rh   t   absolute_min(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   loaddata›   s>    	>;+(	
%,c   	      C   s¹  d d  l  } d d  l } |  j j ƒ  } |  j j ƒ  } | r g  } | j d ƒ } | j | ƒ } g  } x( t d d ƒ D] } | j | | ƒ qv Wx3 t d d ƒ D]" } | j | | d | j	 ƒ q¡ W| d k r2t
 | d d ƒ d	 k  r2t
 | d
 d ƒ d	 k  r2t
 | d d ƒ d	 k  r2d GHd } q2n  | d k r t
 | d d ƒ d	 k  r�t
 | d
 d ƒ d	 k  r�t
 | d d ƒ d	 k  r�d GHd } q�q n  t d d d | d | ƒ S(   Niÿÿÿÿi   i    i   i   g     €f@s   R 3iZ   g�íµ ÷Æ°>i   i   ix   s   Space group R 3 reset to H 3s   H 3s   R 3 2s    Space group R 3 2 reset to H 3 2s   H 3 2t   statust   cellR    (   t
   pygl_coordRc   RY   R   t   GetCellt   doubleat   frompointert   rangeR?   t   pit   abst   dict(	   R9   Rs   Rc   R    t   cellptrt   pcellt   tmpRr   t   i(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRi   È   s*       NNc         C   s  t  d ƒ j d ƒ d k r� | rx t |  j d d d t  d ƒ j d ƒ ƒ} t |  j d d d t  d ƒ j d	 ƒ ƒ} qt |  j d d
 ƒ} n‡ | rû t |  j d d |  j d t  d ƒ j d ƒ ƒ} t |  j d d |  j d t  d ƒ j d	 ƒ ƒ} n t |  j d d
 |  j ƒ} d  S(   Nt   MapDispParamsManagert   contour_scalet   sigmat   contour_levelg      @t   colourt   diff_pos_colourg      Àt   diff_neg_colourg      ø?(   t   PMt   gett   MapDispR   Rb   (   R9   R)   t   s0t   s1t   s(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   create_contoursà   s    *-14c         K   s   t  |  j d d d | ƒS(   Nt   visiblei   t   params(   Rˆ   R   (   R9   RŽ   R;   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt
   add_objectô   s    c         K   s^   d |  j  d d d |  j d d |  j d d |  j d d |  j |  j f d } | S(	   Ns   Map from file: i   s    
s   Structure facture = s   
s	   phases = s   phase weight = s.   Mean density = %.3f  standard deviation = %.3f(   R1   R   R'   R(   R`   Rb   (   R9   R;   t	   list_data(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR�   ú   s    	Zc      	   K   sº  d d  l  } | r¶t | ƒ |  _ |  j r6 d  |  _ n  |  j d k rÇ |  j rŒ t j |  j	 d |  j
 |  j |  j d d d |  j ƒ |  _ q•t j |  j	 d |  j
 |  j d d d d |  j ƒ |  _ nÎ |  j d k r•|  j	 d j ƒ  j d	 ƒ rit j d
 d d d t t j ƒ  ƒ ƒ } | j } | j ƒ  | j  |  j	 d | ƒ t j | |  j d |  j ƒ |  _ q•t j |  j	 d |  j d |  j ƒ |  _ n  x |  j D] } | j ƒ  qŸWn  d  S(   NiÿÿÿÿR-   i   i   i    g      ð?R&   RO   RP   R   s   .cifRQ   RR   (   RV   t   floatR+   RY   R8   R.   R(   RW   RX   R1   R   R'   RZ   R[   R   R   R\   R]   R^   R   R   R)   t   objinstst   recreate_graphmod(   R9   t   sampling_rateR;   RV   Rn   R   t   obj(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   set_sampling_rate  s&    	 	>;(	
%,c         K   sÆ   d d  l  } | j j |  j d ƒ s@ | j j |  j d ƒ r_ t ƒ  j d |  j d ƒ d  St d |  j d |  j	 ƒ  ƒ } | j
 ƒ  } | d d k rÂ t ƒ  j d |  j d ƒ | j ƒ  d  S| S(	   Niÿÿÿÿi   s   File no longer exists R1   R2   i    i   s   ERROR loading data from file (   R]   t   patht   existsR1   t   isfilet   MGGUIt   WarningMessageR8   R%   R2   Rp   R   (   R9   R;   R]   t   mt   rv(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   clone$  s    
(   t   __name__t
   __module__t   class_dependentsR   R4   R6   R   RB   R2   RL   Rp   Ri   RŒ   R�   R�   R–   Rž   (    (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR%   P   s,   
		
		-		Rˆ   c        
   B   sè  e  Z i  Z d  d d d d d d g Z d d d	 d
 d d d g Z d d g d d g g Z d d d d g Z d d d d g Z d< Z	 i	 d d 6d d 6d d 6d d  6d! d" 6d! d! d! d g d# 6d$ d% 6e
 j d& 6d d' 6Z d d d d  d" d# d% d' g Z d! d( i  d) d* „ Z d+ „  Z d, „  Z d- „  Z d. „  Z d< i  d/ „ Z d0 „  Z d1 „  Z d2 „  Z d( d3 „ Z d4 „  Z d! d! d! d! d! d! d! d! d) d5 „	 Z d6 „  Z d! d( d7 „ Z d8 „  Z d! d) d9 „ Z d! d! d: „ Z d< d< d d) d; „ Z RS(=   t   Chickenwiret   Solidt	   Cylinderst   Dotss   Contour Slicet   Masks   Multi-chickent   surface_style_chickenwiret   surface_style_solidt   surface_style_solid_chickenwiret   surface_style_dotst   surface_style_slicet   surface_style_maskt   surface_style_multichickens   Absolute e/At   Sigmat   absoluteR�   s   5.0s   10.0s   15.0s   20.0s   0.5s   0.75s   1.0s   1.5t   surface_styleg      $@t   radiusg        R‚   t   OFFt	   clip_modeR&   t   clip_MolDispt
   clip_pointg      ø?t   atom_clip_radiust   colour_by_radiust   point_clip_radiusi   i    c         K   s¨  i d d 6d d 6} x' t  j j ƒ  D] \ } }	 |	 | | <q$ Wx- d d g D] }
 t d ƒ j |
 ƒ | |
 <qK Wt t d | ƒ d	 j ƒ d	 k r¬ t d ƒ j d
 ƒ | d <n t d ƒ j d ƒ | d <| j d ƒ rd d  l	 } t
 | d | j ƒ r| d =qn  | j | ƒ | j | ƒ t j ƒ  |  _ | j d ƒ r`d	 | d d <|  j j | d ƒ n  t j |  d | | d | d | ƒ|  j d d	 ƒ |  j d |  j d d ƒ | d d k r|  j d d d | d d | d d	 d | d d d | d d d | d ƒ n. |  j d d d | d d | d d | d ƒ |  j d d d |  j ƒ t d ƒ j |  j ƒ |  j r›|  j d |  j ƒ |  j d  |  j ƒ n  d |  _ d  S(!   Nt   magentaRƒ   R§   t   styleR°   R±   R   R   i    t   first_colourt   other_colourt   plane_definitioniÿÿÿÿt
   set_cameraRˆ   R�   RŽ   R3   t   forcei   R³   t   POINTt   clip_xRµ   t   clip_yt   clip_zi   R¸   R¶   R´   t   transparentt   opacity(   Rˆ   t   map_initialisationRD   R†   R‡   t   lent   get_dataobjt   objnamesR7   t   typest
   isinstancet   ListTypeR3   t   MapPlanet	   map_planet
   set_paramst   DispObjR6   t   set_contourt
   set_colourRƒ   t   set_selectionR°   t   add_dependentt   handle_paramsRÄ   t   set_transparencyt   set_opacityRÅ   t	   do_redraw(   R9   t   parentR   R�   RŽ   R:   R;   R<   RG   RI   RK   RÊ   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR6   [  sD    
"Q	c         K   s'   t  d ƒ j |  j ƒ t j |  ƒ d  S(   NR   (   R†   t   remove_dependentRÕ   RÐ   R   (   R9   R;   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR   •  s    c         C   s   t  j t  j j |  j ƒ S(   N(   Rˆ   t   surface_style_menut   surface_style_aliast   indexR°   (   R9   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   get_style_label   s    c         C   s   |  j  S(   N(   R‚   (   R9   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   get_contour_level£  s    c         C   s}   t  d ƒ j d ƒ } t  d ƒ j d ƒ d k rn |  j j | |  j j } |  j j | |  j j } | | f S| | f Sd  S(   NR   t   contour_sigma_maxR€   R¯   (   R†   R‡   RÙ   R`   Rb   (   R9   t	   max_sigmat	   range_maxt	   range_min(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   get_contour_rangeª  s    
c         K   s¸   |  j  d k rF | j d ƒ s- | j d ƒ rF |  j d d d d ƒ n  |  j  d k r} | j d ƒ r} |  j d d d d ƒ n  |  j  d	 k r´ | j d
 ƒ r´ |  j d d	 d d ƒ n  d  S(   NRª   t   dot_spacingt   dot_sizeR°   R¿   i   R§   t
   line_widthR©   t   cylinder_width(   R°   R7   RÏ   (   R9   t   ParamsManagert   updatedR;   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRÕ   µ  s    c         C   s   d S(   Ni   (    (   R9   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   canBeTransparentÂ  s    c         C   s?   |  j  r( t ƒ  j |  j  ƒ d |  _  n  d |  _ |  j ƒ  d S(   s„   
    Delete any existing graphmod and recreate with same parameters
    but expect that the parent clipper map has been changed
    i   N(   t   graphmodt
   MAINWINDOWt   removeGLDisplayObjectR8   RØ   t   draw(   R9   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR“   È  s
    		c         K   s/   |  j  ƒ  } t |  j j d |  j d | ƒd  S(   NR�   RŽ   (   RŽ   Rˆ   RÙ   R   R�   (   R9   R;   R<   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRž   ×  s    c         C   sV  t  j |  d | ƒ} | ru x* t j j ƒ  D] } t |  | ƒ | | <q+ Wxî d d g D] } t |  | ƒ | | <qU WnÄ d d g } x. t j d d !D] } t |  | d ƒ | | <q’ W|  j d k rÚ | j d d	 d
 g ƒ n8 |  j d k r| j d d d g ƒ n | j d g ƒ x$ | D] } t |  | d ƒ | | <qW|  j	 j d | ƒ | d <| S(   NRC   Rƒ   Rº   i    i   R&   t	   SELECTIONR³   R´   R¶   RÀ   Rµ   R¸   R½   (
   RÐ   RŽ   Rˆ   RÆ   t   keysRE   t   map_initialisation_orderR³   t   extendRÎ   (   R9   RC   R<   RK   t   out(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRŽ   Þ  s$    c         C   sü  d d  l  } | j |  j ƒ  | j ƒ d } | s5 d S| j j d ƒ d k r` |  j d d ƒ nz | j j d ƒ } |  j d | j j d ƒ d | j j d ƒ d	 | j j d	 ƒ d
 | d d | d d | d d | d ƒ |  j d | j j d ƒ ƒ |  j d | j j d ƒ ƒ xÀ | j ƒ  D]² } | d k rH|  j d | d ƒ q| d k rq|  j d t	 | d ƒ ƒ q| d k r”|  j d | d ƒ q| d k r| d rÑ|  j
 j | d ƒ |  j
 j ƒ  qÑqqWt j |  | ƒ |  j j d g ƒ d S(   Niÿÿÿÿi   i    R³   R²   R´   Rµ   R±   R¶   RÁ   RÂ   RÃ   i   R¸   i   R‚   Rƒ   t	   ncontoursR°   R½   R3   (   t   utilst
   dict_diffsRŽ   R‡   RÓ   RÑ   RÒ   Rñ   RÏ   R\   RÎ   t	   set_planeRÐ   t   update_data_status0t
   update_guiR?   (   R9   t
   shadowdispRö   t   diffsRµ   RG   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   update_data_statusø  s<     



c
         K   s‘  d d  l  } | r$ t | ƒ |  _ n  | r< t | ƒ |  _ n  | rT t | ƒ |  _ n  |  j d k r¾ | |  j k s� | |  j k r¾ t d d d |  j ƒ } | r¾ |  j | j	 d d g ƒ q¾ n  | d k rÖ d |  _ nB| rp|	 s | |  j k s |  j d k rpt d d d | ƒ } | r| j	 j
 ƒ  d	 k rd |  _ | |  _ |  j | j	 d d g |  j |  j g ƒ qn¨ | d
 k s”| d
 k s”| d
 k ry t | ƒ } Wn d } n Xy t | ƒ } Wn d } n Xy t | ƒ } Wn d } n X| | | |  j g |  _ d |  _ n  d |  _ |  j d k r\d |  j d	 t d t |  j ƒ ƒ !|  _ n1 |  j d k rwd |  _ n d t |  j ƒ |  _ d  S(   NiÿÿÿÿRð   t   object_typet   MolDispR   t	   selectionR   R²   i    R&   g        RÀ   i   s   Clip to i
   s   Clip to points   Extent (   Rs   R‘   R±   R¶   R¸   R³   R´   t   get_dispobjt   remove_dependencyt	   SelHandlet   getNofAtomst   add_dependencyt   handle_clip_MolDispRµ   RØ   Rf   RÇ   t   selection_labelR\   (   R9   R±   R³   R´   R¶   RÁ   RÂ   RÃ   R¸   R¿   R;   Rs   t   clip_dispobjt   clip_(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRÓ     sX     		$


	,c         K   s   |  j  | ƒ d  S(   N(   RÑ   (   R9   RI   R;   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt	   set_style^  s    c         K   s~   | r t  | ƒ |  _ n  t d ƒ j d ƒ d k rI |  j |  j j } n	 |  j } |  j rq |  j j j | ƒ n  d |  _	 d  S(   NR   R€   R�   i   (
   R‘   R‚   R†   R‡   RÙ   Rb   Rì   R•   t   SetContourLevelRØ   (   R9   R‚   R3   R;   t   scaled_contour(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRÑ   c  s     		 c         C   sÆ  d d  l  } | j ƒ  } t ƒ  j |  j j ƒ } t d d ƒ } x± | D]© } t | d ƒ rF | j | k rF t | d ƒ rF t | d ƒ rï t | j	 d ƒ rï t
 | j	 j ƒ rï | j d d | j	 j ƒ  ƒ } |  j rì |  j j j | ƒ qì qï qF qF W|  j rS|  j rS|  j rS|  j rL|  j j j |  j ƒ |  j j d	 ƒ d
 |  _ d Sd
 Sn  t d ƒ } | j d d
 d
 d
 ƒ } t j } t j }	 |  j d k r­t j } t j }	 n  |  j d k rÑt j } t j }	 n
|  j d k rõt j } t j }	 næ |  j d k rt j } t j }	 nÂ |  j d k r=t j } t j }	 nž |  j d k rz|  j j  ƒ  |  j j! } t j" } t j }	 na |  j d k r·|  j j  ƒ  |  j j! } t j# } t j }	 n$ |  j d k rÛt j } t j$ }	 n  | j% d ƒ }
 | j% d ƒ } | j% d ƒ } | j% d ƒ } |  j sód d  l& } t d ƒ j% d ƒ d k r]|  j' |  j j( } n	 |  j' } |  j j) s,| j& |  j j* t+ d ƒ j, t+ d ƒ j- d | d |  j. d | d |	 d  |
 d! | d" | d# | d$ | d% | ƒ
|  _ x3 t/ ƒ  D]( } | j0 | t1 j2 d& ƒ |  j j3 ƒ qëWd' GHt4 j5 j6 ƒ  n» |  j j* j7 ƒ  } | j8 ƒ  | j9 ƒ  | j: ƒ  f } d( G| GH| j& |  j j* t+ d ƒ j, | d | d |  j. d | d |	 d  |
 d! | d" | d# | d$ | d% | ƒ
|  _ d) |  j j* j; ƒ  |  _. t< t/ ƒ  ƒ d
 k rLt/ ƒ  d
 } |  j j) sL|  j j= | j> d
 | j> d | j> d* f ƒ qLn  |  j? ƒ  t@ ƒ  jA |  jB ƒ } |  j j jC | d
 | d | d* ƒ |  j j) rµ|  j j jD |  jE ƒ n  tF ƒ  j |  j ƒ |  j j j |  j ƒ d
 |  _ d |  _ n  |  j rKt@ ƒ  jA |  jB ƒ } |  j j jC | d
 | d | d* ƒ d
 |  _ d |  _ n  |  j r©| rœ|  j j  ƒ  |  j j jG |  j j! ƒ |  j j jH |  j jI ƒ n  |  j j jJ | ƒ |  j j jK |	 ƒ |  j j jL |
 ƒ |  j j jM | ƒ |  j j jN | ƒ |  j j jO | ƒ |  j j jP |  j. ƒ |  jQ d+ k r×|  j j jR |  jS ƒ tT d d, d |  jU ƒ } | rË| jV jW ƒ  \ } } d d  lX } | d k r©| jY | | ƒ } n | jZ ƒ  } |  j j j[ | ƒ q×d- |  _Q n  |  jQ d. k rO|  j j jR |  j\ ƒ | jZ d ƒ } | j] |  j^ d
 |  j^ d |  j^ d* ƒ | d
 <|  j j j[ | ƒ n4 |  jQ d- k rƒ| jZ d
 ƒ } |  j j j[ | ƒ n  |  j j_ ƒ  |  j j j |  j ƒ n  d
 |  _ |  j j d	 ƒ d S(/   NiÿÿÿÿRþ   t   MolDatat   masterCrystalR   R   t   GetTransformi   Rì   i    i   R   R§   R­   t   surface_style_marching_cubesR¨   R©   R«   R¬   Rª   Rç   Rè   Rå   Ræ   R€   R�   t   mainviewR‚   R±   t   plottypet	   linestylet   wiresizet   dotSizet
   dotSpacingt   planet   transformMatrixt   cylindersizet   PositionChangeds   Connected move signals   Set origin of map togÍÌÌÌÌÌÜ?i   Rð   Rÿ   R²   RÀ   (`   Rs   t   matrixR=   R>   RÙ   R   RÈ   t   hasattrR  R   t   callableR  Rì   R•   t   SetTransformMatrixRØ   t   do_recolourt   do_update_opacityt   SetAlphaRÅ   t   do_rebuildGLR?   R†   t   PlaneRW   t   CHICKENWIREt	   WIREFRAMER°   t   MULTICHICKENt   MARCHINGCUBESt   SOLIDRÎ   t   update_planeR  t   CONTOURSt   MASKt   DOTSR‡   t   mapgraphicsmodelR‚   Rb   R,   RY   t   VWt   comt   originR±   t	   GLWIDGETSt   connectR   t   SIGNALt   handleGLWidgetChangePostiont   syst   stdoutt   flusht	   GetOrigint   get_xt   get_yt   get_zt	   GetMaxDimRÇ   t   CentreOnt   rposRÏ   t   MGCOLOURt   RGBRƒ   t	   SetColourt   SetColourByRadiusR·   t   BUILDt   SetPlanet   SetContourLevelStept   contour_spacingt   SetPlotTypet   SetLineStylet   SetLineWidtht   SetCylinderWidtht   SetDotSpacingt
   SetDotSizet	   SetRadiusR³   t   SetClipRadiusR¶   R  R´   R  t   getSelIndext	   atom_utilt   CartesiansFromAtomst   CartesianVectort   SetClipPositionsR¸   t	   CartesianRµ   t   rebuild(   R9   Rs   R  RA   t   dataobjt   dobjt   pmR  R  R  Rç   Rè   Rå   Ræ   R-  R  t   glwidgett   map_origt	   draw_origt   rgbR•   t	   nSelAtomst   SelAtomsRP  t   clip_vec(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRï   u  sö    -3	 														o& !	f7
%		%		.	c         K   s4   | r0 | s | |  j  k r0 | |  _  d |  _ n  d  S(   Ni   (   R°   RØ   (   R9   R°   R¿   R;   (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRÏ     s    	c         K   së   d d  l  } t d |  j ƒ } | s( d  S| d k r� | j d ƒ } |  j j j | ƒ ~ | j j ƒ  \ } } d d  l	 }	 |	 j
 | | ƒ }
 n0 | d k r¿ d |  _ d |  _ | j d ƒ }
 n  |  j rÞ |  j j j |
 ƒ n  d |  _ d  S(	   NiÿÿÿÿR   R   i    R   R²   R&   i   (   Rs   R  R´   RR  Rì   R•   RS  R  RO  RP  RQ  R³   RØ   (   R9   t	   attributet   masterR;   Rs   R  t   tmp_clip_vecR]  R^  RP  R_  (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyR     s$     			c      
   K   s�   | rX | rX t  | j d ƒ t  | j d ƒ } |  j d t  | j d ƒ | | ƒ n  t j |  d | d | d | d | ƒd  S(   NR‚   t   initial_statust   final_statust   fractiont   step(   R‘   RŽ   RÑ   RÐ   t   movie_interpolation(   R9   Rc  Rd  Re  Rf  R;   t   delta(    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRg  ;  s    	N(    RŸ   R    R¡   RÛ   RÜ   t   contour_scale_menut   radius_menut   sampling_rate_menuR8   t   params_managerRW   t   COLOUR_BY_RADIUS_NONERÆ   Rò   R6   R   RÞ   Rß   Rä   RÕ   Rë   R“   Rž   RŽ   Rý   RÓ   R
  RÑ   Rï   RÏ   R  Rg  (    (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRˆ   ?  sR   	

		:								#B		žR&   t   0R-   c	         K   sÙ  d G| GHd d  l  }
 d d  l } d d  l } | j | ƒ } | j | ƒ } | j | ƒ } | j | ƒ } t | ƒ d k  r„ d } n t | ƒ } t | ƒ d k  s´ t | ƒ d k  r¸ d  Sd } | rÓ t | ƒ } n  | rè t | ƒ } n  | sû | d k rd } n  |  r“| j |  | j	 ƒ r“t
 d |  d	 | d
 | d | d | d | d | ƒ } | | _ | j ƒ  } | d r¯t ƒ  j d |  d ƒ ~ d  Sn t ƒ  j d |  d ƒ d  S| j d | ƒ d d  l } | j ƒ  | S(   Nt   openMTZiÿÿÿÿi   g      ø?i    t	   No_WEIGHTR&   R1   R*   R   R'   R(   R+   R)   s   File not readable: i   (   Rö   t   stringR]   t   stripRÇ   R‘   R8   t   intt   accesst   R_OKR%   R.   Rp   Rš   R›   RŒ   RU  t   UpdateDisplay(   R1   R   R'   R(   t   use_wtR)   R+   t   maptypeR*   R;   Rö   Rq  R]   Rœ   R�   RU  (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyRo  L  s@    	$	$    	3	

R   c         C   sh  d d  l  } t ƒ  j ƒ  \ } } | j d |  d d d d d d d	 d
 d d d d d d d d d d d d g d i d d 6d d 6d d 6d d 6d d 6d d
 6d d 6d d 6d d 6d  d 6d! d 6d" d 6d# d 6d$ d 6d% i t d& t d' d( d) d* d+ d, d- d. d/ d ƒ d 6t d& t d' d0 d) d* d+ d1 d- d2 d/ d3 ƒ d 6t d& t d' d4 d) d* d+ d5 d- d d/ d ƒ d 6t d& t d' d6 d) d* d+ d d- d7 d/ d ƒ d 6t d& t d' d8 d) d* d+ d d- d3 d/ d3 ƒ d 6t d& t d' d9 d) d* d+ d d- d3 d/ d7 ƒ d
 6t d& t d' d: d) d; d< d= d> d? d@ g dA d dB dC dD g ƒ d 6t d& t d' dE d) d; d< dF dG g dA d dH g ƒ d 6t d& t d' dI d) d* d+ d d- d d/ d ƒ d 6t d& t d' dJ d) d* d+ dK d- dL d/ d ƒ d 6t d& t d' dM d) d; d< | dA | ƒ d 6t d& t d' dN d) d; d< | dA | ƒ d 6t d& t d' dO d) d; d< | dA | ƒ d 6t d& t d' dP d) d; d< | dA | ƒ d 6ƒ } | S(Q   NiÿÿÿÿR   t   helps   maps#preferencest   picture_definitioni   t   titles   Map drawing stylet   guiR”   R±   R°   R€   Rà   R»   R¼   R„   R…   Rå   Ræ   Rç   Rè   RH   g      $@R§   R¯   g      @Rõ   g      è?g333333Ó?g      ð?g¸…ëQ¸ž?t   bluet   greent   redR¹   t
   definitiont   typet   labelt   ExtentRº   t   spinboxRf   g      I@t   ming        Rf  s!   Maximum dot separation(0.005-0.5)g      à?g{®Gázt?g{®Gáz„?s   Dot size(1.0-3.0)g      @s   Chickenwire line widthgš™™™™™¹?s   Cylinders widths!   Sampling rate (MTZ/CIF data only)s   Surface drawing stylet   comboboxt   menus   Chicken wireR£   R¤   R¥   t   aliasR¨   R©   Rª   s   Contour scale ins   Absolute e/AR®   R�   s$   Max/min contour level for sigma modes   Number of contour levelsi   i    s   First contour colours   Second contour colours   +ve diff. map colours   -ve diff. map colour(   t   servicesR?  t   colour_menuRé   Rz   R‘   R\   Rs  (   R   R‰  RŠ  t   colour_aliasRX  (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   createDrawingStylePMy  sP    	!
......@4..(((.(   t   __doc__Rö   RV  t   global_definitionsRÍ   R5  R   RW   t   PyQt4R   R$   R5   R%   RÐ   Rˆ   Ro  RŒ  (    (    (    s:   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/map.pyt   <module>   s    


	0ïÿ ÿ ,