U ö× e!ã@s`dZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Zdd„Zdd„Z dd„Z dd„Z dS)zA Created on Thu Jul 25 12:02:21 2019 @author: Alexander.Kurapov cCs2ddl}ddl}| d|¡}|j | ¡d¡}|S)Néz\d{4}-\d{2}-\d{2}z%Y-%m-%d)ÚreÚdatetimeÚsearchÚstrptimeÚgroup)ÚarÚdtÚmatchZdate1©r ú9/lfs/h1/ops/prod/packages/nosofs.v3.5.14/ush/pysh/akPy.pyÚfindDateInStrings  r cCsLddl}|j||dd}|D](}||j||jkr|||||<q|S)NrÚ mergesort)Úkind)ÚnumpyÚargsortÚsize)ÚDZsortKeyÚnpZisortÚkeyr r r ÚsortDicts rcCs>i}|D]0}||j|kr,|||||<q||||<q|S)N)r)rÚnÚiiÚBrr r r Ú subsampleDicts rc CsÆddlm}ddlm}ddl}||d|ddƒ}|d}|d}|dj\}} | |dddd…f| d| ¡¡} | |j |¡ƒ|d <| |d dd…df| d|¡¡} | |j |¡ƒ|d <|S) Nr)Úwcofs_lonlat_2_xy)Ú interpolateÚobs_lonÚobs_latÚxÚyZx_rhoÚ obs_XgridZy_rhoÚ obs_Ygrid) rZscipyrrÚshapeZinterp1dÚarangeÚmaÚfilled) rÚgrdrrrÚxyrrÚeta_rhoÚxi_rhoÚfr r r Ú obs_ijpos*s  $$r+c Csrddlm}ddl}ddl}|d ¡}|d ¡}|d ¡}|d ¡}| | |d¡¡} d} | | jd¡} |j | | ddd\} } |   dd ¡|  d| j¡D]¼}|  |d| |k¡  ¡}|jd kr¤| || ¡}||| }| ||}|j|d ||d |dd |d|dddd| ||¡| ||¡|j|d|d|dddgddq¤|jdddS)NrZlon_rhoZlat_rhoÚobs_timeéT)ZsharexZshareyg€2@g#@érrÚsÚ obs_valueééZjet)r/ZmarkerÚcZvminZvmaxZcmapÚmask_rhog\Âõ(\ß?çà?Úk)ÚcolorsF)Úblock)Zmatplotlib.pyplotZpyplotÚmathrÚminÚmaxÚuniqueÚceilrZsubplotsZset_size_inchesr#ÚargwhereÚsqueezeÚfloorZscatterZset_xlimZset_ylimZcontourÚshow)rr&Zpltr9rZxlim1Zxlim2Zylim1Zylim2ÚtsurveyÚnrÚncZfigÚaxesZiaxZiNZkrZkcÚaxr r r Ú plot_granules<s@          ÿ  ÿrGcCsrddl}| |d¡}| |jft¡}tdt|ƒƒD](}| |d||k¡ ¡}|j||<q4||d<||d<|S)Nrr,Ú survey_timeÚNobs) rr<ÚndarrayrÚintÚrangeÚlenr>r?)rrrBrIÚjrr r r Úadd_surveyTime_Nobs_s rOc Cs°ddl}| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡| d¡dœ }| |d¡ t¡}| |d¡ t¡}|dj\}}||}|dD] } | |d| k¡} | |d| ¡} | D]Ü} | |d| k|d| k@¡ ¡} |  ||f¡}|  ||f¡}|  ||f¡}|  ||f¡}|  ||f¡}|  ||f¡}| j d krX| g} | D]Ô}||}||}|||fd 7<|||f|d |7<|||f|d |7<|||f|d |7<|||f|d|7<|||f|d|7<|||fd kr\|d |}q\|  |¡}|  |¡}|  |¡}|  |¡}|  |¡}|  |¡}| |dk¡ ¡}||}||}||}||}||}||}||}||}||}||}||}| |  |j¡}| |  |j¡}||  |j¡}|  |d|¡|d<|  |d |¡|d <|  |d |¡|d <|  |d |¡|d <|  |d|¡|d<|  |d|¡|d<|  |d|¡|d<|  |d |¡|d <qÊqœ|S)Nr) Úobs_typer0rrZ obs_depthr,r r!Úobs_provenancer r!r4rHr,rPr.r0rrrQ)rÚemptyÚroundÚastyperKr"r>r<r?ÚzerosrÚreshapeÚonesÚappend)rr&rÚSZobs_iZobs_jr(r)rÚtsZisurZ typeUniqueZtype_irÚcountr0rrr r!r6ÚirNZprovZiNot0rPr,Zobs_provr r r Ú superobs_surfosŠø  "       r]cCsNddl}td|ƒi}| |¡}|D]}|j|dd…||<q&| ¡|S)Nrzread )ÚnetCDF4ÚprintÚDatasetÚ variablesÚclose)ÚfnameZvarlistÚn4ÚvarsrDZvarIr r r Ú readncvarsÈs  rfc Csddl}|j}|d}|d}d|}t|ƒD]Ú}| |¡}|dd…d|…f|dd…d|d…f7<|dd…d|d…f|dd…d|…f7<|d|…dd…f|d|d…dd…f7<|d|d…dd…f|d|…dd…f7<d||dk<q.d|}|S)Nrr.)Úcopyr"rL) ÚmaskZnpntsrgÚnnÚnyÚnxZmask_newÚitZmask_oldr r r Ú diffuse_maskÕs  0000rmc Csäddl}|j}| |d¡}| |dk¡ ¡}||d8<| |¡}| | |¡dk¡ ¡}| ||d| ||¡¡ ||<| ||jd¡}|  d||d||¡|} | |¡} d|  | | | | ¡} | S)Nrr.é´ihr5gHáz®Ç[@) rrr#r>r?ÚdiffÚabsoluteÚsignÚpiÚcosÚsqrt) ÚlatÚlonrrÚindZiMore180ZdlonÚflagZlatRadZdepZdlatÚdistr r r Ú sw_dist_kmñs &" rzcCs.ddl}t||ƒ}| |¡}| |dd¡}|S)Nrg)rrzÚcumsumÚinsert)rvrurÚdr/r r r ÚdistAlongTracks   r~N) Ú__doc__r rrr+rGrOr]rfrmrzr~r r r r Ús   #Y