
w`c           @   s2  d  d l  Z d  d l m Z 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
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d d d     YZ d   Z d d d     YZ d d d	     YZ d
 d d     YZ d d d     YZ d e f d     YZ d e f d     YZ d S(   iN(   t   datetimet	   timedeltat   DataStoreLoaderc           B   s   e  Z d  d l Z d  d l Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z e d    Z RS(   iNc      	   C   s  t  j | d  } d } | j |  } t j |  |  _ t   } x | j   D] } t | | t  j	  } | r| j |  j
 } xz | j   D]i }	 t | |	 t  s t | |	 t j  r |	 | |	 f }
 n |	 | |	 j d  f }
 |
 d | |	 <q Wn  | |  _ qR W|  j d |  _ t j d |  j  |  _ d } t j |  |  _ |  j |  _ |  j d |  _ |  j d	 |  _ |  j d
 |  _ |  j d |  _ Wd  QXd  S(   Nt   rs   /dataset1/data1/datat   asciii   t   projdeft
   projparamss0   +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defst   xscalet   yscalet   xsizet   ysize(   t   h5pyt   Filet   gett   npt   arrayt   datat   dictt   keyst
   isinstancet   Groupt   attrst   floatt   int64t   decodet
   attributest   _projection_strt   pyprojt   Projt
   projectiont   _projection_WGS84_strt   projection_WGS84t   grid_cell_xt   grid_cell_yR	   R
   (   t   selft   h5_file_patht   fft   dataset_namet   datasetR   t   kit   isGroupt   attr2t   att   outt	   WGS84_str(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   __init__   s0    	)c         C   s   |  j  S(   N(   R   (   R"   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   get_attributes4   s    c         C   s   |  j  S(   N(   R   (   R"   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   get_data7   s    c         C   s   | |  j  k r t St Sd  S(   N(   R   t   Truet   False(   R"   t   atr(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   _is_in_attributes:   s    c         C   sv   t    } |  j } | d | d f | d <| d | d f | d <| d | d f | d	 <| d
 | d f | d <| S(   Nt   LL_latt   LL_lont   LLt   LR_latt   LR_lont   LRt   UL_latt   UL_lont   ULt   UR_latt   UR_lont   UR(   R   R   (   R"   t   cornersR*   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   get_grid_corners_latlon@   s    		c   	      C   s   t  j d  } t  j d  } d } t j j |  j |  j  } |  j   } xH | D]@ } | | \ } } | j | |  \ | | <| | <| d 7} qR W| | f S(   Ni   i    i   (	   R   t   zerosR   t   Transformert	   from_projR   R   RA   t	   transform(	   R"   t   xt   yt   it   trans_ll2xyR@   t   cornerR4   R5   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   get_grid_corners_xyI   s    	 c         C   s   |  j  d |  j  d } } t j j |  j |  j  } | j | |  \ } } t j d |  j	  |  j  d | } t j d |  j
  |  j  d | } | d  d  d  } t j | |  \ |  _ |  _ d  S(   NR4   R5   i    R   R   i(   R   R   RC   RD   R   R   RE   R   t   arangeR	   R
   t   meshgridt   X_gridt   Y_grid(   R"   R4   R5   RI   t   x0t   y0t   vxt   vy(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   _set_grid_XYV   s    	$$c         C   sC   t  j j |  j |  j  } | j |  j |  j  \ |  _ |  _	 d  S(   N(
   R   RC   RD   R   R   RE   RN   RO   t   LON_gridt   LAT_grid(   R"   t   trans_xy2ll(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   _set_grid_latlonb   s    	c         C   s;   t  |  d  r! t  |  d  r! n
 |  j   |  j |  j f S(   NRN   RO   (   t   hasattrRT   RN   RO   (   R"   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   get_grid_XYi   s    
c         C   s;   t  |  d  r! t  |  d  r! n
 |  j   |  j |  j f S(   NRV   RU   (   RY   RX   RU   RV   (   R"   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   get_grid_lonlatp   s    
c          C   sf   d d  l  }  t d d  } t d d  } |  j |  } |  j |  } | j   | j   | | f S(   Nis=   ../wrapperAnalysisMetadatas/imgwDatastore_metadata/srilon.pklt   rbs=   ../wrapperAnalysisMetadatas/imgwDatastore_metadata/srilat.pkl(   t   picklet   opent   loadt   close(   R]   t   flont   flatt   lont   lat(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   get_grid_lotlan_cachew   s    

(   t   __name__t
   __module__R   R   R-   R.   R/   R3   RA   RK   RT   RX   RZ   R[   t   staticmethodRe   (    (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR      s   											c            s   d  g     f d   } | S(   Nc             s.    d d  k r&   |  |    d <n   d S(   Ni    (   t   None(   t   argst   kwargs(   t   clst   instance(    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   wrapper   s    (   Ri   (   Rl   Rn   (    (   Rl   Rm   s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt	   singleton   s    	t   RadarParamsc           B   s>   e  Z d    Z e d    Z e d    Z e d    Z RS(   c      
   C   sC   | |  _  t d d  % } t j | d d d d |  _ Wd  QXd  S(   Ns
   params.csvR   t   headeri    t	   index_col(   t   paramR^   t   pdt   read_csvt   table(   R"   t   _akronimt   f(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR-      s    	c         C   s   |  j  j |  j d f S(   Nt   folder(   Rv   t   locRs   (   R"   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyRy      s    c         C   s   |  j  S(   N(   Rs   (   R"   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   akronim   s    c         C   s   |  j  j |  j d f S(   Nt   suffix(   Rv   Rz   Rs   (   R"   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR|      s    (   Rf   Rg   R-   t   propertyRy   R{   R|   (    (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyRp      s   	t   DataStoreMultipleLoaderc           B   s   e  Z d    Z e d d e e d   Z e d d d d  d g  d g d	  Z d
   Z e d e d e d   Z	 e d    Z
 d   Z d   Z RS(   c         C   s   | |  _  d  S(   N(   t   dateList(   R"   R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR-      s    t   SRIt    c         C   s  d } t  r d } n d } d j |  } | d k rE t d   n  |  j } |  j } |  j }	 |  j }
 |  j } d	 j | | |	  } d
 j |  } d j |  } d j |	  } d j |
  } d j |  } t |  } | j	 } | j
 } t |   } | j   } t rd | f GHd j | | | | | | |  } t j j | | |  } t j j |  syd GHt j |  n  d j | t j j | |   } np d j | |  } t j j | | t t |  } t j j |  } t j |  d j | t j j | |   } | S(   NR   t   Archt   OpersN   https://danepubliczne.imgw.pl/datastore/getfiledown/{}/Polrad/Produkty/POLCOMPs   .pngs   _echoOnly.pngs   .h5s   format is incorrects   {:04d}-{:02d}-{:02d}s   {:04d}s   {:02d}s   extension iss   {}{}{}{}{}0000{}{}s   dir creates.s   curl {} > {}s	   {}_{}.zip(   R   s   .pngs   _echoOnly.pngs   .h5(   R1   t   formatt	   TypeErrort   yeart   montht   dayt   hourt   minuteRp   R|   Ry   t   FilesystemFormatter_Servert   getPathR0   t   ost   patht   joint   existst   makedirst   strYt   strM(   t   dateRs   t	   extensiont   archiwalt   saveFilet   isArchiwalStrt   serwerRootPathRG   t   mt   dt   hR   t   dateStrt   yyt   mmt   ddt   hht   mminutet   radarManagerR|   Ry   t   serverFormattert   pathRawt   filenamet   urlt   commandt   zipFilet	   localPath(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   singleUrlLoaderFile   sN    								!i  i   i   i    i   c         C   s(   | |  _  | |  _ | |  _ | |  _ |  S(   N(   t   startt   paramst   lengtht
   extensions(   R"   R   R   R   R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   setExecutionParams1   s
    				c            sd   d d l  m   d d l m } m }    f d   } |   } d j |  } | | d t d  S(   Ni(   t   product(   t   Popent   runc             s    j  }  g  t  j  D] } |  t d |  ^ q }  j } g  } xT   | |  j  D]= \ } } } | j t j | d | d | d t	 d t
  q] W| S(   Nt   daysRs   R   R   R   (   R   t   rangeR   R   R   R   t   appendR~   R   R0   R1   (   R   R   t   datesR   t   ordinalListt   pt   ext(   R   R"   (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   listCommands   s    	/	%&t   ;t   shell(   t	   itertoolsR   t
   subprocessR   R   R   R0   (   R"   R   R   R   t   Listcommands(    (   R   R"   s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   execute   s    	c         C   s   d  S(   N(    (   R   Rs   R   R   t   save(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   singleLoaderFile  s    c          C   s2   d }  t  |   j   } d } t j | |  d  S(   NR   (   R   R/   R]   t   dump(   R   t   fieldt	   fieldPath(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   singleCacheloader  s    c         C   se   t  |  j    } d   | j   D } x0 | D]( } t j |  } | j |  | | <q/ W| j   S(   Nc         S   s   i  |  ] } d  |  q S(   N(   Ri   (   t   .0R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pys
   <dictcomp>  s   	 (   R   t   loadSriMapsR   R~   t   singleLoadert   getPointFromMapt   values(   R"   t   mappert   sriMapst   pointsR   t   map2D(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR_     s    c         c   s<   d   |  j  D } x | D] } t j |  } q W| Vd  S(   Nc         S   s   i  |  ] } d  |  q S(   N(   Ri   (   R   R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pys
   <dictcomp>  s   	 (   R   R~   R   (   R"   t	   datesDictR   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR     s    (   Rf   Rg   R-   Rh   R1   R   R    R   R   R   R   R_   R   (    (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR~      s   	;'			t   SriUmMapperc           B   sk   e  Z d    Z d   Z d   Z d   Z e d    Z e d    Z e d    Z	 d   Z
 d   Z RS(	   c         C   st   d d l  m } | |  } | j |  _ | j |  _ t j | j | j g  \ } } |  j i | d 6| d 6 d  S(   Ni(   t   IMGWStationRd   Rc   (	   t   imgwWrapperR   t   rowt   UMrowt   colt   UMcolR   t   um_rowcol2latlont   latlon2sriXY(   R"   t   stationNameR   t   stationRd   Rc   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   SriUmMapper_IMGWstation)  s    !c         C   s   |  j  |  d  S(   N(   R   (   R"   t
   latlonDict(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   SriUmMapper_LatLon1  s    c         C   sp   | d |  _  | d |  _ | d } | d } t j i | d 6| d 6 \ } } |  j i | d 6| d 6 d  S(   NR   R   Rd   Rc   (   R   R   R   R   R   (   R"   t
   rowColDictR   R   Rd   Rc   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   SriUmMapper_UMRowCol4  s    

#c         C   s   | |  j  |  j S(   N(   t   sriXt   sriY(   R"   R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR   =  s    c    
      C   s   d d l  m }  d } d } | d } d j | d | d f  } d j | d | d	 f  } t j j t j   d
  } t t j j | | |  d   } |  |  } Wd  QXt t j j | | |  d   } |  |  }	 Wd  QX| |	 f S(   Ni(   R_   t   ct   pgridt   _gridR   t   5_s	   _lats.pkls	   _lons.pkls'   ../wrapperAnalysisMetadatas/um_metadataR\   (   R]   R_   R   R   R   t   getcwdR^   (
   R_   t	   grid_typet	   comp_typet   name1t   lat_namet   lon_namet	   directoryRx   t   UMlat2Dt   UMlon2D(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   loadUMlatlon@  s    
	$$c         C   sn   t  j   \ } } |  d } |  d } | | d | | d } t j t j |  | j  \ } } | | f S(   Ni    i   i   (   R   R   R   t   unravel_indext   argmint   shape(   t   latlon_pointt   lat2Dt   lon2Dt   lon_pt   lat_pt   arrR   R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   um_latlon2rowcolP  s    

$c         C   sL   t  j   \ } } t |  d  } t |  d  } | | | | | | f S(   Ni    i   (   R   R   t   int(   t   rowcol_pointR   R   t   row_pt   col_p(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR   Y  s    c         C   sn   t  j   \ } } | | d | d } | | d | d } | d |  _ | d |  _ | |  _ | |  _ d  S(   Ni    i   (   R   Re   R   R   Rc   Rd   (   R"   t   pointRc   Rd   t   lonValuet   latValue(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   sriXY2latlon`  s    	c         C   s   t  j   \ } } t j | | d d  t j | | d d  } t j |  } | j d } t | |  | | g GH| d |  _ | d |  _ t | |  |  _	 | | |  _
 d  S(   NRc   i   Rd   i   (   R   Re   R   t   powerR   R   R   Rd   Rc   R   R   (   R"   R   Rc   Rd   t   distancet   indext   ncols(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR   i  s    2(   Rf   Rg   R   R   R   R   Rh   R   R   R   R  R   (    (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR   %  s   								t   FileSystemFormatterc           B   s   e  Z d    Z d   Z RS(   c         C   sI   | |  _  | j |  _ | j |  _ | j |  _ | j |  _ | j	 |  _	 d  S(   N(
   R   R   RG   R   R   R   R   R   R   R   (   R"   R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR-   v  s    	c         C   sI   t  |  } | j } d j |  j |  j |  j |  j |  j | |  } | S(   Ns   {}{}{}{}{}0000{}{}(   Rp   R|   R   RG   R   R   R   R   (   R"   Rs   R   R   R|   t   fileName(    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   getFileName~  s
    	*(   Rf   Rg   R-   R
  (    (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR  u  s   	R   c           B   s   e  Z d    Z d   Z RS(   c      	   C   s[   d j  |  j  } d j  |  j  } t j j d d d d t |  j  t |  t |   S(   Ns   {:02d}s   /nat   wrft   IMGWt   RADAR(   R   R   R   R   R   R   t   strRG   (   R"   R   R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR     s    c         C   s1   |  j  | |  } |  j   } t j j | |  S(   N(   R
  R   R   R   R   (   R"   Rs   R   R	  R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   getPathFilename  s    (   Rf   Rg   R   R  (    (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR     s   	t   FilesystemFormatter_Localc           B   s   e  Z d    Z d   Z RS(   c      
   C   s{   t  j   } d j |  j  } d j |  j  } t  j j | d d d d t |  j  t |  t |   } d | f GH| S(   Ns   {:02d}s   ..t   wrapperCachet   imgwDatastoret   raws	   PATH IS!!(	   R   R   R   R   R   R   R   R  RG   (   R"   t   rootR   R   R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR     s    <c         C   sB   |  j  | |  } t j d |  |  j   } t j j | |  S(   Ns	   filename:(   R
  t   loggingt   infoR   R   R   R   (   R"   Rs   R   R	  R   (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR    s    (   Rf   Rg   R   R  (    (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyR    s   	(    (    (    (    (    (   t   numpyR   R    R   t   pytzR]   R   t
   matplotlibt   pandasRt   t   requestst   ioR  R   R   R   Ro   Rp   R~   R   R  R   R  (    (    (    s&   /na/wrf/IMGW/RADAR/wrapperImgwRadar.pyt   <module>   s&   t	P