ó
AÓWc           @   så   d  d l  Z e j d ƒ d  d l j Z d  d l j Z d  d l m	 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 d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d S(   iÿÿÿÿNt   Agg(   t   Basemap(   t   pdistt
   squareformc         C   s   t  j |  ƒ d „  f S(   Nc         S   s   |  j  ƒ  d S(   Ni    (   t   nonzero(   t   z(    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt   <lambda>   s    (   t   npt   isnan(   t   y(    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt
   nan_helper   s    c         C   s   t  j |  | ƒ j ƒ  } | S(   N(   R   t   abst   argmin(   t   arrayt   valuet   idx(    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt   find_index_nearest   s    c         C   sd   d d d g } d d d g } d d d	 g } d
 d d g } | | | | g } d d t  ƒ  g } d  S(   Ni   i   i   i   i   i   i   i   i   i	   i
   i   (   t   len(   R   t   wintert   springt   summert   autumnt   seasonst   idxoff(    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt   months_to_seasons   s    c	      
   C   sÄ  t  j d d d d ƒ\ }	 }
 |	 j | d | d d ƒxMt |
 j d	 d
 ƒD]6\ } }
 | d
 } t j | ƒ } | j d | | d  d  … d  d  … f } | j ƒ  | | GH|  | } t	 j
 | | d k <| | | } |
 j | j ƒ  | d d d d d d ƒ\ } } } |
 j | j ƒ  | d d d d d d ƒ\ } } } |
 j | | d d ƒ| d
 k rO |
 j d d d i d d 6ƒ qO qO Wt  j d d ƒ t  j d | d | d ƒ t  j ƒ  d  S(   Ni   i   t   figsizei   i   s:    Seasonal variations in gross primary production [PgC/mth]t   fontsizei   t   starti   t   mask_regioni    t	   facecolort   Maroont   alphag      à?t   labels   ESA-CCIt	   DarkGreent   ORCHIDEEt   locs   upper rightt   propt   sizet   leftg333333Ã?sW   /data/cpipsl/CMIP6/ANALYSIS/cyclesaisonnier_climato/multiplier1e15/output/hist_regions_t   _s   _winter.png(   i   i   (   t   pltt   subplotst   suptitlet	   enumeratet   flatt   netCDF4t   Datasett	   variablest   closeR   t   nant   histt   flattent	   set_titlet   legendt   subplots_adjustt   savefig(   t   map_obst   map_modt   mask_05t   nb_zonest   zonest	   ind_zonest   binst   nount   yvect   figt   axt   it   zot   nct   reg_mask_05t   aux_obst   aux_modt   n_obst   bins_obst   patches_obst   n_modt   bins_modt   patches_mod(    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt   histo   s&    "
*
	
33$c	         C   sÀ  t  j d d d d ƒ\ }	 }
 |	 j | d | d d ƒt j d	 | f ƒ } xkt |
 j d
 d ƒD]T\ } }
 | d } t j | ƒ } | j	 d | | d  d  … d  d  … f } | j
 ƒ  t j | ƒ } t j | | d k <| | } |  | } t j d	 | j d | j d f ƒ } xg t d	 ƒ D]Y } t j | t | | d	 ƒ d  d  … d  d  … f d d ƒ| | d  d  … d  d  … f <q&W| | } t j | d d ƒ} | | d  d  … | f <qd W| S(   Ni   i   R   i   i   s    seasonal_cycle R   i   i   R   i   R   i    t   axis(   i   i   (   i   i   (   R(   R)   R*   R   t   zerosR+   R,   R-   R.   R/   R0   t   float_R1   t   shapet   ranget   nanmeant   nansum(   R9   t   areacellR:   R;   R<   R=   R?   t   ntimet   isimuRA   RB   t   tabRC   RD   RE   RF   t   areacellregRH   t
   mod_seasont   tt   modtmpt   mod(    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt   seasonal_cycle9   s&    "
*


&W
c
         C   s9  t  j j |  d t  j |  ƒ ƒ}
 t j ƒ  } t d d d d ƒ } | j t  j d d d ƒ ƒ | j	 t  j d	 d
 d ƒ ƒ | j
 d d ƒ | j | | |
 d d d | d t d | d | ƒ} | j | d d ƒ} t j | d t  j |
 | ƒ | j ƒ  |	 d d d d ƒt j d | d | d ƒ t j ƒ  d  S(   Nt   maskt
   projectiont   robint   lon_0i    g     €VÀg     €V@g      >@g     €fÀg     €f@g      N@t	   linewidthg      à?t   shadingR,   t   cmapt   latlont   vmint   vmaxt   padg{®Gáz´?s    Mean = %.3eR   i   t   positiongš™™™™™ñ?s?   /data/sli/PC/seasonalcycle_PC/multiplier1e15/output/Map_meanSM_R'   s   .png(   g      à?gš™™™™™ñ?(   R   t   maR   R   R(   t   figureR   t   drawparallelst   aranget   drawmeridianst   drawcoastlinest
   pcolormesht   Truet   colorbart   titleRV   t   sumR7   R0   (   R9   t   latt   lonR?   RY   RW   t   ymint   ymaxRg   t	   units_labRH   RA   t   mt   cmesht   cbar(    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt   mean_mapW   s    !3<c
         C   s3  t  j j |  d t  j |  ƒ ƒ}
 t j ƒ  } t d d d d ƒ } | j t  j d d d ƒ ƒ | j	 t  j d	 d
 d ƒ ƒ | j
 d d ƒ | j | | |
 d d d | d t d | d | ƒ} | j | d d ƒ} t j | d t  j |
 | ƒ | j ƒ  |	 d d ƒt j d | d | d ƒ t j ƒ  d  S(   NRa   Rb   Rc   Rd   i    g     €VÀg     €V@g      >@g     €fÀg     €f@g      N@Re   g      à?Rf   R,   Rg   Rh   Ri   Rj   Rk   g{®Gáz´?s   Mean = %.3fR   i   s?   /data/sli/PC/seasonalcycle_PC/multiplier1e15/output/Map_meanSM_R'   s   .png(   R   Rm   R   R   R(   Rn   R   Ro   Rp   Rq   Rr   Rs   Rt   Ru   Rv   RV   Rw   R7   R0   (   R9   Rx   Ry   R?   RY   RW   Rz   R{   Rg   R|   RH   RA   R}   R~   R   (    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt
   season_mapg   s    !36c         C   sŠ  t  j d d d d ƒ\ } }	 | j | d | d d ƒxt |	 j d	 d
 ƒD]ü \ }
 }	 |
 d
 } t j | ƒ } | j d | | d  d  … d  d  … f } | j ƒ  | | GH|  | } t	 j
 | d d ƒ} |	 j | t d d d d ƒ|	 j | | d d d d ƒ|	 j | | d d ƒ|
 d
 k rO |	 j d d d i d d 6ƒ qO qO Wt  j d d ƒ t  j d | d t d ƒ t  j ƒ  d  S(   Ni   i   R   i   i   s    Timeserie R   i   R   i   R   RP   t   colort   blackR    s   ESA-CCIt
   dodgerblueR"   R#   s   upper rightR$   R%   R&   g333333Ã?s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/output/timeserie_R'   s	   _test.png(   i   i   (   i   i   (   R(   R)   R*   R+   R,   R-   R.   R/   R0   R   RU   t   plott   obsR4   R5   R6   R7   R@   (   R9   R:   R;   R<   R=   R?   t   nmonthsRY   RA   RB   RC   RD   RE   RF   RH   R_   (    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt	   timeseriev   s$    "
*
	
$(   t
   matplotlibt   mplt   uset   matplotlib.pyplott   pyplotR(   t   matplotlib.cmt   cmt   mpl_toolkits.basemapR   R-   t   numpyR   t   pandast   pdt   mathRm   t   calendart   cdt   scipy.spatial.distanceR   R   R
   R   R   RO   R`   R€   R   Rˆ   (    (    (    s>   /data/sli/PC/seasonalcycle_PC/multiplier1e15/pratic_climato.pyt   <module>   s$   								