ó
ûL¤\c        
   @   se  d  d l  Z d  d l Z d  d l m Z m Z m Z d  d l Z d  d l	 Z	 d  d l
 m Z d  d l m Z d  d l m Z d  d l m Z g  g  g  g  g  d „ Z g  g  g  g  g  d „ Z g  g  g  g  g  d	 „ Z g  g  g  g  d
 „ Z g  g  g  g  d „ Z d d e j j d d „ Z e d „ Z d d d d d d d d e d „	 Z d d d „ Z d „  Z  d S(   iÿÿÿÿN(   t   Datasett   num2datet   date2num(   t   pyplot(   t   Basemap(   t   Polygon(   t   PatchCollectionc         C   sc  t  |  ƒ } | j d } | j d } | j d }	 | j d }
 | j d } t | ƒ d k rá | \ } } } } | | k  | | k @| | k @| | k  @} | | } | | } |	 | }	 |
 | }
 | d  d  … | f } n  | j d } t | d | j ƒ} | j ƒ  t j j | ƒ } t	 j
 t	 j
 | ƒ j ƒ } t	 j | d	 | d
 |
 ƒ} t | ƒ d k r€| | d | d !} n  t | ƒ d k r'| \ } } } | | | !} t j t j | j ƒ ƒ j d ƒ | | j d k } | j d  d  … | f } |	 | }	 |
 | }
 | | } | | } n  t | ƒ d k rÎ| \ } } } | | | !} t j t j | j ƒ ƒ j d ƒ | | j d k } | j d  d  … | f } |	 | }	 |
 | }
 | | } | | } n  t | ƒ d k rPxm | D]b } t j | j ƒ  | k ƒ } | j d  d  … | f } |	 | }	 |
 | }
 | | } | | } qçWn  | |	 |
 | | f S(   Nt   latt   lont   idt   namet   pri    t   timet   unitst   indext   columnsi   (   R    t	   variablest   lenR   R   t   closet   npt   mat   masked_invalidt   pdt   to_datetimet   datet	   DataFramet   invertt   isnant   valuest   sumt   shapet   iloct   keys(   t   ncfilet   _bndst	   _timebndst   _cov1t   _cov2t   _excludet   ncdsett   _latst   _lonst   _idst   _namest   datat   x1t   x2t   y1t   y2t   _selt   _timest   _datest   _prt	   _obsdatest   fyt   lyt   fract   testt   _nn(    (    s   functions_rainfall.pyt   readSAWSonefile
   sb    *




5


5





c   '   
   C   s›  d } t  | ƒ } | j d } | j d } | j d }	 | j d }
 | j d } t |  ƒ d k rç |  \ } } } } | | k  | | k @| | k @| | k  @} | | } | | } |	 | }	 |
 | }
 | d  d  … | f } n  | j d } t | d	 | j ƒ} | j ƒ  t j j | ƒ } t	 j
 d
 d d d ƒ} t	 j | d | d |
 ƒ} t d d ƒ �H } | j ƒ  d } t j g  | D] } | j ƒ  j d ƒ ^ qˆƒ } Wd  QXt j | d  d  … d f ƒ } | d  d  … d f } | d  d  … d f } d } xû | D]ó } | d  d  … d f | k } t	 j g  | | D] } | j ƒ  ^ q=ƒ } | | } d | | d k <| j d ƒ } | d k r–d } n  | d k rÃt	 j | d | d | g ƒ} n0 t	 j | t	 j | d | d | g ƒg d ƒ } | d } q
