o ½L¦g!ã@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 ú8/lfs/h1/ops/prod/packages/nosofs.v3.6.7/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]}||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|dddgddqR|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<s8         ÿ  ÿ€rGcCsrddl}| |d¡}| |jft¡}tdt|ƒƒD]}| |d||k¡ ¡}|j||<q||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]l} | |d| k|d| k@¡ ¡} |  ||f¡}|  ||f¡}|  ||f¡}|  ||f¡}|  ||f¡}|  ||f¡}| j d kr«| g} | D]i}||}||}|||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 <qeqN|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]m}| |¡}|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<qd|}|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