ó
±éRc           @  s­  d  d l  m Z d  d l m Z d  d l Z d  d l Z e j Z d  d l m	 Z	 d   Z
 d   Z d   Z e e d d	  Z e d
 d  Z e d
 d  Z d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e	 f d      YZ e d! k r©e e d" d# d d" d$ d d% d& d'  e e d" d# d d" d$ d d% d& d(  e   Z e e d) d* d+ d, d- g   e e d" d. d d" d/ d d%   e e d) d0 d1 d2 d3 g   e e d) d4 d5 d6 d7 g   e e d) d8 d9 d: d; g   e e d) d< d= d> d? g   n  d S(@   i’’’’(   t   print_function(   t   floorN(   t   ExtremeFinderSimplec      
   C  sZ  d d d d d d d d d	 d
 g
 } d d d d d d d d d d g
 } d g t  |  } d d d d d d d d g } d d d d d d d d g } t |  d d } d g t  |  } t |  d d } d g t  |  }	 t j | | | g  }
 t j | | | g  } t j |	 | | g  } |
 j |   } | | } | | } | | f S(   Ng      ų?i   i   i   i   i(   iF   ix   i  i  i   i   i   i
   i   i   i-   iZ   i“   ih  g      š?g      @g      @i   i   i   i   g      N@g      ¬@(   t   lent   At   npt   concatenatet   searchsorted(   t   dvt   degree_limits_t   degree_steps_t   degree_factorst   minsec_limits_t   minsec_steps_t   minute_limits_t   minute_factorst   second_limits_t   second_factorst   degree_limitst   degree_stepst   nt   stept   factor(    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   select_step_degree   s,    $$			

c         C  sf  d d d d d d d d d	 g	 } d
 d d d d d d d d g	 } d g t  |  } d d d d d d d d d d d g } d
 d d d d d d d d d d g } t |  d d } d g t  |  } t |  d d } d g t  |  }	 t j | | | g  }
 t j | | | g  } t j |	 | | g  } |
 j |   } | | } | | } | | f S(   Ng      ų?g      @g      @i   i   i
   i   i   i$   i   i   i   i   i   i   i   i   i   g      š?g      @g      @i   i   i   i-   i   i   g      N@g      ¬@(   R   R   R   R   R   (   R   t   hour_limits_t   hour_steps_t   hour_factorsR   R   R   R   R   R   t   hour_limitst
   hour_stepsR   R   R   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   select_step_hour/   s,    !!''			

c         C  s   d t  t j |    d } d | } d | |  k r@ d } nB d | |  k rY d } n) d | |  k rr d } n d } d	 | } | | f S(
   Ng      $@g      š?g      ų?i   g      @i   g      @i   g¹?(   t   intt   matht   log10(   R   t   tmpR   R   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   select_step_subQ   s    
			
g      ¬@c         C  s§  |  | k r | |  }  } n  t  | |   | } | rE t } d } n t } d } | d | k rv | |  \ }	 }
 n  t | |  \ }	 }
 |
 | }
 |  |
 | |
 |	 |
 } } } t j t j | |	  t j | |	  d d d d |	 } t	 |  } |
 d k r| d | d	 | k rt
 | |	  } | ra| d	 t j d	 | d d  |	 } n! | d	 t j d	 | d  |	 } t	 |  } n  t j |  | |
 f S(
   Ng      8@g     v@g      š?g      ą?i   t   dtypet   ii’’’’i    (   t   floatR   R   R"   R   t   arangeR   R   t   ceilR   R   t   array(   t   v1t   v2t   nvt   hourt   include_lastt   threshold_factorR   t   _select_stept   cycleR   R   t   f1t   f2t   fstept   levsR   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   select_stepe   s.    	
 *$(!i  c      
   C  sS   |  d | d }  } t  |  | | d t d | d | \ } } } | d | | f S(   Ng      .@R,   R-   R.   (   R5   t   True(   R)   R*   R+   R-   R.   R4   R   R   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   select_step24   s
    c      
   C  s"   t  |  | | d t d | d | S(   NR,   R-   R.   (   R5   t   False(   R)   R*   R+   R-   R.   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   select_step360”   s    t   LocatorBasec           B  s>   e  Z e d   Z d   Z d   Z e e e  Z d   Z RS(   c         C  s   | |  _  | |  _ d  S(   N(   t   dent   _include_last(   t   selfR;   R-   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   __init__©   s    	c         C  s   |  j  S(   N(   R;   (   R=   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt
   _get_nbins­   s    c         C  s   | |  _  d  S(   N(   R;   (   R=   t   v(    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt
   _set_nbins°   s    c         K  sl   d | k r' t  | j d   |  _ n  | rh t d d j g  | j   D] } t |  ^ qF    n  d  S(   Nt   nbinss$   Following keys are not processed: %ss   , (   R   t   popR;   t
   ValueErrort   joint   keyst   str(   R=   t   kwargst   k(    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt
   set_paramsµ   s
    (	   t   __name__t
   __module__R6   R>   R?   RA   t   propertyRB   RJ   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyR:   Ø   s
   		t
   LocatorHMSc           B  s   e  Z d    Z RS(   c         C  s   t  | | |  j |  j  S(   N(   R7   R;   R<   (   R=   R)   R*   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   __call__æ   s    (   RK   RL   RO   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRN   ¾   s   t	   LocatorHMc           B  s   e  Z d    Z RS(   c         C  s   t  | | |  j |  j d d S(   NR.   i<   (   R7   R;   R<   (   R=   R)   R*   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRO   Ć   s    (   RK   RL   RO   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRP   Ā   s   t   LocatorHc           B  s   e  Z d    Z RS(   c         C  s   t  | | |  j |  j d d S(   NR.   i   (   R7   R;   R<   (   R=   R)   R*   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRO   Č   s    (   RK   RL   RO   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRQ   Ē   s   t
   LocatorDMSc           B  s   e  Z d    Z RS(   c         C  s   t  | | |  j |  j  S(   N(   R9   R;   R<   (   R=   R)   R*   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRO   Ī   s    (   RK   RL   RO   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRR   Ķ   s   t	   LocatorDMc           B  s   e  Z d    Z RS(   c         C  s   t  | | |  j |  j d d S(   NR.   i<   (   R9   R;   R<   (   R=   R)   R*   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRO   Ņ   s    (   RK   RL   RO   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRS   Ń   s   t   LocatorDc           B  s   e  Z d    Z RS(   c         C  s   t  | | |  j |  j d d S(   NR.   i   (   R9   R;   R<   (   R=   R)   R*   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRO   ×   s    (   RK   RL   RO   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRT   Ö   s   t   FormatterDMSc           B  s¦   e  Z d  Z d Z d Z d e d Z d e d Z d e d e d Z d e d	 e d Z d e d e d
 Z	 d e d Z
 d e d Z d   Z d   Z RS(   s   ^{\circ}s	   ^{\prime}s   ^{\prime\prime}s   $%dt   $s   $%d.\!\!s   %s$s   $%s%ds   \,%02ds   \,%02d.\mkern-4mus   \,s   %02ds	   %02d.\!\!c         C  s   d  } x d d d g D]u } | | k r, Pn  | | } t t t j |    } d | | k r | d k r | } | d | } | | f Sq W| | f S(   Ni   i<   i  i
   (   t   NoneR   R   R   R    (   R=   R   t   number_fractiont	   thresholdt   dt	   int_log_d(    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   _get_number_fractionš   s    
c         C  s  t  |  d k r g  St j |  } t j | d k d d  } i d d t f 6} g  t | |  D]* \ } } | j | | d k f d  ^ qc } |  j |  \ } }	 t j |  } |	 d  k	 rt
 | d |	  \ } }
 d |	 f } g  |
 D] } | | f ^ qš } n  | d k r¤|	 d  k r^g  t | |  D]& \ } } |  j | t |  f ^ q4Sg  t | | |  D], \ } } } |  j | t |  | f ^ qqSn]| d k rUt
 | d  \ } } |	 d  k rg  t | | |  D]% \ } } } |  j | | | f ^ qäSg  t | | | |  D]+ \ } } } } |  j | | | | f ^ q#Sn¬| d	 k rŁ| d d k r t } | d  d  d  } | d  d  d  } n t } d } g  } t
 | d	  \ } } t
 | d  \ } } |	 d  k rg  | D] } |  j | f ^ qļ} n5 g  t | |  D] \ } } |  j | | f ^ q} xu t | | | |  D]^ \ } } } } |  j | | | f } | | k r | } | | } n
 d
 | } | j |  qYW| rŅ| d  d  d  S| Sn( g  | | D] } d t |  f ^ qäSd  S(   Ni    i   i’’’’t   -t    i
   s   %%0%ddi<   i  RV   s   $%s^{\circ}$(   R   R   t   asarrayt   whereR6   t   zipt   getR\   t   absRW   t   divmodt   fmt_dR   t   fmt_dst   fmt_d_mt   fmt_d_msR8   t   fmt_s_partialt   fmt_ss_partialt   fmt_d_m_partialt   appendRG   (   R=   t	   directionR   t   valuest   sst   sign_mapt   sR@   t   signsRX   t	   frac_partt   frac_fmtR1   t   frac_strt   deg_partt   min_partt   s1t   d1t   m1t   inverse_ordert   singst   l_hm_oldt   rt	   min_part_t   sec_partt   sec_strt   l_hmt   l(    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRO     s`    @#:C9E&5(
(   RK   RL   t   deg_markt   min_markt   sec_markRe   Rf   Rg   Rh   Rk   Ri   Rj   R\   RO   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRU   Ż   s   	t   FormatterHMSc           B  s   e  Z d  Z d Z d Z d e d Z d e d Z d e d e d Z d e d	 e d Z d e d e d
 Z	 d e d Z
 d e d Z d   Z RS(   s   ^\mathrm{h}s   ^\mathrm{m}s   ^\mathrm{s}s   $%dRV   s   $%d.\!\!s   %s$s   $%s%ds   \,%02ds   \,%02d.\!\!s   \,s   %02ds	   %02d.\!\!c         C  s#   t  j |  | | t j |  d  S(   Ng      .@(   RU   RO   R   R_   (   R=   Rm   R   Rn   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRO   [  s    (   RK   RL   R   R   R   Re   Rf   Rg   Rh   Rk   Ri   Rj   RO   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyR   I  s   t   ExtremeFinderCyclec           B  s5   e  Z d  Z d d d d d  Z d   Z d   Z RS(	   sA   
    When there is a cycle, e.g., longitude goes from 0-360.
    g     v@i¦’’’iZ   c         C  s<   | | |  _  |  _ | | |  _ |  _ | |  _ | |  _ d  S(   N(   t   nxt   nyt	   lon_cyclet	   lat_cyclet
   lon_minmaxt
   lat_minmax(   R=   R   R   R   R   R   R   (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyR>   f  s    		c         C  sT  t  j | | |  j  t  j | | |  j  } } t  j | |  \ } }	 | t  j |  t  j |	   \ }
 } |  j d k	 r© t  j |
  } |
 d |
 | d k 8}
 n  |  j	 d k	 rā t  j |  } | d | | d k 8} n  t  j |
  t  j
 |
  } } t  j |  t  j
 |  } } |  j | | | |  \ } } } } | | | | f S(   s   
        get extreme values.

        x1, y1, x2, y2 in image coordinates (0-based)
        nx, ny : number of divisions in each axis
        g     v@g     f@N(   R   t   linspaceR   R   t   meshgridt   ravelR   RW   t   nanminR   t   nanmaxt   _adjust_extremes(   R=   t   transform_xyt   x1t   y1t   x2t   y2t   x_t   y_t   xt   yt   lont   latt   lon0t   lat0t   lon_mint   lon_maxt   lat_mint   lat_max(    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyRO   u  s    1'$c         C  s  |  j  | | | |  \ } } } } |  j rF t | | |  j  } n  |  j rh t | | |  j  } n  |  j d  k	 r² |  j d } t | |  } |  j d } t | |  } n  |  j d  k	 rü |  j d } t | |  } |  j d } t | |  } n  | | | | f S(   Ni    i   (   t   _add_padR   t   minR   R   RW   t   maxR   (   R=   R¢   R£   R¤   R„   t   min0t   max0(    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyR     s     $		N(   i¦’’’iZ   (   RK   RL   t   __doc__RW   R>   RO   R   (    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyR   b  s   
	t   __main__g     4@gffffff&@gfffff¦J@i   R.   i<   i   t   leftiX  i0  i0  i0  g3333335@gffffff5@i   i¢C i§C i¬C i@~ ih¤p im¤p ir¤p g      š?i-   i.   i/   g      $@iÄ  iÅ  iĘ  (    t
   __future__R    R   R   t   numpyR   R(   R   t#   mpl_toolkits.axisartist.grid_finderR   R   R   R"   R8   R6   R5   R7   R9   t   objectR:   RN   RP   RQ   RR   RS   RT   RU   R   R   RK   t   printt   fmt(    (    (    s^   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/angle_helper.pyt   <module>   sF   		#	"	4lM"
"
	&"