W| j j ƒ  | _ t	 j
 d d d d ƒ}  t j t |  ƒ | j d g ƒ }! t j |! (| j t	 j |! d |  d | j ƒ  ƒƒ } | j | ƒ t | ƒ d k r¸| | d | d !} n  t | ƒ d k r_| \ }" }# }$ | |" |# !}% t j t j |% j ƒ ƒ j d ƒ |$ |% j d k } | j  d  d  … | f } |	 | }	 |
 | }
 | | } | | } n  t | ƒ d k r| \ }" }# }$ | |" |# !}% t j t j |% j ƒ ƒ j d ƒ |$ |% j d k } | j  d  d  … | f } |	 | }	 |
 | }
 | | } | | } n  t | ƒ d k rˆxm | D]b }& t j | j ƒ  |& k ƒ } | j  d  d  … | f } |	 | }	 |
 | }
 | | } | | } qWn  | |	 |
 | | f S(   Ns'   /work/data/saws/south_africa_2015.pr.nct   latitudet	   longitudeR	   R
   R   i    R   R   s
   1850-01-01s
   2015-12-31t   freqt   DR   R   s%   ../data/bigsix/sawsupdate/alldata.csvt   ri   t   ,i   i   t   nant    t   floats   VILLIERSDORP-SOS ARSt   VILLIERSDORPs
   2016-01-01s
   2017-12-31(!   R    R   R   R   R   R   R   R   R   R   t
   date_rangeR   t   opent	   readlinest   arrayt   stript   splitt   uniqueR   t   astypet   concatR   t   zerosR   RB   t   appendR    t   updateR   R   R   R   R   ('   R"   R#   R$   R%   R&   R!   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   R2   R3   R4   R5   t   inpft   xt   _unamest   _udatest   _uprt   nt   _namet   selt   seldatest   tempt   prupdatet   appenddatest   fillerR6   R7   R8   R9   R:   (    (    s   functions_rainfall.pyt   readSAWSG   s–    *




7,
	!0"
*5


5





c         C   sŽ  t  |  ƒ } | j d } | j d } | j d }	 | j d }
 | j d } t | ƒ d k rá | \ } } } } | | k  | | k @| | k @| | k  @} | | } | | } |	 | } |
 | } | d  d  … | f } n t j |	 ƒ } t j |
 ƒ } | j d } t | d | j ƒ} | j ƒ  t j j	 | ƒ } t j
 | | d k  <t j | d	 t j t j | ƒ j ƒ d
 | ƒ} t | ƒ d k r«| | d | d !} n  t | ƒ d k rR| \ } } } | | | !} t j t j | j ƒ ƒ j d ƒ | | j d k } | j d  d  … | f } | | } | | } | | } | | } n  t | ƒ d k rù| \ } } } | | | !} t j t j | j ƒ ƒ j d ƒ | | j d k } | j d  d  … | f } | | } | | } | | } | | } n  t | ƒ d k r{xm | D]b } t j | j ƒ  | k ƒ } | j d  d  … | f } | | } | | } | | } | | } qWn  | | | | | f S(   NR<   R=   R	   R
   R   i    R   R   R   R   i   (   R    R   R   R   t   copyR   R   R   R   R   RB   R   R   R   R   R   R   R   R   R   R   R    (   t   _ncfileR"   R#   R$   R%   R&   R'   R(   R)   t   _ids0t   _names0R,   R-   R.   R/   R0   RY   R*   R+   R2   R3   R4   R6   R7   R8   R9   R1   R:   (    (    s   functions_rainfall.pyt   readDWS2£   sf    *




05


5





c   %      C   sr  d } d } t  | ƒ } | j d } | j d } | j d } | j d }	 | j d }
 t |  ƒ d k rí |  \ } } } } | | k  | | k @| | k @| | k  @} | | } | | } | | } |	 | } |
 d  d  … | f }
 n t j | ƒ } t j |	 ƒ } | j d	 } t | d
 | j ƒ} | j ƒ  t j j	 |
 ƒ } t
 j | d t
 j t
 j | ƒ j ƒ d | ƒ} | d GHt j d ƒ } d } x!| D]} t j j | ƒ j d ƒ } t | d ƒ � } | j ƒ  d d !}
 Wd  QXt j g  |
 D] } | j ƒ  j ƒ  ^ qøƒ }
 t
 j |
 d  d  … d f ƒ } t
 j |
 d  d  … d f j t ƒ d | d | g ƒ} | d k rŠ| j ƒ  } n$ t
 j | | d d d t d t ƒ} | d } qŸWg  | j ƒ  D]' } |	 t j | | k ƒ d d ^ qÉ} | | _ | j | ƒ t | ƒ d k r6| | d | d !} n  t | ƒ d k rÝ| \ } }  }! | | |  !}" t j t j  |" j! ƒ ƒ j" d ƒ d |" j# d k }# | j$ d  d  … |# f } | |# } | |# } | |# } | |# } n  t | ƒ d k r_xm | D]b }$ t j | j ƒ  |$ k ƒ }# | j$ d  d  … |# f } | |# } | |# } | |# } | |# } qöWn  | | | | | f S(   Ns.   /work/data/dws/pr_dws_day_19000101-20171208.ncs.   /work/data/dws/pr_dws_day_19000101-20181231.ncR<   R=   R	   R
   R   i    R   R   R   R   iÿÿÿÿs   ../data/bigsix/dwsupdate/*.txts   .txtR@   i   iïÿÿÿi   t   howt   outert
   left_indext   right_indexgÍÌÌÌÌÌì?(%   R    R   R   R   R`   R   R   R   R   R   R   R   R   R   t   globt   ost   patht   basenameRJ   RG   RH   RI   RK   RM   RD   t   merget   TrueR    t   whereR   RQ   R   R   R   R   R   R   (%   R"   R#   t   _covR&   R!   R'   R(   R)   Rb   Rc   R,   R-   R.   R/   R0   RY   R*   R+   R2   R3   R4   t	   filenamest   it   fnamet   stnameRR   RS   t   datesR[   R\   t   updatenamesR6   R7   R8   R9   R1   R:   (    (    s   functions_rainfall.pyt   readDWS_oldà   sx    *




0	.7$:	5





c   %      C   sc  d } t  | ƒ } | j d } | j d } | j d } | j d }	 | j d }
 t |  ƒ d k rç |  \ } } } } | | k  | | k @| | k @| | k  @} | | } | | } | | } |	 | } |
 d  d  … | f }
 n t j | ƒ } t j |	 ƒ } | j d } t | d	 | j ƒ} | j ƒ  t j j	 |
 ƒ } t
 j | d
 t
 j t
 j | ƒ j ƒ d | ƒ} t j d ƒ } d } x!| D]} t j j | ƒ j d ƒ } t | d ƒ � } | j ƒ  d d !}
 Wd  QXt j g  |
 D] } | j ƒ  j ƒ  ^ qéƒ }
 t
 j |
 d  d  … d f ƒ } t
 j |
 d  d  … d f j t ƒ d
 | d | g ƒ} | d k r{| j ƒ  } n$ t
 j | | d d d t d t ƒ} | d } q�Wg  | j ƒ  D]' } |	 t j | | k ƒ d d ^ qº} | | _ | j | ƒ t | ƒ d k r'| | d | d !} n  t | ƒ d k rÎ| \ } }  }! | | |  !}" t j t j  |" j! ƒ ƒ j" d ƒ d |" j# d k }# | j$ d  d  … |# f } | |# } | |# } | |# } | |# } n  t | ƒ d k rPxm | D]b }$ t j | j ƒ  |$ k ƒ }# | j$ d  d  … |# f } | |# } | |# } | |# } | |# } qçWn  | | | | | f S(   Ns.   /work/data/dws/pr_dws_day_19000101-20171208.ncR<   R=   R	   R
   R   i    R   R   R   R   s   ../data/bigsix/dwsupdate/*.txts   .txtR@   i   iïÿÿÿi   Re   Rf   Rg   Rh   gÍÌÌÌÌÌì?(%   R    R   R   R   R`   R   R   R   R   R   R   R   R   R   Ri   Rj   Rk   Rl   RJ   RG   RH   RI   RK   RM   RD   Rm   Rn   R    Ro   R   RQ   R   R   R   R   R   R   (%   R"   R#   Rp   R&   R!   R'   R(   R)   Rb   Rc   R,   R-   R.   R/   R0   RY   R*   R+   R2   R3   R4   Rq   Rr   Rs   Rt   RR   RS   Ru   R[   R\   Rv   R6   R7   R8   R9   R1   R:   (    (    s   functions_rainfall.pyt   readCoCT(  st    *




0.7$:	5





t   bluei   c         C   sï  t  d d d d d d d d d	 | d
 d | d d | d d | d d d ƒ 	} | j t j d d d ƒ d d d d d g d d d g d d d d ƒ| j t j d d d ƒ d d d d d g d d d g d d d d ƒ| j d d d d  ƒ | j d d! d" d d# d ƒ y | j d$ d% ƒ Wn | j d& d% ƒ n Xg  }	 xB t | j	 | j
 ƒ D]+ \ }
 } |	 j t t j | ƒ t ƒ ƒ qWW|  j t |	 d' d( d) d( d* d+ d# d
 ƒƒ | j | | d | d, | d- t d d d. | d# d/ d0 d ƒ| S(1   Nt
   projectiont   merct
   resolutionRr   t   lat_0iâÿÿÿt   lon_0i
   t	   llcrnrlati   t	   urcrnrlati   t	   llcrnrloni    t	   urcrnrloni   t   epsgi­  g      IÀg        g      à?t   labelst   dashest	   linewidthg      Ð?t   colors   0.5iöÿÿÿg      Y@t
   fill_colort   whitet   grays   0.8t
   lake_colort   zorders#   /work/data/gis/southafrica/bigsix2dt   damss/   /work/orange/work/data/gis/southafrica/bigsix2dt	   facecolort   deepskybluet	   edgecolort
   linewidthsg      ð?t
   edgecolorst   latlont   si   t   alpha(   R   t   drawparallelsR   t   aranget   drawmeridianst   drawmapboundaryt   fillcontinentst   readshapefilet   zipt	   dams_infoR�   RP   R   RI   Rn   t   add_collectionR   t   scatter(   t   plR(   R)   t   extR‡   R�   t   cmapt   msizet   mt   patchest   infoR   (    (    s   functions_rainfall.pyt   plotmapn  s    OFF"#+:c         C   sB  d d l  m } d d l m } t j j | ƒ } t j | d |  d t	 ƒ} | r„ d Gg  t
 d d ƒ D] } | j | ƒ ^ qg GHn  | d  j d	 ƒ } | d j d	 ƒ } t j | | d
 ƒ t j | d
 ƒ }	 | rä d G|	 GHn  | | d d d t ƒ\ }	 }
 | rd G|
 GHd GHn  g  t
 d d ƒ D] } | j | ƒ ^ q)S(   Niÿÿÿÿ(   t   acorr_ljungbox(   t   acfR   R`   s%   autocorrelation for first three lags:i   i   RD   i   s;   Durbin-Watson statistic (close to 2 if no autocorrelation):t   lagst	   boxpierces+   Ljung-Box p-value on lag 1 autocorrelation:RC   (   t   statsmodels.stats.diagnosticR¨   t   statsmodels.tsa.stattoolsR©   R   R   R   R   t   SeriesRn   t   ranget   autocorrRM   t   nansumt   False(   t   _xdatat   _ydatat   verboseR¨   R©   t   pdfRr   t   at   bt   _statt   _pvalue(    (    s   functions_rainfall.pyt   autocorr_test�  s     
1(	iè  i_   t   linregg      à?g333333ã?i   t	   bootstrapc   =      C   sD
  d d l  j } d d l m } d d l j } d d l j j } d d l m	 } d d l
 j j } d d l m } d d l m } m } m } m } d d l m } m } |	 d k rË | d	 k rË d
 }	 n  t j |  ƒ }  t j j | ƒ } t | ƒ } d | d } d | } | d
 k rC| d t j t t | ƒ ƒ ƒ ƒ } n! | t j t t | ƒ ƒ ƒ ƒ } | d k rT|
 r”d |	 d t | ƒ d GHn  t j t j |  | g ƒ d d d g ƒ} | j  d | ƒ } | j! d | ƒ } | j" j# } | j" j$ }  | j% d }! | j& ƒ  d d }" | j& ƒ  d d }# | j' | ƒ }$ | |$ }% t( |  |% t) ƒ |	 d
 k rTt j* |$ ƒ j+ d d ƒ }& g  }' g  }( xÃ | j, | ƒ D]¯ }) |) d d }* | j  d | j- |* d d … f ƒ } yf | j! d | ƒ } |' | j" j$ g }' |( | j" j# g }( t j. |& | j' | ƒ j+ d d ƒ d ƒ }& Wq›d }+ q›Xq›WqTn  | d k r|
 r„d |	 d t | ƒ d GHn  | j/ |  ƒ }, | j | |, d t0 d d ƒ} | j! ƒ  } | j" \ } }  | j% d }! | j& ƒ  d \ }" }# | j' |, ƒ }$ | |$ }% t( |  |% ƒ |	 d
 k rg  }' g  }( t j* |$ ƒ j+ d d ƒ }& xÌ | j, | ƒ D]¸ }) |) d d }* | j | |* |, |* d d … f d t0 d d ƒ} yb | j! ƒ  } |' | j" d g }' |( | j" d g }( t j. |& | j' |, ƒ j+ d d ƒ d ƒ }& WqXd }+ qXXqXWqn  | d	 k r–|
 rJd |	 d t | ƒ d GHn  | |  | ƒ \ }- }! |
 ryd G|- Gd  G|! GHn  | j1 | |  d! d" ƒ\ }  }. }" }# |. |  |  }$ | |$ }% t( |  |% ƒ |	 d
 k r–g  }' g  }( t j* |$ ƒ j+ d d ƒ }& x› | j, | ƒ D]‡ }) |) d d }* | j1 | |* |  |* d! d" ƒ} |' | d g }' |( | d g }( t j. |& | d | d |  j+ d d ƒ d ƒ }& qWq–n  | d# k ró|
 r°d$ GHn  t2 | j3 | |  d% | d& | d d ƒƒ }/ t j t4 |/ j5 |  ƒ ƒ j6 d' ƒ j+ d d ƒ }$ t j* |$ ƒ }& x× | j, | ƒ D]Ã }) |) d d }* yŸ t2 | j3 | |* |  |* d% | d& | d d ƒƒ }/ t j t4 |/ j5 |  ƒ ƒ j6 d' ƒ j+ d d ƒ }/ t j |/ d( |  ƒ}0 |0 j7 ƒ  j8 }1 t j. |& |1 d ƒ }& Wq)d }+ q)Xq)Wn  | d# k rvt j9 }" t j9 }# t j9 }  t j9 } t j9 }! t j: |& | | g d ƒ }2 |2 d d … d f }3 |2 d d … d f }4 n“|	 d
 k r2	t j; |' d) d* g ƒ \ }" }# | |' ƒ }5 |5 d ƒ }! |! d+ k rÑd |! }! n  |
 râ|& j< GHn  t j: |& | | g d ƒ j= ƒ  }2 |2 d d … d f }3 |2 d d … d f }4 n× t j |  ƒ d, }6 |6 t j> |6 ƒ d }7 d, t |  ƒ |7 t? |7 ƒ d+ }/ t j@ t j | ƒ t jA |$ ƒ d ƒ t |  ƒ d+ }8 d d | d- d }9 | jB |9 t |  ƒ d ƒ }: |: |8 |/ }; |$ |; }4 |$ |; }3 i |  d. 6|# d/ 6|" d0 6|! d1 6|$ d2 6|3 d3 6|4 d4 6}< |< S(5   sŽ  calculates bootstrap confidence interval and significance level for trend, ignoring autocorrelation or accounting for it
    Parameters
    ----------
    x_var : list
      independent variable
    y_var : list
      dependent variable, same length as x_var
    q : int, optional, only if trendtype==quantreg
      quantile for which regression is to be calculated
    n : int, optional
      number of bootstrap samples
    ci : int, optional
      confidence level. Default is for 95% confidence interval
    frac : int, optional, only if trendtype==lowess
      lowess parameter (fraction of time period length used in local regression)
    it : int, optional, only if trendtype==lowess
      lowess parameter (numbre of iterations)
    autocorr : str, optional
      way of accounting for autocorrelation, possible values: None, "bootstrap"
    trendtype : str, optional
      method of trend derivation, possible values: lowess, linreg, quantreg, TheilSen
    CItype : str, optional
      method of CI derivation, possible values: "analytical" and "bootstrap". 
      if trendtype is "lowess", CItype will be set to None
      if CItype is "analytical": autocorrelation will be set to None
      

    Results
    -------
    returns library with following elements:
    slope - slope of the trend
    CI_high - CI on the slope value
    CI_low - as above
    pvalue - trend's significance level
    trend - trend line, or rather its y values for all x_var
    trendCI_high - confidence interval for each value of y
    trendCI_low - as above

    Remarks
    -------
    the fit function ocassionally crashes on resampled data. The workaround is to use try statement
    iÿÿÿÿN(   t   OLS(   t   QuantReg(   t   ECDF(   t   mstatst   mannwhitneyut   tt
   kendalltau(   t   StationaryBootstrapt   IIDBootstrapt
   analyticalt   TheilSenR½   id   i   i   t   quantregs   Quantile regression, CI type: s   , autocorrelation adjustment: s   
R   t   Xt   Ys   Y ~ Xt   qi   i    R¼   s   Linear regression, CI type: t   hasconstt   missingt   drops   Theil-Sen slope, CI type: s   raw MK tau:s   raw MK pvalue:R•   gffffffî?t   lowesss   Lowess
R8   t   itRD   R   i   i_   g      à?g      ð?g      Y@t   slopet   CI_hight   CI_lowt   pvaluet   trendt   trendCI_lowt   trendCI_high(C   t   statsmodels.apit   apit#   statsmodels.regression.linear_modelR¾   t   statsmodels.tsat   tsat   statsmodels.formula.apit   formulat*   statsmodels.regression.quantile_regressionR¿   t   statsmodels.nonparametric.apit   nonparametrict0   statsmodels.distributions.empirical_distributionRÀ   t   scipy.statsRÁ   RÂ   RÃ   RÄ   t   arch.bootstrapRÅ   RÆ   R   RI   R   R   R   R¯   t   strR   R   t   column_stackRÉ   t   fitt   paramst	   InterceptRÊ   t   pvaluest   conf_intt   predictR»   R²   R`   t   reshapeR½   t   ixRP   t   add_constantRn   t   theilslopest   dictRÐ   t   mapt   getRM   t   interpolateR   RB   t   nanpercentilet
   percentileR   t	   transposet   meanR   R±   t   nanmeant   ppf(=   t   x_vart   y_vart   n_boott   cit	   trendtypeRÌ   R8   RÑ   R°   t   CItypeRµ   t   smR¾   RÝ   t   smfR¿   t   npsmRÀ   RÁ   RÂ   RÃ   RÄ   RÅ   RÆ   t   n_datat   ci_lowt   ci_hight   bst   xydatat   modelt   rest   intcptRÒ   RÕ   RÔ   RÓ   t   y_predt   residst	   bs_trendst	   bs_slopest
   bs_intcptsR,   t   indt   goingdownquietlyt   x_varOLSt   taut	   interceptR[   t   predt   temp_interpt   confintR×   RØ   t   ecdft   xtempt   squanomt   seet   ci_adjt   tcompt   cintt   output(    (    s   functions_rainfall.pyt   trend_CI¯  s   ,"	
'!*
%.
2.$
 ;*020					!"7

7RÇ   i
   c   !      C   sV  d d l  m } m } d d l m } m } d d l m } d } t |  ƒ }	 |	 | d }
 t	 j
 |
 |	 g ƒ } t	 j | (t	 j
 |
 |	 g ƒ } t	 j | (x¯t | |	 d ƒ D]š} | GH| d } |	 | } | d t	 j t | ƒ ƒ ƒ } xZt | | ƒ D]I} | | d } | | } |  | | !} t	 j | ƒ } | d	 k r}| j | | d
 d ƒ\ } } } } | | | ƒ \ } } nŸ g  } xV | j | ƒ D]E } | d d } | j | | | | d
 d ƒ} | | d g } q“Wt	 j | ƒ } | | ƒ }  |  d ƒ } | d k rd | } n  | | | | | f <| | | | | f <qû Wq® W| | g S(   Niÿÿÿÿ(   RÁ   RÄ   (   RÅ   RÆ   (   RÀ   id   i   i   i   RÇ   R•   gffffffî?i    g      à?(   Rä   RÁ   RÄ   Rå   RÅ   RÆ   Rã   RÀ   R   R   RO   RB   R¯   RI   R—   Rñ   R½   t   median(!   t   _tst   _howt
   _minwindowRÁ   RÄ   RÅ   RÆ   RÀ   t   _nboott   _ntst   _nlevelst   _slopet   _pvalt   _windowt   _firstt   _lastR  t   _blockt   _x0t   _x1t   _subtsRü   t   _trendR  RÔ   RÓ   t   _tauRº   R  R,   R  R  R  (    (    s   functions_rainfall.pyt   trendpyramid¡  sH    




$ c      
   C   s  | \ } } } } | | d } t  j d d ƒ } t  j d d d ƒ }	 |	 j t j |  d ƒ d d d t  j j d | d | ƒ}
 |	 j t j | ƒ d	 k  d d
 d d g d d ƒ|	 j	 t
 d | d ƒ ƒ |	 j t
 | d | d ƒ d d ƒ|	 j t
 d | d d ƒ ƒ |	 j t
 | d d ƒ ƒ |	 j d ƒ |	 j d ƒ |	 j d ƒ t  j |
 d d d d ƒt  j d ƒ t  j ƒ  d  S(   Ni   t   figsizei
   t   interpolationt   nearestR¢   t   vmint   vmaxgš™™™™™©?t   hatchesRC   s   ///R•   i    i   t   rotationiK   iöÿÿÿgÍÌÌÌÌÌä?s   centered on years   window width [years]t   fractiong333333Ã?t   shrinkgš™™™™™Ù?s   rainfall trend [mm/decade](   i
   i
   (   t   pltt   figuret   subplott   imshowR   t   flipudt   cmt   bwr_rt   contourft
   set_xticksR¯   t   set_xticklabelst
   set_ytickst   set_yticklabelst
   set_aspectt
   set_xlabelt
   set_ylabelt   colorbart   titlet   show(   R*  R+  t
   plotparamsR6   R7   R9  R:  t   nyt   figR    t   ax(    (    s   functions_rainfall.pyt   plotpyramidÍ  s     :1#(!   t   numpyR   t   pandasR   t   netCDF4R    R   R   Rj   Ri   t
   matplotlibR   R?  t   mpl_toolkits.basemapR   t   matplotlib.patchesR   t   matplotlib.collectionsR   R;   R_   Rd   Rw   Rx   RD  t   RdYlBu_rR§   R²   R»   t   NoneR"  R5  RU  (    (    (    s   functions_rainfall.pyt   <module>   s"   =\=HF! $ò,