ó
ÚÔ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 „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  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/autocorr/pratic.pyt   <lambda>   s    (   t   npt   isnan(   t   y(    (    s   /data/sli/PC/autocorr/pratic.pyt
   nan_helper   s    c         C   s   t  j |  | ƒ j ƒ  } | S(   N(   R   t   abst   argmin(   t   arrayt   valuet   idx(    (    s   /data/sli/PC/autocorr/pratic.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/autocorr/pratic.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   s1    Distribution Comparison of Soil Moisture [m3/m3]t   fontsizei   t   starti   t   mask_regioni    t	   facecolort   Maroont   alphag      à?t   labels   ESA-CCIt	   DarkGreent   ORCHIDEEt   locs   upper rightt   propt   sizet   leftg333333Ã?s6   /Users/cmagand/pro/CMIP6/GRAPHS/temporal/hist_regions_t   _s   _summer.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/autocorr/pratic.pyt   histo   s&    "
*
	
33$c
         C   sI  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 ƒ  | | GHt	 j
 | ƒ } t	 j | | d k <| | } |  | } | | | } t	 j d | j d
 | j d f ƒ } t	 j d | j d
 | j d f ƒ } xº t d ƒ D]¬ } t	 j | t | |	 d ƒ d  d  … d  d  … f d d ƒ| | d  d  … d  d  … f <t	 j | t | |	 d ƒ d  d  … d  d  … f d d ƒ| | d  d  … d  d  … f <qNW| | } | | } t	 j | d d! ƒt	 j | ƒ } t	 j | d d" ƒt	 j | ƒ } t	 j d ƒ } t j d
 d !} | j | | d d d d ƒ| j | | d d d d ƒ| j | ƒ | j | ƒ | 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   R   i   i   s    seasonal_cycle R   i   R   i   R   i    i   i   t   axisi   t   colort   blackR    s   ESA-CCIt
   dodgerblueR"   R#   s   upper rightR$   R%   R&   g333333Ã?s8   /Users/cmagand/pro/CMIP6/GRAPHS/temporal/seasonal_cycle_R'   s   .png(   i   i   (   i   i   (   i   i   (   R(   R)   R*   R+   R,   R-   R.   R/   R0   R   t   float_R1   t   zerost   shapet   ranget   nanmeant   nansumt   aranget   cdt
   month_abbrt   plott
   set_xtickst   set_xticklabelsR4   R5   R6   R7   (   R8   R9   t   areacellR:   R;   R<   R=   R?   R@   t   ntimeRA   RB   RC   RD   RE   RF   t   areacellregRG   RH   t
   obs_seasont
   mod_seasont   tt   obstmpt   modtmpt   obst   modt   xt   mons(    (    s   /data/sli/PC/autocorr/pratic.pyt   seasonal_cycle7   sD    "
*
	

&&SW

""$c	         C   sÀ  t  j d d d d ƒ\ }	 }
 |	 j | d | d d ƒxIt |
 j d	 d
 ƒD]2\ } }
 | d
 } t j | ƒ } | j d | | d  d  … d  d  … f } | j ƒ  | | GH|  | } t	 j
 | | d k <| | | } t	 j | d d ƒ} t	 j | d d  ƒ} |
 j | | 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 | d ƒ t  j ƒ  d  S(!   Ni   i   R   i   i   s    Timeserie R   i   R   i   R   i    RP   i   RQ   RR   R    s   ESA-CCIRS   R"   R#   s   upper rightR$   R%   R&   g333333Ã?s3   /Users/cmagand/pro/CMIP6/GRAPHS/temporal/timeserie_R'   s	   _test.png(   i   i   (   i   i   (   i   i   (   R(   R)   R*   R+   R,   R-   R.   R/   R0   R   R1   RX   R]   R4   R5   R6   R7   (   R8   R9   R:   R;   R<   R=   R?   R@   t   datesRA   RB   RC   RD   RE   RF   RG   RH   Rh   Ri   (    (    s   /data/sli/PC/autocorr/pratic.pyt	   timeserie]   s*    "
*
	
$c
         C   s#  xt  | ƒ D]}
 t j | ƒ } | j d | |
 d  d  … d  d  … f } | j ƒ  t j | ƒ } |  | } t j | | d k <| | | } xe t  | ƒ D]W } t | | d  d  … d  d  … f j	 ƒ  | | d  d  … d  d  … f j	 ƒ  ƒ | | <q Wt
 j | ƒ } t
 j | d d d ƒ} t j ƒ  \ } } | j |	 | d d d d	 t j t j | ƒ ƒ ƒ| j | d
 ƒ | j d d g ƒ t j d d ƒ t j d ƒ t j d d ƒ t j | d | |
 d | ƒ t j ƒ  t j d | d | |
 d | d ƒ | |
 GHt j ƒ  q Wd  S(   NR   i    i   t   min_periodsi   RQ   t   goldR    s   monthly, ave=%.2fs    Correlation coefficientg        g      ð?R#   s   lower rightt   Timet   rotationiF   t    s0   /Users/cmagand/pro/CMIP6/GRAPHS/temporal/spacor_R'   s	   _test.png(   RW   R-   R.   R/   R0   R   RU   R1   t	   cor_serieR3   t   pdt   Seriest   rolling_meanR(   R)   R]   RX   R   t
   set_ylabelt   set_ylimR5   t   xlabelt   xtickst   titlet   tight_layoutR7   (   R8   R9   R:   t   nmonthsR;   R<   R@   R?   R=   Rm   RD   RE   RF   t   obs_modRG   RH   RC   RA   RB   (    (    s   /data/sli/PC/autocorr/pratic.pyt   spacort   s0    *

U2!
)	c         C   s  t  | |  ƒ } t j j | ƒ } t j ƒ  } t d d d d d d d d d	 d
 d d ƒ } | j d d ƒ t j	 d ƒ }	 | j
 | | | d d d |	 d t d d d d ƒ}
 | j |
 d d ƒ} | j d ƒ t j | d t j | ƒ ƒ t j d | d | d ƒ t j ƒ  d  S(   Nt
   projectiont   millt	   llcrnrlati¦ÿÿÿt	   urcrnrlatiZ   t	   llcrnrloniLÿÿÿt	   urcrnrloni´   t
   resolutiont   ct	   linewidthg      à?t   RdBut   shadingR,   t   cmapt   latlont   vmingš™™™™™¹¿t   vmaxgš™™™™™¹?t   padg{®Gáz´?s   Bias Error (m3/m3)s   , Mean = %.3fs.   /Users/cmagand/pro/CMIP6/GRAPHS/temporal/bias_R'   s	   _test.png(   t   mbe_alldataR   t   mat   masked_invalidR(   t   figureR   t   drawcoastlinest   cmt   get_cmapt
   pcolormesht   Truet   colorbart	   set_labelR|   RX   R7   R0   (   t   data_modt   data_obst   latt   lonR@   R?   t   diffRA   t   mRŒ   t   cmesht   cbar(    (    s   /data/sli/PC/autocorr/pratic.pyt   bias_map   s    -3c         C   s  t  | |  ƒ } t j j | ƒ } t j ƒ  } t d d d d d d d d d	 d
 d d ƒ } | j d d ƒ t j	 d ƒ }	 | j
 | | | d d d |	 d t d d d d ƒ}
 | j |
 d d ƒ} | j d ƒ t j | d t j | ƒ ƒ t j d | d | d ƒ t j ƒ  d  S(   NR   R‚   Rƒ   i¦ÿÿÿR„   iZ   R…   iLÿÿÿR†   i´   R‡   Rˆ   R‰   g      à?t   jetR‹   R,   RŒ   R   RŽ   g      ð¿R   g      ð?R   g{®Gáz´?s   Correlation Coefficients   , Mean = %.3fs-   /Users/cmagand/pro/CMIP6/GRAPHS/temporal/cor_R'   s	   _test.png(   t   cor_alldataR   R’   R“   R(   R”   R   R•   R–   R—   R˜   R™   Rš   R›   R|   RX   R7   R0   (   t   sm_modt   sm_obsRž   RŸ   R@   R?   R    RA   R¡   RŒ   R¢   R£   (    (    s   /data/sli/PC/autocorr/pratic.pyt   cor_mapž   s    -3c         C   s  t  | |  ƒ } t j j | ƒ } t j ƒ  } t d d d d d d d d d	 d
 d d ƒ } | j d d ƒ t j j	 d ƒ }	 | j
 | | | d d d |	 d t d d d d ƒ}
 | j |
 d d ƒ} | j d ƒ t j | d t j | ƒ ƒ t j d | d | d ƒ t j ƒ  d  S(   NR   R‚   Rƒ   i¦ÿÿÿR„   iZ   R…   iLÿÿÿR†   i´   R‡   Rˆ   R‰   g      à?t   YlOrRdR‹   R,   RŒ   R   RŽ   i    R   i   R   g{®Gáz´?s   normalised RMSDs   , Mean = %.3fs.   /Users/cmagand/pro/CMIP6/GRAPHS/temporal/rmsd_R'   s	   _test.png(   t   rmsd_alldataR   R’   R“   R(   R”   R   R•   R–   R—   R˜   R™   Rš   R›   R|   RX   R7   R0   (   Rœ   R   Rž   RŸ   R@   R?   R    RA   R¡   RŒ   R¢   R£   (    (    s   /data/sli/PC/autocorr/pratic.pyt   rmsd_map­   s    -3c         C   s   t  j | |  d d ƒS(   NRP   i    (   R   RX   (   R¨   R§   (    (    s   /data/sli/PC/autocorr/pratic.pyR‘   ¼   s    c         C   s¨   |  t  j |  d d ƒt  j | d d ƒt  j |  d d ƒt  j | d d ƒ} t  j |  d d d ƒt  j |  d d d ƒ} t  j t  j | | d d d ƒƒ | S(   NRP   i    iZ   i
   i   (   R   RX   t   nanstdt   nanpercentilet   sqrt(   R¨   R§   RG   t	   obs_range(    (    s   /data/sli/PC/autocorr/pratic.pyR«   À   s    R.c         C   s8   t  |  ƒ } t |  d | | !|  | | !ƒ t j |  ƒ S(   Ni    (   R   t	   cov_serieR   t   nanvar(   t   datat   kt   N(    (    s   /data/sli/PC/autocorr/pratic.pyt   lagk_autocorÆ   s    c         C   s  t  j | j ƒ } t  j |  j ƒ } t  j |  d d ƒ} t  j | d d ƒ} |  j d } xŒ t | ƒ D]~ } | | d  d  … d  d  … f | | | d  d  … d  d  … f <|  | d  d  … d  d  … f | | | d  d  … d  d  … f <qh Wt  j | | d d ƒS(   NRP   i    (   R   RU   RV   RX   RW   (   R¨   R§   Ri   Rh   t   mean_obst   mean_modt   timeRe   (    (    s   /data/sli/PC/autocorr/pratic.pyt   cov_alldataË   s    <@c         C   s3   t  |  | ƒ t j | d d ƒt j |  d d ƒS(   NRP   i    (   Rº   R   R­   (   R¨   R§   (    (    s   /data/sli/PC/autocorr/pratic.pyR¦   ×   s    c         C   s+   t  j | t  j | ƒ |  t  j |  ƒ ƒ S(   N(   R   RX   (   R¨   R§   (    (    s   /data/sli/PC/autocorr/pratic.pyR±   Û   s    c         C   s'   t  |  | ƒ t j | ƒ t j |  ƒ S(   N(   R±   R   R­   (   R¨   R§   (    (    s   /data/sli/PC/autocorr/pratic.pyRt   ß   s    c         C   s+   d } x | |  | k r& | d 7} q	 W| S(   Ni    i   (    (   t	   cum_arrayt   dayRC   (    (    s   /data/sli/PC/autocorr/pratic.pyt   day_to_monthã   s    c	         C   sÚ  t  | ƒ }	 xÇt  | ƒ D]¹}
 | |
 GHt j | ƒ } t j | ƒ } t j | ƒ } | j d | |
 d  d  … d  d  … f } | j ƒ  t j | ƒ } t j | | d k <|  | } t j	 t j	 | d d ƒd d ƒ} | | } t j	 t j	 | d d ƒd d ƒ} t
 } t
 } xF |	 D]> } t t j | ƒ | ƒ | | <t t j | ƒ | ƒ | | <qWt j | | d k <t j | ƒ j d d ƒ } t j | | d k <t j | ƒ j d d ƒ } xd |	 D]\ } | t
 k rð| | d k  rðt } | } n  | t
 k r¿| | d k  r¿t } | } q¿q¿Wt j d d, ƒ \ } } t j |	 | d d d d d d | ƒt j |	 | d d d d d d | ƒ| j d d d d d d d d ƒ | j d d d d d d ƒ t j d d g ƒ t j d | g ƒ t j d d d ƒt j d d d ƒt j | d  d d! d g d" t j d | d# ƒ ƒt j | j ƒ  d d
 ƒt j | j ƒ  d d
 ƒt j d$ d% d& d' d d ƒ t j | |
 d( d d	 ƒt j d) | d* | |
 d+ ƒ t j ƒ  q Wd  S(-   NR   i    RP   iÿÿÿÿt   methodt   pchipg®Gáz®×?R   i   i   RQ   RS   R‰   g      @R    s   MJung (lag_time=%.0f)t	   limegreens   v5.67PDay01(lag_time=%.0f)R	   Rˆ   RR   g      ð?t	   linestyles   --g        gš™™™™™É¿g333333ó?s   Time Lag [d]R   i   s   Autocorrelation coefficientt   yticksg      à?R{   i   R#   s   upper rightt   ncoli   Rs   s%   /data/sli/PC/autocorr/output/autocor_R'   s   .png(   i   i   (    RW   R   RU   R-   R.   R/   R0   RT   R1   RX   t   FalseR¶   R   Ru   Rv   t   interpolateR™   R(   R)   R]   t   axhlinet   ylimt   xlimRz   t   ylabelt   setpt   linspacet   get_xticklabelst   get_yticklabelsR5   R|   R7   (   R8   R9   R:   R;   R<   R?   R=   t   cutR~   t   kvecRC   t   autocor_obst   autocor_modRE   RF   Rh   Ri   t   b_obst   b_modR´   t   l_obst   l_modt   fRB   (    (    s   /data/sli/PC/autocorr/pratic.pyt   autocorê   s\    	*

$
$ 	&&"1!c   G      C   s  t  | ƒ } d } xft  | ƒ D]X} | | GHt j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ }  t j | ƒ }! |! j d | | d  d  … d  d  … f }" |! j ƒ  t j |" ƒ }" t j |" |" d k <|  |" }# t j	 t j	 |# d d ƒd d ƒ}# | |" }$ | |" }% | |" }& | |" }' | |" }( | |" }) | |" }* | |" }+ |	 |" }, |
 |" }- t j	 t j	 |$ d d ƒd d ƒ}$ t j	 t j	 |% d d ƒd d ƒ}% t j	 t j	 |& d d ƒd d ƒ}& t j	 t j	 |' d d ƒd d ƒ}' t j	 t j	 |( d d ƒd d ƒ}( t j	 t j	 |) d d ƒd d ƒ}) t j	 t j	 |* d d ƒd d ƒ}* t j	 t j	 |+ d d ƒd d ƒ}+ t j	 t j	 |, d d ƒd d ƒ}, t j	 t j	 |- d d ƒd d ƒ}- t
 }. t
 }/ t
 }0 t
 }1 t
 }2 t
 }3 t
 }4 t
 }5 t
 }6 t
 }7 t
 }8 xB| D]:}9 t t j |# ƒ |9 ƒ | |9 <t t j |$ ƒ |9 ƒ | |9 <t t j |% ƒ |9 ƒ | |9 <t t j |& ƒ |9 ƒ | |9 <t t j |' ƒ |9 ƒ | |9 <t t j |( ƒ |9 ƒ | |9 <t t j |) ƒ |9 ƒ | |9 <t t j |* ƒ |9 ƒ | |9 <t t j |+ ƒ |9 ƒ | |9 <t t j |, ƒ |9 ƒ | |9 <t t j |- ƒ |9 ƒ | |9 <qŠWt j | | d k <t j | ƒ j d d ƒ } t j | | d k <t j | | d k <t j | | d k <t j | | d k <t j | | d k <t j | | d k <t j | | d k <t j | | d k <t j | | d k <t j | | d k <t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } t j | ƒ j d d ƒ } xç| D]ß}9 |. t
 k rú| |9 | k  rút }. |9 }: n  |/ t
 k r%| |9 | k  r%t }/ |9 }; n  |0 t
 k rP| |9 | k  rPt }0 |9 }< n  |1 t
 k r{| |9 | k  r{t }1 |9 }= n  |2 t
 k r¦| |9 | k  r¦t }2 |9 }> n  |3 t
 k rÑ| |9 | k  rÑt }3 |9 }? n  |4 t
 k rü| |9 | k  rüt }4 |9 }@ n  |5 t
 k r'| |9 | k  r't }5 |9 }A n  |6 t
 k rR| |9 | k  rRt }6 |9 }B n  |7 t
 k r}| |9 | k  r}t }7 |9 }C n  |8 t
 k rÉ| |9 | k  rÉt }8 |9 }D qÉqÉWt j d d> ƒ \ }E }F t j | | d d d d d d |: ƒt j | | d d d d d d ƒt j | | d d d d d d ƒt j | | d d d d d d ƒt j | | d d d d d d ƒt j | | d d d d d d ƒt j | | d d d d d d ƒt j | | d d d d d d ƒt j | | d d d d d d  ƒt j | | d d! d d d d" ƒt j | | d d# d d d d$ ƒ|F j d% d& d' d d d( ƒ t j d) d* g ƒ t j d& | g ƒ t j d+ d, d- ƒt j d. d, d- ƒt j |F d/ d0 d1 d d2 d d3 d( g d4 t j d | d5 ƒ ƒt j |F j ƒ  d, d
 ƒt j |F j ƒ  d, d
 ƒt j d6 d7 d8 d9 d, d- ƒ t j | | d: d, d	 ƒt j d; | d< | | d= ƒ t j ƒ  q Wd  S(?   Ng      à?R   i    RP   iÿÿÿÿR¾   R¿   R   i   i   RQ   RR   R‰   g      @R    s   MJung (lag_time=%.0f)RÀ   s   IPSL-CM5A-MRt   perus   CM605-LR-pdCtrl-01t   greens   CM605.calv-LR-pdCtrl-02t   reds   CM605.dt20-LR-pdCtrl-02t   yellows   CM605.GUST-LR-pdCtrl-01t   magentas   CM605.NOSU-LR-pdCtrl-03t   blues   CM605.THC1-LR-pdCtrl-01t   browns   CM605.Z0-LR-pdCtrl-01t   olives   NPv5.70PDctrl01t   cyans   5.71vd2qsp375R	   g        Rˆ   g      ð?g333333ã¿g333333ó?s   Time Lag [d]R   i   s   Autocorrelation coefficientRÂ   g      à¿g      Ð¿g      Ð?g      è?R{   i   R#   s   upper rightRÃ   i   Rs   s%   /data/sli/PC/autocorr/output/autocor_R'   s   .png(   i   i   (    RW   R   RU   R-   R.   R/   R0   RT   R1   RX   RÄ   R¶   R   Ru   Rv   RÅ   R™   R(   R)   R]   RÆ   RÇ   RÈ   Rz   RÉ   RÊ   RË   RÌ   RÍ   R5   R|   R7   (G   R8   t   map_mod1t   map_mod2t   map_mod3t   map_mod4t   map_mod5t   map_mod6t   map_mod7t   map_mod8t   map_mod9t	   map_mod10R:   R;   R<   R?   R=   RÎ   R~   RÏ   t   defaultRC   RÐ   t   autocor_mod1t   autocor_mod2t   autocor_mod3t   autocor_mod4t   autocor_mod5t   autocor_mod6t   autocor_mod7t   autocor_mod8t   autocor_mod9t   autocor_mod10t   autocor_mod11RE   RF   Rh   t   mod1t   mod2t   mod3t   mod4t   mod5t   mod6t   mod7t   mod8t   mod9t   mod10RÒ   t   b_mod1t   b_mod2t   b_mod3t   b_mod4t   b_mod5t   b_mod6t   b_mod7t   b_mod8t   b_mod9t   b_mod10R´   RÔ   t   l_mod1t   l_mod2t   l_mod3t   l_mod4t   l_mod5t   l_mod6t   l_mod7t   l_mod8t   l_mod9t   l_mod10RÖ   RB   (    (    s   /data/sli/PC/autocorr/pratic.pyt   autocor_multi   s$   	*

$









$$$$$$$$$$ 										&""""""""""=!c
   '   
   C   s	  xt  | ƒ D]ô}
 | |
 GHt j | ƒ } | j d | |
 d  d  … d  d  … f } | j d } | j d } | j ƒ  t j | d k ƒ } t j | d ƒ } t j | d ƒ } t j | d ƒ } t j | d ƒ } | | | d … | | d … f } | | | d !} | | | d !} t	 | ƒ } t	 | ƒ } t
 j ƒ  t j |  d  d  … | | d … | | d … f d d ƒ} | | } t j | d  d  … | | d … | | d … f d d ƒ} | | } t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ } t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ } d } xÖ t  | ƒ D]È } x¿ t  | ƒ D]± } t j | | | f ƒ rr| | | | d f <| | | | d f <| | | f | | d f <| | | | d f <| | | | d f <| | | f | | d f <| d 7} qrqrWq_Wt | | |	 ƒ \ } } t | | |	 ƒ \ } }  t j | d	 d
 d ƒ} t j |  d	 d
 d ƒ}  t j | d d ƒ } t j | d d ƒ } t j | d d ƒ } t j |  d d ƒ }  t
 j | | d d d d ƒt
 j | |  d d d d ƒt
 j ƒ  j ƒ  \ }! }" g  g  }# }$ xF t |! |" ƒ D]5 \ }% }& |& |# k rL|# j |& ƒ |$ j |% ƒ qLqLWt
 j |$ |# d d d d d d ƒt
 j d ƒ t
 j d ƒ t
 j | |
 d ƒ t
 j d | d | |
 d ƒ t
 j ƒ  q Wd  S(   NR   RŸ   Rž   i   i    RP   i   i   i   Ro   RQ   Rà   R    t   MJUNGRÀ   s   v5.67PDay01RÃ   R#   s   upper centerR   i
   s   Distance [km]s   Semi-VarianceRs   s'   /data/sli/PC/autocorr/output/semivario_R'   s   .png(   RW   R-   R.   R/   R0   R   t   wheret   mint   maxR   R(   R”   RX   RU   t   count_nonzeroR   t   semivariogramRu   Rw   t   insertR]   t   gcat   get_legend_handles_labelst   zipt   appendR5   Rz   RÉ   R|   R7   ('   t	   map_obs_mt	   map_mod_mR:   R;   R<   R?   R=   t   dayst   nlagt   lmaxRD   RE   t   rmask05t   lons_05t   lats_05t   inds05t   lat1_05t   lon1_05t   lat2_05t   lon2_05t   lat_05t   lon_05t	   gpp_obs_mt	   gpp_mod_mR   Rœ   t   lRC   t   jt   D_obs_mt   G_obs_mt   D_mod_mt   G_mod_mt   handlest   labelst	   newLabelst
   newHandlest   handleR    (    (    s   /data/sli/PC/autocorr/pratic.pyt	   semivario¿  sr    	*
$
<
<
>>"!c   N      C   sÕ  xÎt  | ƒ D]À} | | GHt j | ƒ } | j d | | d  d  … d  d  … f } | j d } | j d } | j ƒ  t j | d k ƒ } t j | d ƒ } t j | d ƒ } t j | d ƒ } t j | d ƒ } | | | d … | | d … f } | | | d !} | | | d !} t	 | ƒ } t	 | ƒ } t
 j ƒ  t j |  d  d  … | | d … | | d … f d d ƒ} | | } t j | d  d  … | | d … | | d … f d d ƒ}  |  | }  t j | d  d  … | | d … | | d … f d d ƒ}! |! | }! t j | d  d  … | | d … | | d … f d d ƒ}" |" | }" t j | d  d  … | | d … | | d … f d d ƒ}# |# | }# t j | d  d  … | | d … | | d … f d d ƒ}$ |$ | }$ t j | d  d  … | | d … | | d … f d d ƒ}% |% | }% t j | d  d  … | | d … | | d … f d d ƒ}& |& | }& t j | d  d  … | | d … | | d … f d d ƒ}' |' | }' t j |	 d  d  … | | d … | | d … f d d ƒ}( |( | }( t j |
 d  d  … | | d … | | d … f d d ƒ}) |) | }) t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }* t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }+ t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }, t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }- t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }. t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }/ t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }0 t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }1 t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }2 t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }3 t j t j t j | d  d  … d  d  … f ƒ ƒ d f ƒ }4 d }5 x(t  | ƒ D]}6 xt  | ƒ D]}7 t j | |6 |7 f ƒ r| |6 |* |5 d f <| |7 |* |5 d f <| |6 |7 f |* |5 d f <| |6 |+ |5 d f <| |7 |+ |5 d f <|  |6 |7 f |+ |5 d f <| |6 |, |5 d f <| |7 |, |5 d f <|! |6 |7 f |, |5 d f <| |6 |- |5 d f <| |7 |- |5 d f <|" |6 |7 f |- |5 d f <| |6 |. |5 d f <| |7 |. |5 d f <|# |6 |7 f |. |5 d f <| |6 |/ |5 d f <| |7 |/ |5 d f <|$ |6 |7 f |/ |5 d f <| |6 |0 |5 d f <| |7 |0 |5 d f <|% |6 |7 f |0 |5 d f <| |6 |1 |5 d f <| |7 |1 |5 d f <|& |6 |7 f |1 |5 d f <| |6 |2 |5 d f <| |7 |2 |5 d f <|' |6 |7 f |2 |5 d f <| |6 |3 |5 d f <| |7 |3 |5 d f <|( |6 |7 f |3 |5 d f <| |6 |4 |5 d f <| |7 |4 |5 d f <|) |6 |7 f |4 |5 d f <|5 d 7}5 qqWqWt |* | | ƒ \ }8 }9 t |+ | | ƒ \ }: }; t |, | | ƒ \ }< }= t |- | | ƒ \ }> }? t |. | | ƒ \ }@ }A t |/ | | ƒ \ }B }C t |0 | | ƒ \ }D }E t |1 | | ƒ \ }F }G t |2 | | ƒ \ }H }I t |3 | | ƒ \ }J }K t |4 | | ƒ \ }L }M t j |9 d	 d
 d ƒ}9 t j |; d	 d
 d ƒ}; t j |= d	 d
 d ƒ}= t j |? d	 d
 d ƒ}? t j |A d	 d
 d ƒ}A t j |C d	 d
 d ƒ}C t j |E d	 d
 d ƒ}E t j |G d	 d
 d ƒ}G t j |I d	 d
 d ƒ}I t j |K d	 d
 d ƒ}K t j |M d	 d
 d ƒ}M t j |8 d d ƒ }8 t j |9 d d ƒ }9 t j |: d d ƒ }: t j |; d d ƒ }; t j |< d d ƒ }< t j |= d d ƒ }= t j |> d d ƒ }> t j |? d d ƒ }? t j |@ d d ƒ }@ t j |A d d ƒ }A t j |B d d ƒ }B t j |C d d ƒ }C t j |D d d ƒ }D t j |E d d ƒ }E t j |F d d ƒ }F t j |G d d ƒ }G t j |H d d ƒ }H t j |I d d ƒ }I t j |J d d ƒ }J t j |K d d ƒ }K t j |L d d ƒ }L t j |M d d ƒ }M t
 j |8 |9 d d d d ƒt
 j |: |; d d d d ƒt
 j |< |= d d d d ƒt
 j |> |? d d d d ƒt
 j |@ |A d d d d ƒt
 j |B |C d d d d ƒt
 j |D |E d d d d ƒt
 j |F |G d d d d ƒt
 j |H |I d d d d ƒt
 j |J |K d d d d  ƒt
 j |L |M d d! d d" ƒt
 j d# d$ d% d& d' d( d) d* d+ d  d, g d- d d. d/ d0 d1 ƒt
 j d2 ƒ t
 j d3 ƒ t
 j | | d4 ƒ t
 j d5 | d6 | | d7 ƒ t
 j ƒ  q Wd  S(8   NR   RŸ   Rž   i   i    RP   i   i   i   Ro   RQ   RR   R    R  RÀ   s   IPSL-CM5A-MRRØ   s   CM605-LR-pdCtrl-01RÙ   s   CM605.calv-LR-pdCtrl-02RÚ   s   CM605.dt20-LR-pdCtrl-02RÛ   s   CM605.GUST-LR-pdCtrl-01RÜ   s   CM605.NOSU-LR-pdCtrl-03RÝ   s   CM605.THC1-LR-pdCtrl-01RÞ   s   CM605.Z0-LR-pdCtrl-01Rß   s   NPv5.70PDctrl01Rà   s   5.71vd2qsp375t   OBSs	   IPSL-CM5As   CM605-LRs
   CM605.calvs
   CM605.dt20s
   CM605.GUSTs
   CM605.NOSUs
   CM605.THC1s   CM605.Z0s   v5.71vd2qsp375RÃ   R#   s
   upper leftR   i
   s   Distance [km]s   Semi-VarianceRs   s'   /data/sli/PC/autocorr/output/semivario_R'   s   .png(   RW   R-   R.   R/   R0   R   R  R  R  R   R(   R”   RX   RU   R  R   R  Ru   Rw   R  R]   R5   Rz   RÉ   R|   R7   (N   R!  t
   map_mod_m1t
   map_mod_m2t
   map_mod_m3t
   map_mod_m4t
   map_mod_m5t
   map_mod_m6t
   map_mod_m7t
   map_mod_m8t
   map_mod_m9t   map_mod_m10R:   R;   R<   R?   R=   R#  R$  R%  RD   RE   R&  R'  R(  R)  R*  R+  R,  R-  R.  R/  R0  t
   gpp_mod_m1t
   gpp_mod_m2t
   gpp_mod_m3t
   gpp_mod_m4t
   gpp_mod_m5t
   gpp_mod_m6t
   gpp_mod_m7t
   gpp_mod_m8t
   gpp_mod_m9t   gpp_mod_m10R   t	   data_mod1t	   data_mod2t	   data_mod3t	   data_mod4t	   data_mod5t	   data_mod6t	   data_mod7t	   data_mod8t	   data_mod9t
   data_mod10R2  RC   R3  R4  R5  t   D_mod_m1t   G_mod_m1t   D_mod_m2t   G_mod_m2t   D_mod_m3t   G_mod_m3t   D_mod_m4t   G_mod_m4t   D_mod_m5t   G_mod_m5t   D_mod_m6t   G_mod_m6t   D_mod_m7t   G_mod_m7t   D_mod_m8t   G_mod_m8t   D_mod_m9t   G_mod_m9t	   D_mod_m10t	   G_mod_m10(    (    s   /data/sli/PC/autocorr/pratic.pyt   semivario_multi  s,   	*
$
<
<
<
<
<
<
<
<
<
<
<
>>>>>>>>>>>
@!c         C   s   t  j |  | ƒ j ƒ  } | S(   s1   
    Find index nearest value in numpy array
    (   R   R   R   (   R   R   R   (    (    s   /data/sli/PC/autocorr/pratic.pyR   Â  s    c      	   C   sM  d } |  j  d } |  d d … d f t j d } |  d d … d f t j d } t j | | f ƒ } xÜ t | d ƒ D]Ê } xÁ t | d | ƒ D]¬ } t d t j | | ƒ t j | | ƒ t j | | ƒ t j | | ƒ t j | | | | ƒ d ƒ | | | f <| d t j	 | | | f d ƒ | | | f <q• Wq{ W| S(   s)   
    Compute distances between point
    g     ç¸@i    Ng     €f@i   g       @g      à?(
   RV   R   t   piRU   RW   R   R’   t   sint   cost   asin(   R   t   RTerreRµ   t   latst   lonst   distRC   R3  (    (    s   /data/sli/PC/autocorr/pratic.pyt   grid_distancesÈ  s    !!w7c         C   sÛ  |  d d … d f } t  j | | ƒ \ } } t |  d d … d d … f ƒ } d | | d } t t | ƒ ƒ } t  j | | ƒ \ }	 }
 | |
 |	 k } | |
 |	 k } | | | k } | | | k } t | ƒ } t | | ƒ } t  j | ƒ } t  j | ƒ } t  j | ƒ } d } x³ | | k  rÐ| | d k  r‹| | | | | | d !j ƒ  | | <| | | | | | d !j ƒ  | | <n8 | | | | j ƒ  | | <| | | | j ƒ  | | <| d 7} qW| | f S(   s#   
    Compute the semivariogram
    Ni   g      à?i    i   (	   R   t   meshgridRz  RW   R   t   intt   argsortRU   t   mean(   t   SMt   n_lagR%  R   t   Z1t   Z2t   Dt   Gt   indxt   Ct   Rt   total_nt   group_nt   sor_it   DEt   GERC   (    (    s   /data/sli/PC/autocorr/pratic.pyR  Û  s0    "'*c         C   sä   | d } | d } | d } | } |  d k ry | | | d | | d | | d | | k | | | | k } ng |  d k rž | | | | | } nB |  d	 k rÔ | | | d
 t  j d | | ƒ } n t d ƒ ‚ | S(   s]   
    fits a model to the semivariogram data and returns a covariance method named covfct
    t   nuggetRW   t   sillt	   sphericalg      ø?g      à?g      @t   lineart   exponentiali   iýÿÿÿs7   model_type should be spherical or linear or exponential(   R   t   expt
   ValueError(   t
   model_typet	   model_part   lagst   nt   rt   sR2  R„  (    (    s   /data/sli/PC/autocorr/pratic.pyt   cvmodel  s    


I*c      
   C   s„   t  j ƒ  } t  j |  j ƒ  | j ƒ  d d d d d d d ƒt  j ƒ  t  j d ƒ t  j d	 ƒ t  j d
 | d ƒ t  j ƒ  d  S(   Nt   oRQ   RS   R    t   CL3R   g      à?s   ESA CCI [m3/m3]s   ORCHIDEE [m3/m3]s1   /Users/cmagand/pro/CMIP6/GRAPHS/temporal/scatter_s   .png(	   R(   R”   R]   R3   R5   Rz   RÉ   R7   R0   (   Rh   Ri   R@   RA   (    (    s   /data/sli/PC/autocorr/pratic.pyt   scatterplot_spatial  s    1
(0   t
   matplotlibt   mplt   uset   matplotlib.pyplott   pyplotR(   t   matplotlib.cmR–   t   mpl_toolkits.basemapR   R-   t   numpyR   t   pandasRu   t   mathR’   t   calendarR[   t   scipy.spatial.distanceR   R   R
   R   R   RO   Rl   Rn   R€   R¤   R©   R¬   R‘   R«   R¶   Rº   R¦   R±   Rt   R½   R×   R  R=  Rq  Rz  R  Rš  R  (    (    (    s   /data/sli/PC/autocorr/pratic.pyt   <module>   sJ   						&														6	Ÿ	C	À			+	