ó
±éRc           @  sx  d  d l  m Z d  d l Z d  d l Z d  d l j Z d  d l Z e j Z d  d l	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z d  d l j Z d  d l j Z d  d l m Z m Z m Z m Z m Z d  d l m Z m Z m Z m  Z  m! Z! m" Z" m# 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 S(   iÿÿÿÿ(   t   print_functionN(   t   Axes(   t   cbook(   t   Circle(   t   Path(   t	   Formattert   Locatort   NullLocatort   FixedLocatort   NullFormatter(   t   Affine2Dt   Affine2DBaset   Bboxt   BboxTransformTot   IdentityTransformt	   Transformt   TransformWrappert   GeoAxesc           B  s  e  Z d  Z d e f d „  ƒ  YZ d Z d „  Z d „  Z d „  Z d „  Z	 d d	 „ Z
 d
 „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z e Z d „  Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s;   
    An abstract base class for geographic projections
    t   ThetaFormatterc           B  s&   e  Z d  Z d d „ Z d d „ Z RS(   s‹   
        Used to format the theta tick labels.  Converts the native
        unit of radians into degrees and adds a degree symbol.
        g      ð?c         C  s   | |  _  d  S(   N(   t	   _round_to(   t   selft   round_to(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   __init__   s    c         C  sT   | t  j d } t | |  j ƒ |  j } t d rH t d rH d | Sd | Sd  S(   Ng     €f@s   text.usetexs   text.latex.unicodes   $%0.0f^\circ$u   %0.0fÂ°(   t   npt   pit   roundR   t   rcParams(   R   t   xt   post   degrees(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   __call__   s
    N(   t   __name__t
   __module__t   __doc__R   t   NoneR   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR      s   iK   c         C  s2   t  j |  ƒ |  _ t  j |  ƒ |  _ |  j ƒ  d  S(   N(   t   maxist   XAxist   xaxist   YAxist   yaxist   _update_transScale(   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt
   _init_axis)   s    c         C  sÞ   t  j |  ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j j t ƒ  ƒ |  j j t ƒ  ƒ |  j j	 d ƒ |  j j	 d ƒ |  j j
 d t ƒ |  j t d ƒ t  j |  t j t j ƒ t  j |  t j d t j d ƒ d  S(   Ni   i   iK   t   nonet   label1Ons	   axes.gridg       @(   R   t   clat   set_longitude_gridt   set_latitude_gridt   set_longitude_grid_endsR%   t   set_minor_locatorR   R'   t   set_ticks_positiont   set_tick_paramst   Truet   gridR   t   set_xlimR   R   t   set_ylim(   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR,   1   s    c         C  s¢  |  j  |  j ƒ |  _ |  j ƒ  |  _ t |  j ƒ |  _ |  j |  j |  j |  _ t	 ƒ  j
 d |  j d ƒ j d |  j ƒ |  _ |  j |  j |  _ t	 ƒ  j
 d d ƒ |  j t	 ƒ  j d d ƒ |  _ t	 ƒ  j
 d d ƒ |  j t	 ƒ  j d d ƒ |  _ t	 ƒ  j
 t j d d ƒ j t j d ƒ } t	 ƒ  j
 d d ƒ } | |  j |  _ | |  j | |  j |  j } | t	 ƒ  j d d ƒ |  _ | t	 ƒ  j d d ƒ |  _ d  S(	   Ng      ð?g       @g        g      @g      Àgš™™™™™ñ?g       Àg       @(   t   _get_core_transformt
   RESOLUTIONt   transProjectiont   _get_affine_transformt   transAffineR   t   bboxt	   transAxest	   transDataR
   t   scalet   _longitude_capt	   translatet   _xaxis_pretransformt   _xaxis_transformt   _xaxis_text1_transformt   _xaxis_text2_transformR   R   t   _yaxis_transformt   _yaxis_text1_transformt   _yaxis_text2_transform(   R   t   yaxis_stretcht   yaxis_spacet   yaxis_text_base(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   _set_lim_and_transformsD   s2    	,

c         C  sv   |  j  d ƒ } | j t j d f ƒ \ } } | j d t j d f ƒ \ } } t ƒ  j d | d | ƒ j d d ƒ S(   Ni   i    g       @g      à?(   R7   t   transform_pointR   R   R
   R?   RA   (   R   t	   transformt   xscalet   _t   yscale(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR:   w   s    "	R4   c         C  s   | d k s t  ‚ |  j S(   Nt   tick1t   tick2R4   (   RR   RS   s   grid(   t   AssertionErrorRC   (   R   t   which(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   get_xaxis_transform   s    c         C  s   |  j  d d f S(   Nt   bottomt   center(   RD   (   R   t   pad(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   get_xaxis_text1_transformƒ   s    c         C  s   |  j  d d f S(   Nt   topRX   (   RE   (   R   RY   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   get_xaxis_text2_transform†   s    c         C  s   | d k s t  ‚ |  j S(   NRR   RS   R4   (   s   tick1s   tick2s   grid(   RT   RF   (   R   RU   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   get_yaxis_transform‰   s    c         C  s   |  j  d d f S(   NRX   t   right(   RG   (   R   RY   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   get_yaxis_text1_transform�   s    c         C  s   |  j  d d f S(   NRX   t   left(   RH   (   R   RY   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   get_yaxis_text2_transform�   s    c         C  s   t  d d ƒ S(   Ng      à?(   g      à?g      à?(   R   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   _gen_axes_patch“   s    c         C  s   i t  j j |  d d ƒ d 6S(   Ng      à?t   geo(   g      à?g      à?(   t   mspinest   Spinet   circular_spine(   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   _gen_axes_spines–   s    c         O  s   | d d k r t  ‚ n  d  S(   Ni    t   linear(   t   NotImplementedError(   R   t   argst   kwargs(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt
   set_yscaleš   s    c         O  s   t  d ƒ ‚ d  S(   Nsn   It is not possible to change axes limits for geographic projections. Please consider using Basemap or Cartopy.(   t	   TypeError(   R   Rj   Rk   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR5       s    c         C  sx   | d t  j } | d t  j } | d k r7 d } n d } | d k rR d } n d } d t | ƒ | t | ƒ | f S(   s0   return a format string formatting the coordinateg     €f@g        t   Nt   St   Et   Wu   %fÂ°%s, %fÂ°%s(   R   R   t   abs(   R   t   lont   latt   nst   ew(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   format_coord§   s    		c         C  sj   d | d } |  j  j t t j t j t j | t ƒ d d !ƒ ƒ | |  _ |  j  j |  j	 | ƒ ƒ d S(   sH   
        Set the number of degrees between each longitude grid.
        g     €v@i   iÿÿÿÿN(
   R%   t   set_major_locatorR   R   t   linspaceR   R3   t   _logitude_degreest   set_major_formatterR   (   R   R   t   number(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR-   µ   s    	*	c         C  sr   d | d } |  j  j t t j t j d t j d | t ƒ d d !ƒ ƒ | |  _ |  j  j |  j	 | ƒ ƒ d S(   sH   
        Set the number of degrees between each longitude grid.
        g     €f@i   g       @iÿÿÿÿN(
   R'   Rx   R   R   Ry   R   R3   t   _latitude_degreesR{   R   (   R   R   R|   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR.   À   s    	2	c         C  sH   | t  j d |  _ |  j j ƒ  j d |  j d ƒ j d |  j ƒ d S(   sS   
        Set the latitude(s) at which to stop drawing the longitude grids.
        g     €f@g      ð?g       @g        N(   R   R   R@   RB   t   clearR?   RA   (   R   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR/   Ë   s    c         C  s   d S(   s=   
        Return the aspect ratio of the data itself.
        g      ð?(    (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   get_data_ratioÕ   s    c         C  s   t  S(   s™   
        Return *True* if this axes supports the zoom box button functionality.

        This axes object does not support interactive zoom box.
        (   t   False(   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   can_zoomÝ   s    c         C  s   t  S(   s™   
        Return *True* if this axes supports the pan/zoom button functionality.

        This axes object does not support interactive pan/zoom.
        (   R€   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   can_panå   s    c         C  s   d  S(   N(    (   R   R   t   yt   button(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt	   start_paní   s    c         C  s   d  S(   N(    (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   end_panð   s    c         C  s   d  S(   N(    (   R   R„   t   keyR   Rƒ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   drag_panó   s    (    R   R    R!   R   R   R8   R)   R,   RL   R:   RV   RZ   R\   R]   R_   Ra   Rb   Rg   Rl   t
   set_xscaleR5   R6   Rw   R-   R.   R/   R   R�   R‚   R…   R†   Rˆ   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR      s:   			3													
					t
   AitoffAxesc           B  sL   e  Z d  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z RS(   t   aitofft   AitoffTransformc           B  sq   e  Z d  Z d Z d Z e Z d „  Z d „  Z e	 j j e _ d „  Z
 e	 j
 j e
 _ d „  Z e	 j j e _ RS(   s,   
        The base Aitoff transform.
        i   c         C  s   t  j |  ƒ | |  _ d S(   sÒ   
            Create a new Aitoff transform.  Resolution is the number of steps
            to interpolate between each input line segment to approximate its
            path in curved Aitoff space.
            N(   R   R   t   _resolution(   R   t
   resolution(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR     s    c   
      C  sê   | d  d  … d d … f } | d  d  … d d … f } | d } t  j | ƒ } t  j | t  j | ƒ ƒ } t j | d k | ƒ } t j | ƒ | } | t j | ƒ | } t j | ƒ | }	 t  j | j d ƒ |	 j d ƒ f d ƒ S(   Ni    i   i   g       @g        (   R   t   cost   arccost   mat   masked_wheret   sint   concatenatet   filled(
   R   t   llt	   longitudet   latitudet	   half_longt   cos_latitudet   alphat
   sinc_alphaR   Rƒ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   transform_non_affine  s    
c         C  s7   | j  } | j |  j ƒ } t |  j | j  ƒ | j ƒ S(   N(   t   verticest   interpolatedR�   R   RN   t   codes(   R   t   pathRž   t   ipath(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   transform_path_non_affine   s    	c         C  s   t  j |  j ƒ S(   N(   RŠ   t   InvertedAitoffTransformR�   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   inverted&  s    (   R   R    R!   t
   input_dimst   output_dimsR€   t   is_separableR   R�   R   R£   R¥   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyRŒ   ú   s   					R¤   c           B  sS   e  Z d  Z d  Z e Z d „  Z d „  Z e j j	 e _	 d „  Z
 e j
 j	 e
 _	 RS(   i   c         C  s   t  j |  ƒ | |  _ d  S(   N(   R   R   R�   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   /  s    c         C  s   | S(   N(    (   R   t   xy(    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR�   3  s    c         C  s   t  j |  j ƒ S(   N(   RŠ   RŒ   R�   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR¥   8  s    (   R   R    R¦   R§   R€   R¨   R   R�   R   R!   R¥   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR¤   *  s   			c         O  sJ   t  j d |  _ t j |  | | Ž |  j d d d d d ƒ|  j ƒ  d  S(   Ng       @g      à?t
   adjustablet   boxt   anchort   C(   R   R   R@   R   R   t
   set_aspectR,   (   R   Rj   Rk   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   <  s    c         C  s   |  j  | ƒ S(   N(   RŒ   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR7   B  s    (   R   R    t   nameR   RŒ   R¤   R   R7   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyRŠ   ÷   s
   0	t
   HammerAxesc           B  sL   e  Z d  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z RS(   t   hammert   HammerTransformc           B  sq   e  Z d  Z d Z d Z e Z d „  Z d „  Z e	 j j e _ d „  Z
 e	 j
 j e
 _ d „  Z e	 j j e _ RS(   s,   
        The base Hammer transform.
        i   c         C  s   t  j |  ƒ | |  _ d S(   sÒ   
            Create a new Hammer transform.  Resolution is the number of steps
            to interpolate between each input line segment to approximate its
            path in curved Hammer space.
            N(   R   R   R�   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   Q  s    c   
      C  sÌ   | d  d  … d d … f } | d  d  … d d … f } | d } t  j | ƒ } t  j d ƒ } t  j d | t  j | ƒ ƒ } d | | t  j | ƒ | } | t  j | ƒ | }	 t  j | |	 f d ƒ S(   Ni    i   i   g       @g      ð?(   R   R�   t   sqrtR“   R”   (
   R   R–   R—   R˜   R™   Rš   t   sqrt2R›   R   Rƒ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR�   Z  s    
 c         C  s7   | j  } | j |  j ƒ } t |  j | j  ƒ | j ƒ S(   N(   Rž   RŸ   R�   R   RN   R    (   R   R¡   Rž   R¢   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR£   i  s    	c         C  s   t  j |  j ƒ S(   N(   R°   t   InvertedHammerTransformR�   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR¥   o  s    (   R   R    R!   R¦   R§   R€   R¨   R   R�   R   R£   R¥   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR²   I  s   					Rµ   c           B  sS   e  Z d  Z d  Z e Z d „  Z d „  Z e j j	 e _	 d „  Z
 e j
 j	 e
 _	 RS(   i   c         C  s   t  j |  ƒ | |  _ d  S(   N(   R   R   R�   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   x  s    c   	      C  s¿   | d  d  … d d … f } | d  d  … d d … f } d | } d | } t  j d | | | | ƒ } d t  j | | d d | | d ƒ } t  j | | ƒ } t  j | | f d ƒ S(   Ni    i   i   g      Ð?g      à?g      ð?g       @(   R   R³   t   arctant   arcsinR”   (	   R   R©   R   Rƒ   t	   quarter_xt   half_yt   zR—   R˜   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR�   |  s    

+c         C  s   t  j |  j ƒ S(   N(   R°   R²   R�   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR¥   ˆ  s    (   R   R    R¦   R§   R€   R¨   R   R�   R   R!   R¥   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyRµ   s  s   		
	c         O  sJ   t  j d |  _ t j |  | | Ž |  j d d d d d ƒ|  j ƒ  d  S(   Ng       @g      à?Rª   R«   R¬   R­   (   R   R   R@   R   R   R®   R,   (   R   Rj   Rk   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   Œ  s    c         C  s   |  j  | ƒ S(   N(   R²   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR7   ’  s    (   R   R    R¯   R   R²   Rµ   R   R7   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR°   F  s
   *	t   MollweideAxesc           B  sL   e  Z d  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z RS(   t	   mollweidet   MollweideTransformc           B  sq   e  Z d  Z d Z d Z e Z d „  Z d „  Z e	 j j e _ d „  Z
 e	 j
 j e
 _ d „  Z e	 j j e _ RS(   s/   
        The base Mollweide transform.
        i   c         C  s   t  j |  ƒ | |  _ d S(   sØ   
            Create a new Mollweide transform.  Resolution is the number of steps
            to interpolate between each input line segment to approximate its
            path in curved Mollweide space.
            N(   R   R   R�   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   ¡  s    c           sü  ‡  f d †  } | d  d  … d f } | d  d  … d f } t  j d t  j | ƒ } | d k  } | } t  j | j d t  j ƒ} | j ƒ  rt  j t  j | | ƒ ‰  d | | }	 | |	 ƒ \ }
 } x9 t  j | ƒ r|	 | c |
 | 7<| |	 ƒ \ }
 } qÌ W|	 d | | <n  | j ƒ  rv| | } d d	 t  j | d d
 d	 } t  j d | t  j | | ƒ | | <n  t  j | j d t  j ƒ} d t  j	 d ƒ t  j | t  j
 | ƒ | d  d  … d f <t  j	 d ƒ t  j | ƒ | d  d  … d f <| S(   Nc           sB   |  t  j |  ƒ ˆ  d t  j |  ƒ } | t  j | ƒ d k f S(   Ni   gü©ñÒMbP?(   R   R“   R�   Rr   (   t   thetat   delta(   t   pi_sin_l(    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   d«  s    )i    i   i   gƒÀÊ¡E¶?t   dtypeg       @g      à?i   g      ð?(   R   R   Rr   t   emptyt   shapet   floatt   anyR“   t   signR³   R�   (   R   R–   RÁ   R—   R˜   t   clatt   ihight   ilowt   auxR¾   R¿   t   large_deltat   eR©   (    (   RÀ   sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR�   ª  s.    
!);,c         C  s7   | j  } | j |  j ƒ } t |  j | j  ƒ | j ƒ S(   N(   Rž   RŸ   R�   R   RN   R    (   R   R¡   Rž   R¢   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR£   Ì  s    	c         C  s   t  j |  j ƒ S(   N(   R»   t   InvertedMollweideTransformR�   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR¥   Ò  s    (   R   R    R!   R¦   R§   R€   R¨   R   R�   R   R£   R¥   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR½   ™  s   			 		RÎ   c           B  sS   e  Z d  Z d  Z e Z d „  Z d „  Z e j j	 e _	 d „  Z
 e j
 j	 e
 _	 RS(   i   c         C  s   t  j |  ƒ | |  _ d  S(   N(   R   R   R�   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   Û  s    c         C  sÀ   | d  d  … d d … f } | d  d  … d d … f } t  j | t  j d ƒ ƒ } t  j d t  j d ƒ | t  j | ƒ } t  j d | t  j d | ƒ t  j ƒ } t  j | | f d ƒ S(   Ni    i   i   (   R   R·   R³   R   R�   R“   R”   (   R   R©   R   Rƒ   R¾   Rs   Rt   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR�   ß  s    ++c         C  s   t  j |  j ƒ S(   N(   R»   R½   R�   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR¥   ì  s    (   R   R    R¦   R§   R€   R¨   R   R�   R   R!   R¥   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyRÎ   Ö  s   			c         O  sJ   t  j d |  _ t j |  | | Ž |  j d d d d d ƒ|  j ƒ  d  S(   Ng       @g      à?Rª   R«   R¬   R­   (   R   R   R@   R   R   R®   R,   (   R   Rj   Rk   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   ð  s    c         C  s   |  j  | ƒ S(   N(   R½   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR7   ö  s    (   R   R    R¯   R   R½   RÎ   R   R7   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR»   –  s
   =	t   LambertAxesc           B  s^   e  Z d  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z	 RS(	   t   lambertt   LambertTransformc           B  sq   e  Z d  Z d Z d Z e Z d „  Z d „  Z e	 j j e _ d „  Z
 e	 j
 j e
 _ d „  Z e	 j j e _ RS(   s-   
        The base Lambert transform.
        i   c         C  s,   t  j |  ƒ | |  _ | |  _ | |  _ d S(   sÔ   
            Create a new Lambert transform.  Resolution is the number of steps
            to interpolate between each input line segment to approximate its
            path in curved Lambert space.
            N(   R   R   R�   t   _center_longitudet   _center_latitude(   R   t   center_longitudet   center_latitudeRŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR     s    		c         C  s4  | d  d  … d d … f } | d  d  … d d … f } |  j  } |  j } t j | ƒ } t j | ƒ } | | } t j | ƒ }	 d t j | ƒ | t j | ƒ | |	 }
 t j |
 d k d |
 ƒ }
 t j d |
 ƒ } | | t j | ƒ } | t j | ƒ | t j | ƒ | |	 } t j | | f d ƒ S(   Ni    i   i   g      ð?g        gVçž¯Ò<g       @(   RÒ   RÓ   R   R�   R“   t   whereR³   R”   (   R   R–   R—   R˜   t   clongRÈ   t   cos_latt   sin_latt	   diff_longt   cos_diff_longt   inner_kt   kR   Rƒ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR�     s     		
c         C  s7   | j  } | j |  j ƒ } t |  j | j  ƒ | j ƒ S(   N(   Rž   RŸ   R�   R   RN   R    (   R   R¡   Rž   R¢   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR£   '  s    	c         C  s   t  j |  j |  j |  j ƒ S(   N(   RÏ   t   InvertedLambertTransformRÒ   RÓ   R�   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR¥   -  s    (   R   R    R!   R¦   R§   R€   R¨   R   R�   R   R£   R¥   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyRÑ   ý  s   				RÞ   c           B  sS   e  Z d  Z d  Z e Z d „  Z d „  Z e j j	 e _	 d „  Z
 e j
 j	 e
 _	 RS(   i   c         C  s,   t  j |  ƒ | |  _ | |  _ | |  _ d  S(   N(   R   R   R�   RÒ   RÓ   (   R   RÔ   RÕ   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   9  s    		c         C  sA  | d  d  … d d … f } | d  d  … d d … f } |  j  } |  j } t j | | | | ƒ } t j | d k d | ƒ } d t j d | ƒ } t j | ƒ } t j | ƒ }	 t j |	 t j | ƒ | | t j | ƒ | ƒ }
 | t j | | | t j | ƒ |	 | t j | ƒ | ƒ } t j	 | |
 f d ƒ S(   Ni    i   i   g        g•Ö&è.>g       @g      à?(
   RÒ   RÓ   R   R³   RÖ   R·   R“   R�   R¶   R”   (   R   R©   R   Rƒ   R×   RÈ   t   pt   ct   sin_ct   cos_cRt   Rs   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR�   ?  s    			8c         C  s   t  j |  j |  j |  j ƒ S(   N(   RÏ   RÑ   RÒ   RÓ   R�   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR¥   R  s    (   R   R    R¦   R§   R€   R¨   R   R�   R   R!   R¥   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyRÞ   4  s   			c         O  st   t  j d |  _ | j d d ƒ |  _ | j d d ƒ |  _ t j |  | | Ž |  j d d d d d	 ƒ|  j	 ƒ  d  S(
   Ng       @RÔ   g        RÕ   t   equalRª   R«   R¬   R­   (
   R   R   R@   t   popRÒ   RÓ   R   R   R®   R,   (   R   Rj   Rk   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR   Y  s    c         C  s$   t  j |  ƒ |  j j t ƒ  ƒ d  S(   N(   R   R,   R'   R{   R	   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR,   a  s    c         C  s   |  j  |  j |  j | ƒ S(   N(   RÑ   RÒ   RÓ   (   R   RŽ   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR7   e  s    c         C  s   t  ƒ  j d ƒ j d d ƒ S(   Ng      Ð?g      à?(   R
   R?   RA   (   R   (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyR:   k  s    		(
   R   R    R¯   R   RÑ   RÞ   R   R,   R7   R:   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyRÏ   ú  s   7%			()   t
   __future__R    t   matht   numpyR   t   numpy.maR‘   t
   matplotlibR   t   matplotlib.axesR   R   t   matplotlib.patchesR   t   matplotlib.pathR   t   matplotlib.spinest   spinesRd   t   matplotlib.axist   axisR#   t   matplotlib.tickerR   R   R   R   R	   t   matplotlib.transformsR
   R   R   R   R   R   R   R   RŠ   R°   R»   RÏ   (    (    (    sT   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/matplotlib/projections/geo.pyt   <module>   s$   	(4äOPd