diff --git a/schainpy/.gitignore b/schainpy/.gitignore deleted file mode 100644 index e69de29..0000000 --- a/schainpy/.gitignore +++ /dev/null diff --git a/schainpy/150km_jicamarca.xml b/schainpy/150km_jicamarca.xml deleted file mode 100644 index 95c5465..0000000 --- a/schainpy/150km_jicamarca.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/DBStest.xml b/schainpy/DBStest.xml deleted file mode 100644 index 9573a59..0000000 --- a/schainpy/DBStest.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/JASMET01.xml b/schainpy/JASMET01.xml deleted file mode 100644 index 18f18b6..0000000 --- a/schainpy/JASMET01.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/JASMET02.xml b/schainpy/JASMET02.xml deleted file mode 100644 index 4ad0cde..0000000 --- a/schainpy/JASMET02.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/JASMET04.xml b/schainpy/JASMET04.xml deleted file mode 100644 index 9e2f34f..0000000 --- a/schainpy/JASMET04.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/JASMET05.xml b/schainpy/JASMET05.xml deleted file mode 100644 index 0a2bc25..0000000 --- a/schainpy/JASMET05.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/ProcBLTR.xml b/schainpy/ProcBLTR.xml deleted file mode 100644 index 63dcb27..0000000 --- a/schainpy/ProcBLTR.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/SA2014050.xml b/schainpy/SA2014050.xml deleted file mode 100644 index ade1ed6..0000000 --- a/schainpy/SA2014050.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/__init__.pyc b/schainpy/__init__.pyc index 3efd92745c0989765364905a746a8558bb44eb1f..d21bd3fd61525c7f0179b482540e6464377ab0b4 100644 GIT binary patch delta 56 zc$~Y%_?wZP`7%sj)d+>>>+Jm&nL* zY)+PLW5Vfw896PSl9MYHvT?deT=6y=Hp$J58p^m$4A;uV>6GtU>bNxq>Zap#%4^*; OoDn>Ujb(C&zCHk6ysN1I delta 485 zc${la*dEW${F#?4FJ$sY_G7I4dJGH<`WgATsrso!naSCc3w2c{U(jdS%)xe%5u4;@ z0gg0gth&~6*J2e<3s!G5OZPEh zmGF?$!YVO&r9w7VE4&o%uwj!}9HW8VpvhXfSZy}fR>!8H8>_8Gdg)l>2N-$A0I$4} AxBvhE diff --git a/schainpy/amisr_reader.xml b/schainpy/amisr_reader.xml deleted file mode 100644 index 4fe17fa..0000000 --- a/schainpy/amisr_reader.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/bltr_reader.xml b/schainpy/bltr_reader.xml deleted file mode 100644 index b7226fb..0000000 --- a/schainpy/bltr_reader.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/controller.pyc b/schainpy/controller.pyc index 52fcf7f7a1aa217ddcb954dd6298045b5f93c0b6..aaa94514bc005d95ca6c36e4ab46927a1655b1e1 100644 GIT binary patch delta 2789 zc$|HfTTGH+7{~bl!PvYY(5Zn(w6MN`E|f{?kgOK7NmjENaY#ZM1%zItQ3`4|t+Kan z(oS=0unrr(xtz{g#f7c44qLWv+S)p;by~JIy9(~#Ki9wa|9_wFIlSL<_l$6MTqqSS z=gFvjGAT8Q6b%A_K-U{M?9mHbr#;Y74(?H6=}pK8)VIqk3c$A%#dPi}5_423uNP9Y4cRv%)r zq<$W1UhET-cx^l6d>!rqr$S8U>c(-FVjI0sTw!20UWUyWu0nRYJ_%WWLjW?Bv6{=F z7UMJymv6k2rGsQdZF&F;quf-4%k610WB9IF$t)@5%z7NFuk{pU>ntixOxr9zwmhll z>DSHYu=n(qPq<&Uet=){ZCe7HKHF}G%xzVtr)kJqjC=c4dvp4Td`Al3kk@gMna5vUszwE;}F$u>MWFyWnG}XB( znWog`ma}ggK9GVF6zLgdGP&n9jIQM1Ey#pkn18b5b;H*0>s8}aJ@IMCeEll=*SCvZ z!1TI6$NVw&YLjjY+7>Lp_9S!xGRM*L@L!}2H=>nDODFo2IpAw`K)25PUW$e?B{c2J$`h1M)%?!b7jo*A3FXHvKFl9q5 zie`qp^l8Y_!G}Hk9!FZ=r`?E0|Dww69yUCUp4@>qVgEz znhHPUiHdc6=f75riLIt%%a zs$8LjD!2OZ0vO-ckNrZ`pCKRJJ_}zVu_KC&qBV_>Z>iM^GiY<|DxABAb(OrFtV>|m zqvHEuwW^g9nn%5H6WEe1iO4<3Y&%P4Jq~Urj;$(i6=i zkPo=Jpiy-T*zQAaGZ|~00XzW%J>&^P-g4+J!}HtT!vc%FY%6EH7hoc9`SS59%xu^3 zNiJ+}V7s6CKu>m@X20D09O?PMO5D!r&VI=6bX|s(9Y1Qpm+1R3wIt1wWK){@eye-- zK%?QF0AAa>P6h$zi0af+_)9GNEOb_ \ No newline at end of file diff --git a/schainpy/model/__init__.pyc b/schainpy/model/__init__.pyc index eaea447e7b940b709d620f97c189df8a083d5e08..bad13245b96ef32f3961f60633a0642f33a87994 100644 GIT binary patch delta 38 tc%18C>S1DM{>;mz{m*P7`wC%e1_lQGjQreG{jAjDg3P@9s>F%=ya3q242=K) delta 34 pc%18D>R@7L{>;lYmD^z=`wD(@1_lQGjQreG{nVn&PgC`7gX^r!fX%mDA=n v+Wdp@EDKIaHg*NNW)Sk;zs9l~mMEw>*I$4dhM&80)% diff --git a/schainpy/model/data/jrodata.pyc b/schainpy/model/data/jrodata.pyc index de060a1364febe7407294968e149cb0283263889..69da734985aea1ca9d8a4ba00ae348c46365f8cd 100644 GIT binary patch delta 2427 zc$|Cth;i>zMt0`Uyj+`O=WJv@z#?qVz`&rNk)NBYpOso%keQcXl{lGE+Hf;F>p3Qz zlA;{*uuBFC7*77obsCq($pQK-lbLvYap~RM&vSthr@{023UJE#^GD;dbdoH~`Jum9R(gM@6g2bCj{m0rhPTQjuZCnF-dZ zpT(XiADWnM-mj&OJH@K$Zp4{G#PxpS@qP_XIUa-UI9RA{1 z0H@r!FziJmC{X&sSK^MM^2l|#Lo71}djSVc9Gewm-(YVKfSlx;v`^I|FAaBz##`_b KZ`EQ|Xbb?Fk_tHh delta 2098 zc%0k&l=1B&Mt0`Uyj*!9lQ*&-VBxoBU|`VC$j?pHPc6z!&YoN-Z@8J8^&As6iOCBL z*f*0CJXWSV$-vEG0z1?tcGppE5ItA%^!``5-x!VtQIU2 zIEmdW5A@k5?-I_&DwiO|KDj_7AFEuQH2Y*N(IV_-iZ-U44a(A9xZntbFW?-h7PF9tx!6I%p`ITG=7IW5P5i^~fp@2PH zLGhuaSd23T-Bm2akV{m;7DlF%LzOY(CsE02vWN<{cr)F6PDO?pYwFR{IEyu{Z?@Og z#-6O!>2AcDZWrtQ#Njo}Acf?#?N}|IZFnBLQ`ecE#GaFOn`1^YNPLyW6Lj&-3oR8e z4S}UP9_w>BbBn6Y1)TaEY*VnN{P$SJ4JS{x`-4^dx_uu`J2p7fW3{8ou?<7~p|9y? z4<~l4p|yFkvjArJ!hHG8Z7r_!x%sjC5$qRs3E!Mp3!BFya>W z;O&oEhdmS;V@q*G u!I#5`J>v!EVwNXB2Tk_L!%XlX5Af$>4eQP8^V6^w50Qm0ahADVMaBTUNsmMT diff --git a/schainpy/model/data/jroheaderIO.pyc b/schainpy/model/data/jroheaderIO.pyc index 0f572656c2b1848f18abee8f5093bae3358433d7..b60228abcc998b262facd225192e046d0c1c7e68 100644 GIT binary patch delta 1140 zc%1vNp0Q^mBRlhFUarltb2hS~-;F8y{qs1k?VKAc{dEPM{97nX{w#p;mFiDEp=xST(EtK=`7uKz5Rj?=bz z(zjS}2G{|G>+CoK?7l`0E}f>6`*nZg^!x^WmdTg&X5ozd4f=|>BmV#!%VbHzC3xjo zjSk}UFPE_Z_CN&rH_5C4tA96tw9UkxazK8a=Wqh2+$zVZIOUq1Cg5~txHBux)VO(p zi!V;sY&LYihBI0=d;2)y4%!Akj>$KDlkv!x;FPoQ&&Ox(=Fk2d*i#ZL&YZ*70stA! Bc{>0A delta 984 zc%19m$oOGBBRlhFUaq{5$s5^A+4$`l7#Q?3@^e%5Q;RZ_vnNk9Gnrgq$U6B1TMiaE z)5$gLAz1Z@b3|ej-@Kh;DI!7HGGO^4~^NE)v1%;O8&ztZY-US)rLpXw^*>+z@d1Z z9jgv?%>ryXOef#h{f*Ugiu&`hMjX3=684BIFkFdMJi+J~Ru|reYQU?KA_Nou&pA2O dFBykiDOT~*{sp+q+T0z$fi1KkIrV<{S^%yvIB@^~ diff --git a/schainpy/model/graphics/__init__.pyc b/schainpy/model/graphics/__init__.pyc index b5546cd095df53e4aba0c18ed146cc5144d2bbf4..60164e9e4e05c399e074219d4f846c34d548771c 100644 GIT binary patch delta 40 vc${lz?q+6Z{>;l25jAHcyA-3a3j+g#enx(7s(w~#aY1HYepTXR1IBOw+yD!j delta 36 rc%18IZf9m^{>;nuO4wl|yA&h80|Nttenx(7s(xxwW^(pq6UJ}=tOp6e diff --git a/schainpy/model/graphics/figure.pyc b/schainpy/model/graphics/figure.pyc index f05121eaa43f4ab337454232ce0edf552f11de13..2e359b007c64780aad5ef664355bafd3023816e9 100644 GIT binary patch delta 1076 zc$~Y@&iJN-k)8Q7FIPm=oQdow8JRa;Zg2D>E4wXbb{;kHx5{s!&@ T;OxkSJ1QqQJ-``wo1IkwC;3_d delta 917 zc$|CF!FZ#ck)8Q7FPEH%!$kIzjI0|kax?PVF)%RbXXNLm>ZcZECTDMc&uEJ&XwRI; zgf2Mwy{g6J*Q{lj;*2JfSFruWD*l2!8>{#%j#8}RVVqa7iWhNdF>-94%Tg73Y@^!Rp~v@>o0ubW*v3HFhWcRD6srNDp8& z{hL|5ZyIA!HQMljkygL381U;ZGU06V}tz- YObK9`+kDxP4SO^wI6uG|Anq=z0AM~QYXATM diff --git a/schainpy/model/graphics/jroplot_correlation.pyc b/schainpy/model/graphics/jroplot_correlation.pyc index a99e2bc56acb6b9ed35b3997ccb1bd96796b718a..c7199f5c64cb0de4cb988b52304001503ac909c8 100644 GIT binary patch delta 183 zc%1vF*{Q|O{F#?)bL^ar?EjdA{TUb-^fU5vQ}we_iwiRI@~aXjPZV*T9Lf9&hn(Z) h$t-JdX>{D&&wif^r{q2%4n`c34wFSia&gEd001>_Jzf9+ delta 159 zc%19h`l!jy{F#?4FJ$sY_J2(L-V6*3`WgATsrso!naSCcdxab)M>4;|Ccb$#%Nnd2 eHqU0i&xJ0rxmU=O5sPYv$(ka$Sgm~}A`bx6eKKnR diff --git a/schainpy/model/graphics/jroplot_heispectra.pyc b/schainpy/model/graphics/jroplot_heispectra.pyc index baa36830ab1ccb1cdc7670354e6e8879d19ef7ed..d54e579f4529138f850fa015bbe8744a735abd89 100644 GIT binary patch delta 326 zc$|CZGRu{n`7m1B?8N*Wm)z!Z zmUTEaZZ2lu$BEO_dcp5F`R9s>9@P(FU9v)x;(<;*{i&c*TxQax~? delta 274 zc$}N%`p$)&`7~ER)y%-o6^fU5vQ}t7eGLy3>JFqxRc4vNuF231;1yk{6 z2ll_57=i(UW{g;jwcmV0$OW5y_LK8O8?kC|6q|zGBz1|`>{v}oQFww?e3oJtR-cwD GDFXnQRZ^h< diff --git a/schainpy/model/graphics/jroplot_parameters.pyc b/schainpy/model/graphics/jroplot_parameters.pyc index fc133def4a52af66fe67fdaa422584c5df04f05d..2d9cd01a01aaedd9667cdf72ad82998927cbd5fa 100644 GIT binary patch delta 1634 zc$_=Bl6mQBW_IS!yj+`O=WJx3$Rg~=z`&rNk)NBYpOso%keQcXl{k6fdY8$sSzch3 z+h}ONS&?ln6E4ZgJe*~WvYVSZ7x3ZKUnpVCh(pq0^KVH9?1qC})hBZbr^e;7X1HAC zve`gkBNuj4tz0&nXtUyWPlt{^ZufBM<93g-K|L;0dl~sR+ZzRQV3Xdw(8>t6Ym{u( z;C79o{Un?knH=`wGSy|XkkcF&0)&iINkFz z(HpmWCMRFV?Vi19xZN`^ofl{7nfxy^m{ECiP?k6^PFL+I&&Tbms>*lRB|)y*U3~zj z##1$ZxYKlYy)5oDeY;Z&w|hdmkKqob+&zU-KB3bAIB~^l}591pQ)DH1438woe6j&~P63 nf;(se4sXRB$4BtEC-_((Zufk@sE5-%lS?k2#aZU|`VC$j?pHPc6z!&Yt`*&1Ld?mKRvW?Kf+( z&1J$SFPw%j9J;r?6@`ENg~MgTrPYg{@pz zB|@}0vD>{tM<2W0X8PFe4mPOAYSLs?BVR^=&BaE+99X3#tv_KkFV1ESb_XQdPr|Cf z&0#NguY@@*;K3^4>F>WUl0SAG-;=Lnv-=uW z#atP@SR;ILR#rHp`sPDf;=EY(=~NVBxBXM)J8Tjzlg(=mVAbGN>xVtby{=cpp5)@Y z^sw9gp!*p1Q2*P9J=7od@5FA>yNPnxLp^@38Fn2n<}JW(_x*((ST*cg)P>!o=}Rox zu||pVnzvXrB(Hsp-Rij;wqn(=bR&+$wq$cWc5jF6*TB%RdEx;RW~}zg9Kmj{%26El ZDjyHUZtv+!M%c@QfGcOQmX!Hd%>cIr?3@4q diff --git a/schainpy/model/graphics/jroplot_spectra.pyc b/schainpy/model/graphics/jroplot_spectra.pyc index 23c18722e4f7fcef15be8a19847bcd3ba2173410..af6bc305f4505c6ac39b84839e78cdbb2c679f87 100644 GIT binary patch delta 1352 zc$_=7nd#RSCU)k}yj+`O=WJxJU=j9aU|`VC$j?pH&q^&W$jr;HN}T*~n(gEXGAxtN zv%J6|Z?l<+Z5|UY$;q!d${1xgCvmRf!>K<~!k!VA<(r>KCg3t0mJmZc;T(DurzF@-%fgFrYEFqL$8EBDR52SaH%)$( za1p0Q_N2r3og|fl+etT4@HlC9+8NwV+MatCr^W|)3-QO?#X{Wae0kAITu!ptJiDX; zXV%=DR=xzcXTmBuIBfA`d@Y9E zn+^3ku&d@YSc~0WF5^j9HM}u4$L4d}$;DVnPYo=36U9S~xO-R_H_S1~0(cK-@5!m43UL^*bonxl%@u-QG?EAb*$ z4cSSDv01$tt74Z_9M*EDpTTaecHUjA8Y1!+Vh?TKqAsi&)QeYQv)X2}d}#yLEU@`q z`4a4oeN@T8fz`2gO<%DGYV#57j-B1sgH=O$dk=Q2gF9`o`{G{LU#vPNYxlY`Dr_$7 b<;0$(&P~_HuFrSoI;;hQd@1W>|5@4qIwoXu diff --git a/schainpy/model/graphics/jroplot_voltage.pyc b/schainpy/model/graphics/jroplot_voltage.pyc index 0818d3b463d32f22e917c9e63e112e59cf960fa5..7fbd1ae6532770cabcbb7029797e44c10d82fd59 100644 GIT binary patch delta 245 zc%1vMJ715T`7|dCK-53}c^fU5vQ}we_iwiRI@~aXjD+-xUmgi!f?8e-L zL*8OCKTA1IIe#(M&6ik=8F4D`VXMMr@n#+^Bpk~E)OFE|;8 z+!374)Db?3(>!aD3Y-r4CBlc>@BU)AEHs}SDLw(GJ_Cs*IDvIVz=Po>NO%bA+X delta 422 zc$|A+Hph&e`7vWX5LFW^X<&Y!c>^=L=58YIUtp4_5II;geX+ rNf)WWYO$6mA2z?)PVNxfkJX@w;uEl1oFlOWtCyoBTQDv7D3uQY71)6O diff --git a/schainpy/model/graphics/mpldriver.pyc b/schainpy/model/graphics/mpldriver.pyc index 990a1ef6bf84397bfb6894ba613cda8bd3e55867..ebe170b62ca3b59f138b0cf767ef7cd6799e1289 100644 GIT binary patch delta 800 zc$_;}xUq7Pv6~nuYdu*(^e9fhYm2SH=}cMijm$VDMWpqZusS7B_99lNY&Mi%jyp)?6ldX< z{HNr@f>UyWx<786s+!kvdBJS6qi!y4onQ0cw_bailhuqb VawVqCIGt)^b_l0yCc9YF0s!-D1ttIh delta 711 zc%0i<+Gc%b-3W~>rE(t1qT0(bKX*=ZP7Y%Y{vj@`#einFjwxGDRvV3oL| z?vGtZspfTTPBq&+RW}#A4j=sh>=Mrmys>!>6r|jf+l((`vu5%llaE-%@0d1Yb=C^A LL)hbDi$yH}W8u*C diff --git a/schainpy/model/graphics/plotting_codes.pyc b/schainpy/model/graphics/plotting_codes.pyc index 62aff87217f0b934514b3be1682d24da3b00d19b..ee17425f5bbcbe107ef0db86a29c3301c0b8a0c7 100644 GIT binary patch delta 40 vc%1vi`j3^J`7E!tv+4C3$co-NMl5$FlJpJPf5{nXZCzmiPDr*1*84yIV9gxt^ W$j?pH&q^&W$jr;HN}PO*F%kd=#uO|7 delta 74 zc${0rGM|N=`7 dateFile) or (endDate < dateFile): + continue + + self.fileList.append(thisFile) + self.dateFileList.append(dateFile) + + return + + def setNextFile(self): + + file_id = self.fileIndex + + if file_id == len(self.fileList): + print '\nNo more files in the folder' + print 'Total number of file(s) read : {}'.format(self.fileIndex + 1) + self.flagNoMoreFiles = 1 + return 0 + + print '\n[Setting file] (%s) ...' % self.fileList[file_id] + filename = os.path.join(self.path, self.fileList[file_id]) + + dirname, name = os.path.split(filename) + self.siteFile = name.split('.')[0] # 'peru2' ---> Piura - 'peru1' ---> Huancayo or Porcuya + if self.filename is not None: + self.fp.close() + self.filename = filename + self.fp = open(self.filename, 'rb') + self.header_file = numpy.fromfile(self.fp, FILE_HEADER_STRUCTURE, 1) + self.nrecords = self.header_file['nrec'][0] + self.sizeOfFile = os.path.getsize(self.filename) + self.counter_records = 0 + self.flagIsNewFile = 0 + self.fileIndex += 1 + + return 1 + + def readNextBlock(self): + + while True: + if self.counter_records == self.nrecords: + self.flagIsNewFile = 1 + if not self.setNextFile(): + return 0 + + self.readBlock() + + if (self.datatime.time() < self.startTime) or (self.datatime.time() > self.endTime): + print "[Reading] Record No. %d/%d -> %s [Skipping]" %( + self.counter_records, + self.nrecords, + self.datatime.ctime()) + continue + break + + print "[Reading] Record No. %d/%d -> %s" %( + self.counter_records, + self.nrecords, + self.datatime.ctime()) + + return 1 + + def readBlock(self): + + pointer = self.fp.tell() + header_rec = numpy.fromfile(self.fp, REC_HEADER_STRUCTURE, 1) + self.nchannels = header_rec['nchan'][0]/2 + self.kchan = header_rec['nrxs'][0] + self.nmodes = header_rec['nmodes'][0] + self.nranges = header_rec['nranges'][0] + self.fp.seek(pointer) + self.height = numpy.empty((self.nmodes, self.nranges)) + self.snr = numpy.empty((self.nmodes, self.nchannels, self.nranges)) + self.buffer = numpy.empty((self.nmodes, 3, self.nranges)) + + for mode in range(self.nmodes): + self.readHeader() + data = self.readData() + self.height[mode] = (data[0] - self.correction) / 1000. + self.buffer[mode] = data[1] + self.snr[mode] = data[2] + + self.counter_records = self.counter_records + self.nmodes + + return + + def readHeader(self): + ''' + RecordHeader of BLTR rawdata file + ''' + + header_structure = numpy.dtype( + REC_HEADER_STRUCTURE.descr + [ + ('antenna_coord', 'f4', (2, self.nchannels)), + ('rx_gains', 'u4', (self.nchannels,)), + ('rx_analysis', 'u4', (self.nchannels,)) + ] + ) + + self.header_rec = numpy.fromfile(self.fp, header_structure, 1) + self.lat = self.header_rec['lat'][0] + self.lon = self.header_rec['lon'][0] + self.delta = self.header_rec['delta_r'][0] + self.correction = self.header_rec['dmode_rngcorr'][0] + self.imode = self.header_rec['dmode_index'][0] + self.antenna = self.header_rec['antenna_coord'] + self.rx_gains = self.header_rec['rx_gains'] + self.time1 = self.header_rec['time'][0] + tseconds = self.header_rec['time'][0] + local_t1 = time.localtime(tseconds) + self.year = local_t1.tm_year + self.month = local_t1.tm_mon + self.day = local_t1.tm_mday + self.t = datetime.datetime(self.year, self.month, self.day) + self.datatime = datetime.datetime.utcfromtimestamp(self.time1) + + def readData(self): + ''' + Reading and filtering data block record of BLTR rawdata file, filtering is according to status_value. + + Input: + status_value - Array data is set to NAN for values that are not equal to status_value + + ''' + + data_structure = numpy.dtype( + DATA_STRUCTURE.descr + [ + ('rx_saturation', 'u4', (self.nchannels,)), + ('chan_offset', 'u4', (2 * self.nchannels,)), + ('rx_amp', 'u4', (self.nchannels,)), + ('rx_snr', 'f4', (self.nchannels,)), + ('cross_snr', 'f4', (self.kchan,)), + ('sea_power_relative', 'f4', (self.kchan,))] + ) + + data = numpy.fromfile(self.fp, data_structure, self.nranges) + + height = data['range'] + winds = numpy.array((data['zonal'], data['meridional'], data['vertical'])) + snr = data['rx_snr'].T + + winds[numpy.where(winds == -9999.)] = numpy.nan + winds[:, numpy.where(data['status'] != self.status_value)] = numpy.nan + snr[numpy.where(snr == -9999.)] = numpy.nan + snr[:, numpy.where(data['status'] != self.status_value)] = numpy.nan + snr = numpy.power(10, snr / 10) + + return height, winds, snr + + def set_output(self): + ''' + Storing data from databuffer to dataOut object + ''' + + self.dataOut.time1 = self.time1 + self.dataOut.data_SNR = self.snr + self.dataOut.height= self.height + self.dataOut.data_output = self.buffer + self.dataOut.utctimeInit = self.time1 + self.dataOut.utctime = self.dataOut.utctimeInit + self.dataOut.counter_records = self.counter_records + self.dataOut.nrecords = self.nrecords + self.dataOut.useLocalTime = False + self.dataOut.paramInterval = 157 + self.dataOut.timezone = self.timezone + self.dataOut.site = self.siteFile + self.dataOut.nrecords = self.nrecords + self.dataOut.sizeOfFile = self.sizeOfFile + self.dataOut.lat = self.lat + self.dataOut.lon = self.lon + self.dataOut.channelList = range(self.nchannels) + self.dataOut.kchan = self.kchan + # self.dataOut.nHeights = self.nranges + self.dataOut.delta = self.delta + self.dataOut.correction = self.correction + self.dataOut.nmodes = self.nmodes + self.dataOut.imode = self.imode + self.dataOut.antenna = self.antenna + self.dataOut.rx_gains = self.rx_gains + self.dataOut.flagNoData = False + + def getData(self): + ''' + Storing data from databuffer to dataOut object + ''' + if self.flagNoMoreFiles: + self.dataOut.flagNoData = True + print 'No file left to process' + return 0 + + if not(self.readNextBlock()): + self.dataOut.flagNoData = True + return 0 + + self.set_output() + + return 1 diff --git a/schainpy/model/io/io_bltr_block.py b/schainpy/model/io/io_bltr_block.py deleted file mode 100644 index 56697a4..0000000 --- a/schainpy/model/io/io_bltr_block.py +++ /dev/null @@ -1,950 +0,0 @@ -''' -Created on Nov 9, 2016 - -@author: roj- LouVD -''' - -import numpy -import os.path -import sys -import time -import datetime -from sys import path -from os.path import dirname -from mimify import HeaderFile -from numpy import size, asarray -from datetime import datetime -from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation -from schainpy.model.data.jrodata import Parameters -from schainpy.model.data.jroheaderIO import RadarControllerHeader, SystemHeader -from schainpy.model.graphics.jroplot_parameters import WindProfilerPlot -from schainpy.model.io.jroIO_base import * - -import schainpy -#import madrigal -#import madrigal.cedar -#from madrigal.cedar import MadrigalCatalogRecord - -import warnings -from time import gmtime -from math import floor - -warnings.simplefilter("error") -from numpy.lib.nanfunctions import nansum -warnings.simplefilter('ignore', FutureWarning) - - -class testBLTRReader(ProcessingUnit): - - - def __init__(self, **kwargs): - - path = None - startDate = None - endDate = None - startTime = None - endTime = None - startTime = None - endTime = None - - isConfig = False - dataOut = None - walk = None - ext = 'swwma' - fileList = [] - fileIndex = -1 - timezone = None - filename = None - - timearray = None - height = None - snr_ref = None - zon_ref = None - ver_ref = None - mer_ref = None - nmodes = None - nchannels = None - nranges = None - year = None - month = None - day = None - lat = None - lon = None - siteFile = None - - ProcessingUnit.__init__(self , **kwargs) - self.dataOut = self.createObjByDefault() - self.imode = 0 - self.counter_records = 0 - - self.isConfig = False - self.flagNoMoreFiles = 0 - - self.buffer = None - - - def createObjByDefault(self): - - dataObj = Parameters() - - return dataObj - - def info(self): - ''' - Experience information - - ''' - self.hoy = datetime.datetime.now() - place = 'Jicamarca Radio Observatory' - signalchainweb='http://jro-dev.igp.gob.pe:3000/projects/signal-chain/wiki/Manual_de_Desarrollador' - print '{} at {}'.format(self.hoy,place) - print 'Boundary Layer and Tropospheric Radar (BLTR) script, Wind velocities and SNR from *.sswma files' - print '{} \n'.format(signalchainweb) - - def run(self, path, startDate, endDate, ext, startTime, endTime, queue=None): - - if not(self.isConfig): - self.setup(path, startDate, endDate, ext) - self.isConfig = True - - self.getData() - - def setup(self, - path=None, - startDate=None, - endDate=None, - ext=None, - startTime=datetime.time(0, 0, 0), - endTime=datetime.time(23, 59, 59), - timezone=0): - - self.info() - self.path = path - if self.path == None: - raise ValueError, "The path is not valid" - - if ext == None: - ext = self.ext - - self.searchFiles(self.path, startDate, endDate, ext) - - self.timezone = timezone - self.ext = ext - self.fileIndex = -1 - - if not(self.fileList): - raise Warning, "There is no files matching these date in the folder: %s. \n Check 'startDate' and 'endDate' "%(path) - - - if not(self.setNextFile()): - - print 'not next file' - if (startDate!=None) and (endDate!=None): - print "No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime()) - elif startDate != None: - print "No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime()) - else: - print "No files" - - sys.exit(-1) - - def searchFiles(self, path, startDate, endDate, ext=None): - ''' - Searching for BLTR rawdata file in path - Creating a list of file to proces included in [startDate,endDate] - - Input: - path - Path to find BLTR rawdata files - startDate - Select file from this date - enDate - Select file until this date - ext - Extension of the file to read - - ''' - - fullpath = path - foldercounter = 0 - - print 'Searching file in %s ' % (fullpath) - fileList0 = glob.glob1(fullpath, "*%s" % ext) - fileList0.sort() - - self.fileList = [] - self.dateFileList = [] - - for thisFile in fileList0: - year = thisFile[-14:-10] - if not isNumber(year): - continue - - month = thisFile[-10:-8] - if not isNumber(month): - continue - - day = thisFile[-8:-6] - if not isNumber(day): - continue - - year, month, day = int(year), int(month), int(day) - dateFile = datetime.date(year, month, day) - - if not ((startDate <= dateFile) and (endDate > dateFile)): - continue - - self.fileList.append(thisFile) - self.dateFileList.append(dateFile) - - return 1 - - - def setNextFile(self): - - idFile = self.fileIndex - - while (True): - idFile += 1 - if idFile >= len(self.fileList): - print '\nNo more files in the folder' - print 'Total number of file(s) read : {}'.format(self.fileIndex + 1) - print 'Time of processing : {}'.format(datetime.datetime.now()- self.hoy) - self.flagNoMoreFiles = 1 - return 0 - if self.isConfig: print '------------------------[Next File]---------------------------' - filename = os.path.join(self.path, self.fileList[idFile]) - self.Open(filename) - - print '\n[Setting file] (%s) ...' % self.fileList[idFile] - - break - - self.flagIsNewFile =0 - - self.fileIndex = idFile - self.filename = filename - print 'File:',self.filename - - return 1 - - def readDataBlock(self): - - - self.readHeader() - self.dataRecords(0) - - print '[New Record] record: {} /{} // file {}/{}'.format(self.counter_records,self.nrecords,self.fileIndex+1,len(self.fileList)) - - self.setDataBuffer() - - self.flagIsNewBlock = 1 - - if self.counter_records > self.nrecords: - self.flagIsNewFile = 1 - return 0 - - return 1 - - def setDataBuffer(self): - - ''' - Storing data from one block - - ''' - self.t = datetime.datetime(self.year, self.month, self.day) - self.doy = time.localtime(time.mktime(self.t.timetuple())).tm_yday - self.buffer = numpy.squeeze(numpy.array([[self.one_snr],[self.one_zonal],[self.one_vertical],[self.one_meridional], - [self.time],[self.height],[self.fileIndex], - [self.year],[self.month],[self.day],[self.t],[self.doy]])) - - self.dataOut.time1 = self.time1 - - def Open(self, filename): - ''' - Opening BLTR rawdata file defined by filename - - Inputs: - - filename - Full path name of BLTR rawdata file - - ''' - [dir, name] = os.path.split(filename) - strFile = name.split('.') - self.siteFile = strFile[0] # 'peru2' ---> Piura - 'peru1' ---> Huancayo or Porcuya - - self.filename = filename - if os.path.isfile(self.filename) == False: - print 'File do not exist. Check "filename"' - sys.exit(0) - - self.h_file = numpy.dtype([ - ('FMN', '= 0., self.dataOut.height[0, :] <= self.hcm, numpy.isfinite(self.dataOut.height[0, :]))) - else: - h_select = numpy.where(numpy.bitwise_and(self.dataOut.height[0, :] >= 0., self.dataOut.height[0, :] < 20, numpy.isfinite(self.dataOut.height[0, :]))) - - ht = h_select[0] - - self.o_height = self.dataOut.height[self.im, ht] - self.o_zon = self.z_zon[ht, self.im] - self.o_mer = self.z_mer[ht, self.im] - self.o_ver = self.z_ver[ht, self.im] - o_snr = self.dataOut.data_SNR[ :, :, self.im] - - o_snr = o_snr[ht, :] - - ndiv = numpy.nansum((numpy.isfinite(o_snr)), 1) - ndiv = ndiv.astype(float) - - sel_div = numpy.where(ndiv == 0.) - ndiv[sel_div] = numpy.nan - - if self.nchannels > 1: - msnr = numpy.nansum(o_snr, axis=1) - else: - msnr = o_snr - - try: - self.msnr = 10 * numpy.log10(msnr / ndiv) - except ZeroDivisionError: - self.msnr = 10 * numpy.log10(msnr /1) - print 'Number of division (ndiv) egal to 1 by default. Check SNR' - - time_t = time.gmtime(self.dataOut.time1) - year = time_t.tm_year - month = time_t.tm_mon - day = time_t.tm_mday - hour = time_t.tm_hour - minute = time_t.tm_min - second = time_t.tm_sec - timedate_0 = datetime.datetime(year, month, day, hour, minute, second) - - # 1d parameters - GDLATR = self.lat - GDLONR = self.lon - GDLAT2 = self.lat - GLON2 = self.lon - - # 2d parameters - GDALT = self.o_height - - SNL = self.msnr - VN1P2 = self.o_zon - VN2P2 = self.o_mer - EL2 = self.o_ver - NROW = len(self.o_height) - - startTime = timedate_0 - endTime = startTime - self.dataRec = madrigal.cedar.MadrigalDataRecord(self.kinst, - self.kindat, - startTime.year, - startTime.month, - startTime.day, - startTime.hour, - startTime.minute, - startTime.second, - 0, - endTime.year, - endTime.month, - endTime.day, - endTime.hour, - endTime.minute, - endTime.second, - 0, - ('gdlatr', 'gdlonr', 'gdlat2', 'glon2'), - ('gdalt', 'snl', 'vn1p2', 'vn2p2', 'el2'), - NROW, ind2DList=['gdalt']) - - # Setting 1d values - self.dataRec.set1D('gdlatr', GDLATR) - self.dataRec.set1D('gdlonr', GDLONR) - self.dataRec.set1D('gdlat2', GDLAT2) - self.dataRec.set1D('glon2', GLON2) - - # Setting 2d values - for n in range(self.o_height.shape[0]): - self.dataRec.set2D('gdalt', n, GDALT[n]) - self.dataRec.set2D('snl', n, SNL[n]) - self.dataRec.set2D('vn1p2', n, VN1P2[n]) - self.dataRec.set2D('vn2p2', n, VN2P2[n]) - self.dataRec.set2D('el2', n, EL2[n]) - - # Appending new data record - ''' - [MADRIGAL3]There are two ways to write to a MadrigalCedarFile. Either this method (write) is called after all the - records have been appended to the MadrigalCedarFile, or dump is called after a certain number of records are appended, - and then at the end dump is called a final time if there were any records not yet dumped, followed by addArray. - ''' - - self.cedarObj.append(self.dataRec) - print ' [Writing] records {} (mode {}).'.format(self.dataOut.counter_records,self.im+1) - self.cedarObj.dump() - - - - - def setHeader(self): - ''' - - Creating self.catHeadObj - - Adding information catalog - - Writing file header - - ''' - self.catHeadObj = madrigal.cedar.CatalogHeaderCreator(self.fullname) - kindatDesc, comments, analyst, history, principleInvestigator = self._info_BLTR() - - self.catHeadObj.createCatalog(principleInvestigator="Jarjar", - expPurpose='characterize the atmospheric dynamics in this region where frequently it happens the El Nino', - sciRemarks="http://madrigal3.haystack.mit.edu/static/CEDARMadrigalHdf5Format.pdf") - - self.catHeadObj.createHeader(kindatDesc, analyst, comments, history) - - self.catHeadObj.write() - - print '[File created] path: %s' % (self.fullname) - - def putData(self): - - if self.dataOut.flagNoData: - return 0 - - if self.dataOut.counter_records == 1: - self.setFile() - print '[Writing] Setting new hdf5 file for the mode {}'.format(self.im+1) - - if self.dataOut.counter_records <= self.dataOut.nrecords: - self.writeBlock() - - - if self.dataOut.counter_records == self.dataOut.nrecords: - self.cedarObj.addArray() - - self.setHeader() - self.flagIsNewFile = 1 - - def _info_BLTR(self): - - kindatDesc = '''--This header is for KINDAT = %d''' % self.kindat - history = None - analyst = '''Jarjar''' - principleInvestigator = ''' - Jarjar - Radio Observatorio de Jicamarca - Instituto Geofisico del Peru - - ''' - if self.type == 1: - comments = ''' - - --These data are provided by two Boundary Layer and Tropospheric Radar (BLTR) deployed at two different locations at Peru(GMT-5), one of them at Piura(5.17 S, 80.64W) and another located at Huancayo (12.04 S, 75.32 W). - - --The purpose of conducting these observations is to measure wind in the differents levels of height, this radar makes measurements the Zonal(U), Meridional(V) and Vertical(W) wind velocities component in northcoast from Peru. And the main purpose of these mensurations is to characterize the atmospheric dynamics in this region where frequently it happens the 'El Nino Phenomenon' - - --In Kindat = 1600, contains information of wind velocities component since 0 Km to 3 Km. - - --In Kindat = 1601, contains information of wind velocities component since 0 Km to 10 Km. - - --The Huancayo-BLTR is a VHF Profiler Radar System is a 3 channel coherent receiver pulsed radar utilising state-of-the-art software and computing techniques to acquire, decode, and translate signals obtained from partial reflection echoes in the troposphere, lower stratosphere and mesosphere. It uses an array of three horizontal spaced and vertically directed receiving antennas. The data is recorded thirty seconds, averaged to one minute mean values of Height, Zonal, Meridional and Vertical wind. - - --The Huancayo-BLTR was installed in January 2010. This instrument was designed and constructed by Genesis Soft Pty. Ltd. Is constituted by three groups of spaced antennas (distributed) forming an isosceles triangle. - - - Station _______ Geographic Coord ______ Geomagnetic Coord - - _______________ Latitude _ Longitude __ Latitude _ Longitude - - Huancayo (HUA) __12.04 S ___ 75.32 W _____ -12.05 ____ 352.85 - Piura (PIU) _____ 5.17 S ___ 80.64 W ______ 5.18 ____ 350.93 - - WIND OBSERVATIONS - - --To obtain wind the BLTR uses Spaced Antenna technique (e.g., Briggs 1984). The scatter and reflection it still provided by variations in the refractive index as in the Doppler method(Gage and Basley,1978; Balsley and Gage 1982; Larsen and Rottger 1982), but instead of using the Doppler shift to derive the velocity components, the cross-correlation between signals in an array of three horizontally spaced and vertically directed receiving antennas is used. - - ...................................................................... - For more information, consult the following references: - - Balsley, B. B., and K. S. Gage., On the use of radars for operational wind profiling, Bull. Amer. Meteor.Soc.,63, 1009-1018, 1982. - - - Briggs, B. H., The analysis of spaced sensor data by correations techniques, Handbook for MAP, Vol. 13, SCOTEP Secretariat, University of Illinois, Urbana, 166-186, 1984. - - - Gage, K. S., and B.B. Balsley., Doppler radar probing of the clear atmosphere, Bull. Amer. Meteor.Soc., 59, 1074-1093, 1978. - - - Larsen, M. F., The Spaced Antenna Technique for Radar Wind Profiling, Journal of Atm. and Ocean. Technology. , Vol.6, 920-937, 1989. - - - Larsen, M. F., A method for single radar voracity measurements?, Handbook for MAP,SCOSTEP Secretariat, University of the Illinois, Urban, in press, 1989. - ...................................................................... - - ACKNOWLEDGEMENTS: - - --The Piura and Huancayo BLTR are part of the network of instruments operated by the Jicamarca Radio Observatory. - - --The Jicamarca Radio Observatory is a facility of the Instituto Geofisico del Peru operated with support from the NSF Cooperative Agreement ATM-0432565 through Cornell University - - ...................................................................... - - Further questions and comments should be addressed to: - Radio Observatorio de Jicamarca - Instituto Geofisico del Peru - Lima, Peru - Web URL: http://jro.igp.gob.pe - ...................................................................... - ''' - - return kindatDesc, comments, analyst, history, principleInvestigator - diff --git a/schainpy/model/io/io_bltr_block.pyc b/schainpy/model/io/io_bltr_block.pyc index 54881e7746dbb708aaa0f62c84ab515498c293dd..93fad43b2dcd5805b8f37a01372f5a1589afb2d0 100644 GIT binary patch literal 11326 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 HO_u);*=R9o literal 30661 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 %s" %(self.nReadBlocks, -# self.processingHeaderObj.dataBlocksPerFile, -# self.dataOut.datatime.ctime()) + if self.verbose: + print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks, + self.processingHeaderObj.dataBlocksPerFile, + self.dataOut.datatime.ctime()) return 1 def __readFirstHeader(self): diff --git a/schainpy/model/io/jroIO_base.pyc b/schainpy/model/io/jroIO_base.pyc index 2bdffe7820075be7b69831065a88be75de8084c4..4832fae3fcca3340e1d1c61e2b65f4c9510eacfb 100644 GIT binary patch delta 2418 zc$|flZERCz6vywmZP)c>ec9S{Fx`YO#mPXnc{iW~){ueA41+C;%VgVSyLPvBZEcGi zWn1wDh6Eh$WZ4HTXq@N=C7TaQjGE{YM*;?e#z5i{iI}M*lE4xijATCT=X>ghCe6RU zoc^D4&i`DvB2HWtjk<+A^WwfU)5dvy!FE9qHuQ%3lnntT7Ewdtgp8{OD{#HR3M<(b z!(#>#dDrZOay(})2NCDYACuho7ALggHA@K?*uR#~j3juv*lKQ3`;@(M$ggydxl|BY z!1WGovVMgJE@Q`vC%A)vYmkX6+iCc8u^SfH`Ql$iO{8u@vip^Iy&6>Nqv5`0CH^S8 zx$2;ftd}bFz&7@I>BSrp`DUF9RQze(6;0y(>I%aqu2158`9+eb<@%>=VZ8%LWGmM% z;ImKvK@yv}KEq-gQ`$wiS6eREJ3G~o8t?41iep1X_+FxteA(?vBRKG0C6dIYDkr#b zuIg~MZr25a;eMs3F6xgJv8iW%r`{;R5A1sNKib2X9+99PE#3~oi-hOA`Ou8td3Td; z_td(fjrnV<>2?3jR|xyqqVEnp@3ICDOfg@>G}&feB^SMo4!F;rYwV+=u+;1U4=ZRX z(_YpzGTds1m)Tpb9__C14&$vh8ysQx+x{Z`Fw~(xVdB5{1yIv4tt2rR(Okf4QnEsf>HKGYj;D#L0 zkojhULSW1Lx6zj&>32gJ8~2;(u-^zcpn=^9Jk+j|&e#~&53|b13^`S^f$K3PejxHE z+dgntyUBG43EFWW(N0da@Q@8cxIFkswuD-ZT;~Z(&o%l#@Gf{IE0KQPk6cf1sxeE8 z^muB>3d5Kh8X+lVxBy<`L^Vzg?FUSH`zED?L%ZEGZD>--eaRAhPRP`VF!y3u} delta 2130 zc${^VZA@Eb6vumRU(@vU!UAZs!UvSN$x9s_Gp%!CgiXTOY__B>kW0CPOIr%JZEB@J z>&tL2BH1CjXht-F4L{6)kC{eeOxy?5Y*VMpV*Fq?oepAY}v zdCqg5=lsuo&` z-E6zL)=Y#2amnt4Mm%f3AB?zWU!r0fm2^Z&$~#B)N+W~vejbo^@x>rGpc+hqNzm4q znJXgyEX?S5+p5dcG8DvrD!ed&o=OFb?CHwa$ht9FQw8Tyt+|&6y;^fcA9OpD&HkvA zk;@gWv-2Cj706`2)QPZ>{acqelK8{=DtMS(u3xo~`1{S3FpM`hU)0g-rGR-G*A~&$ zxJuG6*WP0OCJ&JKA+EiL`Q|l}KFGCm>~zaX{bsGM!w)zFr+~GEZVKCsTvM|nUJPtO zvgfW=Cu~4pYmwSsq4jo9&g@7eQaO2GhdP+{vGvv;=z9!u?ES)~r?_x-V2ztZ2$sWHM_Cl0>5Z+1|H-KB)tD%?mv|p!t*B7zj%q};qu=!mp^fS(N zRl{HGOjlCx*4r7Xpqk|(_tDn6y3Y+NyScB5w$|RL2#1&)y+)lKbmb%^!woDwl1Rnk zXV}7l%lf#Mp*GKOHaQwebxG+=Ir1F)y0@OHC+Oe zkF#&$xAZ$TOC0A~iTTGqCSTpI{YLmjvZL2nbN+YQbYF1o04BztB+qvgL`b2(pm$ZN z5Qa2K>LxlNM-uJ4&$%|vsSo{=&9s#!JuroflhY&}o2r0k@%gDql6Dp=VY-|>Uks3Q zvR)M7C|XNbi0XoXtl=5LWm@5JuD#Bp&pk!sV_fqy-=R}_NBuv%KcaMmdaiAF`mh^* zCaE^OyN`I`HX6YDwL2*um5W~5z=$E{}wLNV4<;pa&47K3+6jF_!cfNo+YV+kNYLIe5!-4DztPD2pC)1 F@*l3>rf>iN diff --git a/schainpy/model/io/jroIO_bltr.py b/schainpy/model/io/jroIO_bltr.py index ac987de..fe46699 100644 --- a/schainpy/model/io/jroIO_bltr.py +++ b/schainpy/model/io/jroIO_bltr.py @@ -10,10 +10,9 @@ import matplotlib.pyplot as plt import pylab as plb from scipy.optimize import curve_fit -from scipy import asarray as ar,exp +from scipy import asarray as ar, exp from scipy import stats -from duplicity.path import Path from numpy.ma.core import getdata SPEED_OF_LIGHT = 299792458 @@ -427,7 +426,7 @@ class RecordHeaderBLTR(Header): return 1 -class BLTRReader (ProcessingUnit, FileHeaderBLTR, RecordHeaderBLTR, JRODataReader): +class BLTRSpectraReader (ProcessingUnit, FileHeaderBLTR, RecordHeaderBLTR, JRODataReader): path = None startDate = None @@ -456,7 +455,7 @@ class BLTRReader (ProcessingUnit, FileHeaderBLTR, RecordHeaderBLTR, JRODataReade #Eliminar de la base la herencia ProcessingUnit.__init__(self, **kwargs) -# self.isConfig = False + #self.isConfig = False #self.pts2read_SelfSpectra = 0 #self.pts2read_CrossSpectra = 0 @@ -1151,43 +1150,5 @@ class BLTRReader (ProcessingUnit, FileHeaderBLTR, RecordHeaderBLTR, JRODataReade -class BLTRWriter(ProcessingUnit): - ''' - classdocs - ''' - - def __init__(self): - ''' - Constructor - ''' - self.dataOut = None - - self.isConfig = False - - def setup(self, dataIn, path, blocksPerFile, set=0, ext=None): - ''' - In this method we should set all initial parameters. - - Input: - dataIn : Input data will also be outputa data - - ''' - self.dataOut = dataIn - - self.isConfig = True - - return - - def run(self, dataIn, **kwargs): - ''' - This method will be called many times so here you should put all your code - - Inputs: - - dataIn : object with the data - - ''' - - if not self.isConfig: - self.setup(dataIn, **kwargs) + diff --git a/schainpy/model/io/jroIO_bltr.pyc b/schainpy/model/io/jroIO_bltr.pyc index f9676dd2718ff9e7c1ef67023db3d93a8be14671..2ed5c685f2b7ab68155f2c0dc833fb9dad14fcab 100644 GIT binary patch delta 5142 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 delta 1386 zc$~X_gz@tsMt0`Uyj(TX4jb9+nE9O;7#Q?3@^e%5Q;RZ_vnMyIS!|xbY{rO1!e+B5 zs{}R)i_H~mOR(ygoXv3vn}*31oRhJNhjAUjDxS(cA4B}3ki}$wp0`-V+j(bWbx$E* zB3AQd`2(<;vxEOAHu23T1e!5D4AL-7$OBz`^G6{|Cak8Eir&DC0Yg8V$#W!6V|C^x zDNJvHY@H!}6RQP#WbCoWi49k zH#PZysRI%)cd)u|y2VT^f#tBd+0q1SirUO%{e~68p^T1YELc?^a&^G!(8<2;xmZ2G z>Y;?a6e#jugK3hXFJ^u-^qYp&03rWk?1}G6z2mPxV(0Ic4*=>Px# diff --git a/schainpy/model/io/jroIO_hf.pyc b/schainpy/model/io/jroIO_hf.pyc index 22b31099a57616b37a6cc8cda9bfcdc1301a4079..b6e063ef163fc91cb7870f155c109958542839f8 100644 GIT binary patch delta 1040 zc$}L!i*fF3Mt0`Uyj&4cb2hRsU>3GxU|`VC$j?pH&q^&W$jr;HN}L=hYq0qla|&+B zPWJ7%CF{BOvEY!@pIj}_gj3F1&av zloXSiirdsz(or})*(7rSo80C=+0QtGbaJ!eN1QI%tkjDuxPft@{sXr&>(x0n@6$BI z?MXcyDcrjMxo~fuqpb4wEzn~9RgYF3?GGdiz5?+j5B14o3tHk8BVz;qsI4y3%gjK>x zYASYap%-!)j2J(>WYYW}BSsAvC$!c@9?jB$ta=Eh=-3#TEwon?>E%U=KAGPXX)_;ax-GV}7Q5+{EYHr{NI5Kco4B~P;8l(dyI!0nt3^76QyV=KqGSz2)`&fuMVU!7yKw2Cxt1#h)EHaDtC zhxTS5|z1 K&pP?Gn-u`dL`eVu delta 828 zc$}Ns&p5S@k)8Q7FV|XWhmGuC+4$`k7#Q?3@^e%5Q;RZ_vnMyI8E2OeQ~&XPK-nI18&BhtOFZde|l_317i#k*!D+BUXufqTN^}CT|dr!seIB0TPF> z8Wbsck_D?orknwGs~^bAW0!DK+=n%|Cd+GZYz|hD#*p0Hs1}ahD0z)W?A`+z^D$R+ vck~qd=U7wZK?iSa8jLpwIfY`Ec= 0., self.dataOut.height[0, :] <= self.hcm, numpy.isfinite(self.dataOut.height[0, :]))) + else: + h_select = numpy.where(numpy.bitwise_and(self.dataOut.height[0, :] >= 0., self.dataOut.height[0, :] < 20, numpy.isfinite(self.dataOut.height[0, :]))) + + ht = h_select[0] + + self.o_height = self.dataOut.height[self.im, ht] + self.o_zon = self.z_zon[ht, self.im] + self.o_mer = self.z_mer[ht, self.im] + self.o_ver = self.z_ver[ht, self.im] + o_snr = self.dataOut.data_SNR[ :, :, self.im] + + o_snr = o_snr[ht, :] + + ndiv = numpy.nansum((numpy.isfinite(o_snr)), 1) + ndiv = ndiv.astype(float) + + sel_div = numpy.where(ndiv == 0.) + ndiv[sel_div] = numpy.nan + + if self.nchannels > 1: + msnr = numpy.nansum(o_snr, axis=1) + else: + msnr = o_snr + + try: + self.msnr = 10 * numpy.log10(msnr / ndiv) + except ZeroDivisionError: + self.msnr = 10 * numpy.log10(msnr /1) + print 'Number of division (ndiv) egal to 1 by default. Check SNR' + + time_t = time.gmtime(self.dataOut.time1) + year = time_t.tm_year + month = time_t.tm_mon + day = time_t.tm_mday + hour = time_t.tm_hour + minute = time_t.tm_min + second = time_t.tm_sec + timedate_0 = datetime.datetime(year, month, day, hour, minute, second) + + # 1d parameters + GDLATR = self.lat + GDLONR = self.lon + GDLAT2 = self.lat + GLON2 = self.lon + + # 2d parameters + GDALT = self.o_height + + SNL = self.msnr + VN1P2 = self.o_zon + VN2P2 = self.o_mer + EL2 = self.o_ver + NROW = len(self.o_height) + + startTime = timedate_0 + endTime = startTime + self.dataRec = madrigal.cedar.MadrigalDataRecord(self.kinst, + self.kindat, + startTime.year, + startTime.month, + startTime.day, + startTime.hour, + startTime.minute, + startTime.second, + 0, + endTime.year, + endTime.month, + endTime.day, + endTime.hour, + endTime.minute, + endTime.second, + 0, + ('gdlatr', 'gdlonr', 'gdlat2', 'glon2'), + ('gdalt', 'snl', 'vn1p2', 'vn2p2', 'el2'), + NROW, ind2DList=['gdalt']) + + # Setting 1d values + self.dataRec.set1D('gdlatr', GDLATR) + self.dataRec.set1D('gdlonr', GDLONR) + self.dataRec.set1D('gdlat2', GDLAT2) + self.dataRec.set1D('glon2', GLON2) + + # Setting 2d values + for n in range(self.o_height.shape[0]): + self.dataRec.set2D('gdalt', n, GDALT[n]) + self.dataRec.set2D('snl', n, SNL[n]) + self.dataRec.set2D('vn1p2', n, VN1P2[n]) + self.dataRec.set2D('vn2p2', n, VN2P2[n]) + self.dataRec.set2D('el2', n, EL2[n]) + + # Appending new data record + ''' + [MADRIGAL3]There are two ways to write to a MadrigalCedarFile. Either this method (write) is called after all the + records have been appended to the MadrigalCedarFile, or dump is called after a certain number of records are appended, + and then at the end dump is called a final time if there were any records not yet dumped, followed by addArray. + ''' + + self.cedarObj.append(self.dataRec) + print ' [Writing] records {} (mode {}).'.format(self.dataOut.counter_records,self.im+1) + self.cedarObj.dump() + + + + + def setHeader(self): + ''' + - Creating self.catHeadObj + - Adding information catalog + - Writing file header + + ''' + self.catHeadObj = madrigal.cedar.CatalogHeaderCreator(self.fullname) + kindatDesc, comments, analyst, history, principleInvestigator = self._info_BLTR() + + self.catHeadObj.createCatalog(principleInvestigator="Jarjar", + expPurpose='characterize the atmospheric dynamics in this region where frequently it happens the El Nino', + sciRemarks="http://madrigal3.haystack.mit.edu/static/CEDARMadrigalHdf5Format.pdf") + + self.catHeadObj.createHeader(kindatDesc, analyst, comments, history) + + self.catHeadObj.write() + + print '[File created] path: %s' % (self.fullname) + + def putData(self): + + if self.dataOut.flagNoData: + return 0 + + if self.dataOut.counter_records == 1: + self.setFile() + print '[Writing] Setting new hdf5 file for the mode {}'.format(self.im+1) + + if self.dataOut.counter_records <= self.dataOut.nrecords: + self.writeBlock() + + + if self.dataOut.counter_records == self.dataOut.nrecords: + self.cedarObj.addArray() + + self.setHeader() + self.flagIsNewFile = 1 + + def _info_BLTR(self): + + kindatDesc = '''--This header is for KINDAT = %d''' % self.kindat + history = None + analyst = '''Jarjar''' + principleInvestigator = ''' + Jarjar + Radio Observatorio de Jicamarca + Instituto Geofisico del Peru + + ''' + if self.type == 1: + comments = ''' + + --These data are provided by two Boundary Layer and Tropospheric Radar (BLTR) deployed at two different locations at Peru(GMT-5), one of them at Piura(5.17 S, 80.64W) and another located at Huancayo (12.04 S, 75.32 W). + + --The purpose of conducting these observations is to measure wind in the differents levels of height, this radar makes measurements the Zonal(U), Meridional(V) and Vertical(W) wind velocities component in northcoast from Peru. And the main purpose of these mensurations is to characterize the atmospheric dynamics in this region where frequently it happens the 'El Nino Phenomenon' + + --In Kindat = 1600, contains information of wind velocities component since 0 Km to 3 Km. + + --In Kindat = 1601, contains information of wind velocities component since 0 Km to 10 Km. + + --The Huancayo-BLTR is a VHF Profiler Radar System is a 3 channel coherent receiver pulsed radar utilising state-of-the-art software and computing techniques to acquire, decode, and translate signals obtained from partial reflection echoes in the troposphere, lower stratosphere and mesosphere. It uses an array of three horizontal spaced and vertically directed receiving antennas. The data is recorded thirty seconds, averaged to one minute mean values of Height, Zonal, Meridional and Vertical wind. + + --The Huancayo-BLTR was installed in January 2010. This instrument was designed and constructed by Genesis Soft Pty. Ltd. Is constituted by three groups of spaced antennas (distributed) forming an isosceles triangle. + + + Station _______ Geographic Coord ______ Geomagnetic Coord + + _______________ Latitude _ Longitude __ Latitude _ Longitude + + Huancayo (HUA) __12.04 S ___ 75.32 W _____ -12.05 ____ 352.85 + Piura (PIU) _____ 5.17 S ___ 80.64 W ______ 5.18 ____ 350.93 + + WIND OBSERVATIONS + + --To obtain wind the BLTR uses Spaced Antenna technique (e.g., Briggs 1984). The scatter and reflection it still provided by variations in the refractive index as in the Doppler method(Gage and Basley,1978; Balsley and Gage 1982; Larsen and Rottger 1982), but instead of using the Doppler shift to derive the velocity components, the cross-correlation between signals in an array of three horizontally spaced and vertically directed receiving antennas is used. + + ...................................................................... + For more information, consult the following references: + - Balsley, B. B., and K. S. Gage., On the use of radars for operational wind profiling, Bull. Amer. Meteor.Soc.,63, 1009-1018, 1982. + + - Briggs, B. H., The analysis of spaced sensor data by correations techniques, Handbook for MAP, Vol. 13, SCOTEP Secretariat, University of Illinois, Urbana, 166-186, 1984. + + - Gage, K. S., and B.B. Balsley., Doppler radar probing of the clear atmosphere, Bull. Amer. Meteor.Soc., 59, 1074-1093, 1978. + + - Larsen, M. F., The Spaced Antenna Technique for Radar Wind Profiling, Journal of Atm. and Ocean. Technology. , Vol.6, 920-937, 1989. + + - Larsen, M. F., A method for single radar voracity measurements?, Handbook for MAP,SCOSTEP Secretariat, University of the Illinois, Urban, in press, 1989. + ...................................................................... + + ACKNOWLEDGEMENTS: + + --The Piura and Huancayo BLTR are part of the network of instruments operated by the Jicamarca Radio Observatory. + + --The Jicamarca Radio Observatory is a facility of the Instituto Geofisico del Peru operated with support from the NSF Cooperative Agreement ATM-0432565 through Cornell University + + ...................................................................... + + Further questions and comments should be addressed to: + Radio Observatorio de Jicamarca + Instituto Geofisico del Peru + Lima, Peru + Web URL: http://jro.igp.gob.pe + ...................................................................... + ''' + + return kindatDesc, comments, analyst, history, principleInvestigator + diff --git a/schainpy/model/io/jroIO_mira35c.py b/schainpy/model/io/jroIO_mira35c.py index b447548..632bc93 100644 --- a/schainpy/model/io/jroIO_mira35c.py +++ b/schainpy/model/io/jroIO_mira35c.py @@ -13,7 +13,6 @@ from scipy.optimize import curve_fit from scipy import asarray as ar,exp from scipy import stats -from duplicity.path import Path from numpy.ma.core import getdata SPEED_OF_LIGHT = 299792458 diff --git a/schainpy/model/io/jroIO_mira35c.pyc b/schainpy/model/io/jroIO_mira35c.pyc index d632d4f14af2226a5d20c730704c346232c0c107..99aeb8c93b64fff67a3c6c8ed82d55d55fb8ef1f 100644 GIT binary patch delta 3371 zc$}SAX>e0j6h1d?(j_S^OK8(V+q9(((2XVFj1DMmL)Z%3mMsb~?Ymjp4wq2Ch@sle3I^wvJZzW;420t2XSB;C;&<>L`xv% z0G|WMCbbv{A){imE>;O_Mp+(2OCeSUzA}(H`4F7}v62CN!_1e5}J2w*qB7GDjpT1Z}6D|JV!3`cWxM^Aw=49Z?mMnKsI3g2_#%P1NlSnh~%dM%IE;O`!0e*ihuJlEj-%pG1;K>M65Gwg0&(sXA+~xuy zuSz-cj%Qn{P`ieoE4Z{kvxsMpHyIgZ|KlERGakJoHKp*qEGv48fZ>wAIn{mL2|2DT z>6U*vtuoU!ZKF{jug7`2{o+vC9$^+jEkYdvMnyZ23nVg-NCXDx23(>CEgpzwd&j_MdvMmu#n@NB=g z?T*$qN;hUWSXR2mqS4U=>U>UsKcmrxOLOPmBFZXhLsgUAR7@rl@iC=y^eF4F;3#~Fl+@m30=v=W%wu>51XyJew5{d7}t@{uL5C#!; zA`DHO=Rm5i;tH__4WjX=E_1R`Jo5*fF22`kne8gkt29mdB%Sh(PP(C`a|3O=7G~G{ zo8z}cRy>tGvkNJnkJ@>56W?W@U1l?z%vm=i`N45X-XY}MQtj0*m@GNcg#S5f0a?$R zYv+ zTmA`zLwa1Y+vD4XhK%SD1RP=-mO(H*KGTD5HNqNwtGzGg_p%6W(nChUvWS|L7sU>& z1l8l|To;e1T9P)y==4Lih}sel(*}OXy`D7ktL_@RG1v!LBA%p@k;A-xk+XEfpzTq- z`*khDLyO8Y7Ty^lUz>V=ku8rL=9iZ)AxBfCw|ASSJ*;yt@110p4;VnJrFpGr38rsTScsp7*CLH7yz6(M=%p+|_uKNmJZ}iS7KEqRD zk)?W^FZIk_{D+EMDcnFC;49PurC;Z z>>Pfg-QkuB@va`$tx@zt_aOX)ut9G@ia%s17AAclT~j|+m5lR#JEa`!ri9qW{1=*R Pq=-x>MJ7J7_LYACiwo3h delta 3231 zc$}41X>3$g6h3!4o$j=ydrPOwlrp7s0i=}xQs^!)Etj^?!E~JVy;<5>%FLs+1yi&{ zg|L+?iHIghLHS`6d~O&c@sC8|hem>|8X-m#|B(1YV*KGfclxHbwzf?2zTA7>x#yhw zon_vyr^)5hBq!pJgjio2>+FGvUj=_^_!F!j%lU2uKr(*Jvfi(-HXvCpZ zkofBu@MMEG2dp_jw)--G5HcZ-)WkjlJ5Ux2o<-oz1#2z{ojC9q!J7xxJn-g&H9sVc z2TwG33&2_c-jPDE7J}CVRug!Oz*@vr5*p_OsHNq5Qhe2wdDmem9y)aY?(k9K&=CGk1hRqz2ytO%FiD_6(?cTXSta_K5&jEpCXS!raIIg!6L6Am;9SD-;~hGQ{kI3U}l5_a`5 zkH$uF*;3Xu9-HxiBF}BX=1hSktql=0%_**5GgU#mkOS?U?%|?^a-$H~G zgaVeFk@6oiq;XZ`0xmPDi7^-S#Kaz@+{~Xqpj?-lqW;BVAH?2$1JIw&Qo@H_)OSD~M0R7sU z>NnKYQ@VW?rwTHs$R5u`S~Lphq6|y$WOjV%YF-|}cvR7)=`u(%;g2qqj%hqPW~Hzj zWol&((=BjnX_f|gOzdHSRY&)*GGjIGgkGa%Gab;1-RBP|F1ydkv-=#HA3_*L*n=>F zuy1~>cB||1?h}JERJDF%Gs`e$q2B`qYZpyYxkw+aSnHQ+Yh)bTOBBWMDmW~LE+{U!kb|SBC{9R;mU$K7B03| z@s`n{TUz|?piJL}c@BN_t8&>2wQ{*$KQe}vu#P;kk0RNj#yx~^MvF=GtiPXYh-h9$ z*s2lj2+h6F*xG_%(Oy}0du>g!n^tP!qF|%j7ZjJouF3~rLql7u-|bU^bU94SFI02; zYW*%+&c0u@l~l0BRYhsxi99R^{6Q+%7-wBo1=+{Ll)W;oE!fE_Ps5u;?6-??xW|~m5uo$-4hW*Ffib53SHR&+IV{%VX||@StVc- z6OWEfAydRiv7ZziV*$CxACM+E91UmKh0u%8C$5d21AO|(^c3r_O-=n;+!pq zeG0w8UaQ@eBr@P&IxaETM1o@Hn1)@-_rOBuON40C-0;rXdyV;s^4>ocm#fzR diff --git a/schainpy/model/io/jroIO_param.pyc b/schainpy/model/io/jroIO_param.pyc index 99bc2908b9d308275c3d821f2dc4bf70a05655ae..4012460de2af570a0ed070ad0253865b2ac3971b 100644 GIT binary patch delta 850 zc$}NLiLrAtBRlhFUarltb2hRkG7CF0Ffiz62+r{v@UDYnf=W!rHZ-6!9{ zf=4&!=0uh2OgME{soUT-`iF)fPRYsMTB~ttw9uBvrO{~f3>{Nk4mO(1XDG|av02AZ z7gsIumqsa?> r92wa*KlahVsbq72zYeY>X|#E72s3UEF@{CpmYfyNhdWwdMd$+ns4X3l delta 734 zc%19p%s6usBRlhFUaq{5$s5@dnfYxQ7#Q?3@^e%5Q;RZ_vnPMlFxtG9Sqz(m@n%l; zWL9hvlQ;1cF|ut|<&9&&;nDHiO`xGmd@-MDq~9V}QS zYE&LDVU<{S7Bp zqs_N0EU^19!m1y8oaxxrV|T&_`xxv-O>&gN9$TM0lCkTU?InvX6pbeT^>Jk6*lh2s jgH?L-27euF$;N22Vkk3qM`wmbV3%Nv;KLp@QIYxpGcf9z diff --git a/schainpy/model/io/jroIO_spectra.pyc b/schainpy/model/io/jroIO_spectra.pyc index 95c0e820cb5c2247cf4c0bf4a151acbc2bdda186..4b3c9b498448008dd4014158e834fd5c3eb98098 100644 GIT binary patch delta 501 zc${0>%=ogIk)8Q7FW2VSIUCvM@e4aMFfiz6n`QDx{`tu04h#$o`WgATsrp%|#RZvp`BjON511KF?qpqzL(XV( zF55~roRZ6KQ`7`tuwHVh05`WgATsrso!naSCc4S5YG_p&a=B5t&~lx-y& zy2NHf-gp+Qs;>%G@L-jgBzKDmtHee{YiveYOg2|LhfREQfciJAc2Dls*@IQQN4F5G z%}#o3j94}F>fgi`M4ML`*kaRQxLMoC1G~g_V=b%_lT}TWJM`7KM*jPY{9<;tGKbiEOhbB z4+Q2jVo_|m`MA(;7OWCn65E)tNlfODwqs=9>@Ho0ReCe893K}}eaRZ%usL`00?lk@ zto{hn#qbB%1`|CF>{hoJti>)-X?z*G#1u1s?7^aKaR-~DOeg!>EXL|sOWQwK)z{jo F0sxPrlcoRw diff --git a/schainpy/model/proc/__init__.pyc b/schainpy/model/proc/__init__.pyc index 38a91ab17d9fa7ca86187bef151b478795c41cf1..8f1ca2e3fb7dcce858147d897acd53bb65964c39 100644 GIT binary patch delta 40 wc${0qvVn!2`7~|T3T^Se{^fU5vQ}we_iwiRI@~aXjCvsX()?=E1Rj!fU zY%(`<01i3x$qSix<1%yeGL|z;I5f87GH|mW2MaD&9>(dyOs=Ik<$}4V;F8;{!*dV2 uWsU6ClSB9lak`S5Uj=tqRtgm0)Tl2g#EjF%ZjnTs0c|AOhtrF!Vk!WZ>zi2s delta 425 zc$|Byvr>nh`7~|UY9T^xH^fU5vQ}t7eGLy3>J93*%)@7QDMcjO{2(v#{ z^=p{-U=!cGk>w&2Rt=}w1F>pI?xiKJl_FBI*^>MbuZWdPKsd~yH) diff --git a/schainpy/model/proc/jroproc_base.pyc b/schainpy/model/proc/jroproc_base.pyc index 5dddede5a1863b79b60583ea2d55cdd6143cdfe8..c39d0e35de47f5247f0c67cdc99a492d807e6c51 100644 GIT binary patch delta 714 zc$}LS@-2j&`7!w1r^db9WwECth<@F?M! z{8re2k!7=-hzH_Di8&SvhxDlyrCy#=c{ zFGm|zgYIzLV8p87FIPWS4Oh9#uxpsYtH{W*c^fY;c8Bo@`T(UP1=E>uNOMdU6ft0A z+w3Hw!+}M~864hanLJB29IKp_+#C$?gNkO8<>jNWsy`$jiB)}yf+tq>-xPMBi*G)t x_yW^^AVWT>6k!!#tD25Yd~>YY9?W0{X-LxW#VYV!lim3r;1L piqVYRi>E3I;WJHH7d*XB3;KRB=&t0T#a%?)Ogn`BIY#%`AhW5FsNrWnP@vv{MT jAXZa<8u2hPa%^TZsb$6LsMD5bv6}kO>Kj(|@-}(^6ER{8 diff --git a/schainpy/model/proc/jroproc_correlation.pyc b/schainpy/model/proc/jroproc_correlation.pyc index c65d755c8a3f1aabcaffb5eb39df89e7430e89e2..789820c9007b7721b87baee7d3ff8511c0d85c3a 100644 GIT binary patch delta 212 zc${m{nxn39 mvjbZNBTh+Xj;FYcwb^XUUBQk^a`HE!8#v_l;MDU(LE@wxV*nCb%1e-B7lMO{0u$eMhfP-Z+tEe~t9ojgr diff --git a/schainpy/model/proc/jroproc_heispectra.pyc b/schainpy/model/proc/jroproc_heispectra.pyc index 6dec0a4b678ebd3725c6789c785c5afd7a862d14..56cb920d8adcac39aa6b11519aa19657ea564f82 100644 GIT binary patch delta 535 zc%0km*67a8{F#?4B5KY?_Pvb4UJMKj`WgATsrp%|#RZvp`BjON9XYKx^D*sa#vy65 zS%j?tmrk3__t}H7N^W-KG+@H1YY(>oZX?Bcvv4`adh%(3BAmWx7j(nv#mVBrl8j87 z4TV?X_Nbb;A8se_m+Zl1xWnXG($8^fJR`%7+pltR;kYFa$UEZpkGJA7oO0Gm({MUf HL0J+26%3^@ delta 462 zc${l=-|5EA{F#?4OU7X%`(8$VHwFd<{fzwFRQ=SV%;fCJft=Qxg_w3TW0A1gEW_4- zO^40q*X+R<5}N}#4VbX1zQ8Sj-57n|ENm8APkt^?gw>_X1>LZEVY0QbBqQ_YP~lbB zJ>n2h!3POotC1u%<0x2UEnx}uiW53ULmvhg#_dRJ&b?3Lr%3{vmh8bEO zScR$_!_Cahe2?Yjr1@s1oygC~%_~U~N85B_t!jpgIauqMQ7sS;WDeFImM~*~rJ9x7 zd0D{+i;g|0WS#ar3S-0C8gmdQu-hB2@jIeoL9B8KC0jP^60r_aP4)@l&qx8k2K-V( z&@3-uw+ZrK^Pbq z{R);8!;dVjVm(W-;b_8rEQFw}(&snk~h$tTTKAXNU6bq7Z7zKZF$x zI^N4Q3Zvo%zDX4Cek!fw54U|#5MNv|MV-SOnu}1U)mZrJGKqJ5=)Kt z?Buwe4K(M-)Kj>=;@C&@xf7W6bU!|i>%VyO&9MA|`Id+e#%v7#Mk#?4^G32{t$*HO zIS2lh!Q6EV3tE(0o^+r-e#^?Rr?mtxvs9f&YT4h32DtGuIgw5K4sGvBLgt80}b< z{Y#+QPFdJT9?)pgq0 z{V;9fejKH%2AYF}MiR(~wpIR+NRe<|<&tEwf!;9v8ffIVX*7i0^F4!V;7%_4S2p># g7$-2T5V)ZVv$jHd4twt`A}@UZOusdf+i5!W4`=TjV*mgE delta 2647 zc$|G!Z7h{x71?Ed}S+J#gVsTG)LtlHOW^qt9+~-Kg!sc<&PrM%ibh2 z8WXLlhn@_xXvq9vZJM^WCQGU1V5!K~IqKhYo&G-8d*AnUKi75N&)c=8R#w$^s#RyL zHn#DJ-7&RGjE#*=$mOdAIUzZPSF-cu@)n(3r(O`wjovyop^*pyO2S35W$E@GRWMzA zwT9hw^0$Mat6LvRDSNt?qwm=#_nK|iIZSxg*#fkboSDfx&J}ib^FX+G4Hm#H^t%QE zDd83H9#~++UPw;9AK3%Xo27PmUUxhn7Kqn7*#kggj|~N|GRr-6NL0mA;%mZb7*Lrw z3QNeXshd#2ZxHl(kPX^lx(lCHvj zq^`vJiq47ZS{#;9c1OIi+73yMx?zMRR2AKbl*BZZRiY@h9Z_;{n>{n#aupf>9hWpH z*n0I3(z2D?OAfGDXhW2kueL)kPu}Z=eNHtxVgdn8MX=B1CgXp`zqh$hKv{Xq2UH`D z4L@*4Y@=9kTcU9LthPf3)5w9Hdq~3!oegl2v4h>yq5xYa^C3I=Je!By8hbXaDdWP{ zo?R2fR>~7dl85@ENhPZXObFI9!{7@{GIhia0OJkjA@O?kR@|CqO_^ajzpmNny~g$5dW{~XFIkIup8U`zI=^Fw&=Y+ndMdqP046`u|bG827a7VegX(tW9M@rf7Ah_Q62~QdmLb&g4lEk66d~a4@9BUI>KrVb{ zALT-r*Z9$Xuy{7~+%bT5K-N4jnBIx&;NPRmn+{V5Bx$jUM)B3rB+ROdpiJo1tvGJd z(^1@EQ8c{-_a4EkV#p8LK~Wp%EOggH1GSS%Nrq-=xqk^cx^45t+mw^~fxOzU1bKIRnRquVj-J|2<7LI`HI6G;YNJ jc~k@Y9{4Ii?75jc|)>-8K+mK%NpVKil7n;PRYr! zYLSd=o42c(;8J3-*+{zzr*9`0@Ucw(VUWTI3~fVeE}UlEw_b(I^_H72+Nb06_v8jg zU7!QkIlAMD4vWn;9`d;KTWntB8G}=Dva7cwBh%)1?-1OM`|X#EJ5rVf-riOmn$ z{n@anw%lC9XTge1Vw1=PMywiS#HM4H_%FT^yTljC3TCV>-7af{;Zm>;QzaIx5|dli zA{p5?-&ZriCT+1fPP+=LXC|u{W-xMZ?lrXL!m3Z$W)(IUT5jfaNXP1@$$K1ifd;;E zbjKE|7Mp846p#V)Zv$Q-+bQHTzP f#OA`#DD0}m!{=gm@c)Q+Sj8=(=3@;pXfkJ3yR5+Mk$P3oA()6bK!J@i|u0Ep=IQl ifz!{EpE~IQ9Vp`L&W6*0%RL=&>9?J1;yn?M delta 501 zc%1t+gK^yqMt0`Uyj)Ro4jb98G4Z=IFfiz6Z`F`j6DSM9n-P;X|kHL eF3`XbXLmNN2EOui!lut=a<%s)tmeh~$N~UoE|Mbv diff --git a/schainpy/model/proc/jroproc_spectra_lags.pyc b/schainpy/model/proc/jroproc_spectra_lags.pyc index a8531bba87da1164472665d307297602980cf57a..9ee4d7cc292c0e52a67a4a173bf9a85642e3827e 100644 GIT binary patch delta 598 zc$~X4hjGnZMt0`Uyj&4cb2hSvG7I}KFfiz6(8XypKX(ImNs!JvJREFTB^mvkHk%4_;kL6!dFih?@NnzyL{KdqY3y1Nx qo2%^?V|O*kVcE{Z*@R28#b#^vX^c1}B{;V;UsDS*>ylmDr6Y<@2_0jI|%ACujH(_ee#w&T{gTX7{$H?L9h#pNVOJh-Ze zFfwh9Qi;Xswax$3ZE#0NqgEGgKL_c&!KtxTmjib^UeSxdEm>@!i`zZVjXH7Zw4J=i zWDU-c+F)9UKcsTar5M>ZcbFI8P9YA~61W3nzD);CSLfMk;r8!+JAK@d|HesrbAh8N zZryL3*0ACXkS88zaC+v4C(hIi3XoMeZFKbE!mZK4nq~5I-*q@O_xP#d^6X}uPTdp8 zi9hZHgK>sEFy~IgDYrMI3r~EqZk`<4z=kt$<6~~&ba7*>JYE-XeiIjhJ1GGRo5?*1 z=W)s}O4I@tW@i)M;?5_GsZ6-ivF&94jC`DqW6Ru**WsL5({b5qJNZpc5Y8ZJ%f*}C aST;Y(dx6_zv7!u|nvWGN#~D;xiVXnCwpUC5 delta 1498 zc$_=&lJUuNMt0`Uyj*!9lQ**OW#V^cU|`VC$j?pHPc6z!&YrB8XE|Ab`8|gCMmfvP z-Ygq2HGm{M*rzgLmC)qe#*EF1&Dy*YEZB5R?iUPXWZV2ua1VBUFGb5SB|!Qd5?MBH zkQBgl#zY_6%>vSsu{wP6d)f8q;+r?hy~nQjjp7QdZhD~Pi)k$+99bsUs)#T$Z=R$Q zi|K5T%j`AGu?OiPtxl{#I(fRzYpfd1>9S*w14aFC>=H)|bgQfMcRcwyOW9oE2x(}mozx3Id}JAl3=9nV8Tq-X`dO*P1(|vIRf!XQd;!a`3z7f; delta 34 pc$}NdIFpf``7}LE<3=9nV8Tq-X`l&^k$=MSFd;yst36B5( diff --git a/schainpy/model/serializer/data.pyc b/schainpy/model/serializer/data.pyc index 052bd14c3fcde9bae1615306e987753fdd343004..6fbabe86c65f1a112bbf6058fd98b009eb47cf85 100644 GIT binary patch delta 267 zc$`}!c0r7t`7}8C?P7DkT`WgATsrp%|#RZvp`BjON=W>`#KEQYwm)z!K zOySry-eon}oWPQYOY#*?+ql>#;*`6`z5$!u=D8dSxSVe>nT2Zy9}8Dnb_@&*`WgATsrso!naSCcCoq1;B4)Dr98)+p#m1Yn tS@N+;Ojcmqj?JXWa_keaihpC@fK^<9i)Hdhju$xO_FxgWn5@pN2>?@#M;!nF diff --git a/schainpy/model/serializer/serializer.pyc b/schainpy/model/serializer/serializer.pyc index 2213380eebb487a6c00d3db3be562bfa3f05608c..1717f63c9f17a58907dacba78036c202106b0d83 100644 GIT binary patch delta 429 zc$|AFwN#p&`72p#=8v4K Xa0R5*Uu3nMti;reMci)kH>O-H z;#QM4F#BT__hH$BRos`g5R3R?9A>jjKFVf^At%WG8>{+Ajy$Yxm*C97Y5rAC4D&ZD Za;?G^I98J-c-*myui+`h8ko7f761U-bV~pL diff --git a/schainpy/model/utils/__init__.pyc b/schainpy/model/utils/__init__.pyc index 0a33e0b176042c842e9e8ce4411b911b2e714e1a..d9a86d9d30606eff940bdc8337795289b3e4f05b 100644 GIT binary patch delta 38 uc%0kIbdZUi`7!V0he diff --git a/schainpy/model/utils/jroutils_ftp.pyc b/schainpy/model/utils/jroutils_ftp.pyc index 68f115418955f1af04f5b28febf6c1ac5d8e218f..bc9d5cd8efabf0b12e05bff9c5deaa553dd8968c 100644 GIT binary patch delta 1520 zc$|B6m2uy7Mt0`Uyj&4cb2hTCU=wy_U|`VC$j?pH&q^&W$jr;HN}O!yYd!fV+eEB# zA5F|BUts@-RW4A?e6k4VMyzrdjjSj0b8WzBCM)+ToN}T(_i@Q>w&GpIh*MIF{~Z%f zQ{#jd;*@h0euLA{a*sD!$;xsW;(+IaG9%}VqPf;M9n+^G~>fC(MND#XtKbp+K z>9xrh%`$OX)nG1y%XikB?^#a5ZR$4b3Y?~v*eK%m`hDA5xYOZ(`vhD`#(MKgryShw ziFTQZGdtP2y5e-}N!MA7jI5he-1lKkRhtccJ#nX+1Ab|^C36C1;+FIdQenpFm#v{U zaE8$3Fd3X0H=9OnWWlLZCtd=(dq6?dmym?hRI@}uoY6UXV$u|>aud_7C+8>QEUGrw jr!2>v406)Mu;+k@={C5NfN*9QPPz4&J8%|7YqM+tEQkMU delta 1325 zc%0jJo$=LGMt0`UyjIfccbc*c@m&3%jFC z%`-6+Z#4JD>b1!i)L1rqSxv%jlA28grb#vt*u55Rhv`UgbXPkhVA>sMYQ0(0IS0GF z_g!XU6+h(ai8Xve-DWW|a%}$Kz7HccY(D7gi9Jw5{L`>YumsM;F7Z4_g&C{6Lc?xg z^?7-?3|0-B??!E8!OZdT{@8=VDlrYKDX$U*u|~yY&*UjsGvtH}mdV;F*oy;$be7G| hsf)2kp+UMBc8LiYtT>`DGYqSEebx@F);DI`0szC^sLB8U diff --git a/schainpy/model/utils/jroutils_publish.pyc b/schainpy/model/utils/jroutils_publish.pyc index 3da4deb6b108bea62476cebb53223b2209b1fc41..2235a218316c6963b850ec6fb16fb804ba964c95 100644 GIT binary patch delta 897 zc$|CM!uYV2k)8Q7FIPm=oQ>=UnS?zV7#Q?3@^e%5vr>x-GV}7Q5+_gOaGWf`?2c8= zQOA1nO6IdTMz`}r-n1uHwUUGGvk!}r)7f6#$-m;%}aHxu_rY{KKsdf`X_NlzN3LB zPRCv`D8L!ueTF}AMV0mDi{?Enc!Gds^J<&bxN?T|vTVL6x|ai8a`QsDsaQR-xkZ5!yQ6L^=3=#bno>4)NBOHL zV>ju5>OTzei)u|+4Oyt3%#2kcNZSOL=`53P=%_HVZT_ocjXkNf>0>4bkoZCaPpn2- t7#3g+t8a!su?G8QTZad#hz@Z3xf?MF^2mpZq`Jn&+ diff --git a/schainpy/mst_blocks.xml b/schainpy/mst_blocks.xml deleted file mode 100644 index 6426f5c..0000000 --- a/schainpy/mst_blocks.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/schain.xml b/schainpy/schain.xml deleted file mode 100644 index a671bc5..0000000 --- a/schainpy/schain.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/schainpy/sousy_processing.xml b/schainpy/sousy_processing.xml deleted file mode 100644 index d40b9a1..0000000 --- a/schainpy/sousy_processing.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file