diff --git a/schainpy/__init__.pyc b/schainpy/__init__.pyc index 67ef1fb3577917f9a99b9f4f60ab8e3574857ecc..3efd92745c0989765364905a746a8558bb44eb1f 100644 GIT binary patch delta 58 zc%0kCbc>OL`77#NK7j3;g| NVi5r{C-X7t007wL4lV!y delta 153 zc$~Y%xQmH{`7zC&jWfvDDCa3BbCubyP=EbKbQ7v!0{|o+FJ=G$ diff --git a/schainpy/admin.pyc b/schainpy/admin.pyc index 254125f882b6da9840ef8be66373c5090878f900..02a67539c22f9c08129461edd62c29595c7e5766 100644 GIT binary patch delta 229 zc%17<+#b)t{F#?)Dz`)AMvkMbjCzwFvdeG&!TN#`%H-y#WQH&&ujifsXNga4;(%Bb7bT=HYZEB zG2!s3jGPt@smYZJ*;uS%QGCaSMT3Kw_-0Lw-#7wva=2D54hMYKQpe?hK;3jK4!EIP IiQN`A0I=t+9smFU diff --git a/schainpy/controller.pyc b/schainpy/controller.pyc index 21fbb6161b82dcad4dfb19e402a4ab5c8613b9b9..8dd706b70ab31e2b1378ce4eb3eb9f100b48c274 100644 GIT binary patch literal 34612 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 literal 30573 zc%0RJ3ve7qdS1`$d$Axu00am=mpoAfbrc_ZL?=o*JxGe=NrHF_>ZpUvTP-mIV!_4k zVrL)%XHbrhcXnc*VpqjiCtsA<=iJ$Mik*rRD~=r}YNpG+g}cKl$TV7nJ_9lm0zJ z|AJOZDNm_+x;n~pRl`y9j!C;}-ZklznopT@TFs|TI-}+@CY?3ulxpPEN?y(9)k;Cl z7t~5o%@@_mkeVM-4r-)Tqoh`b)%>vBXH;W{x`I?zHAd9RsG1+8lAQWHHEyT!@@kQq zSitQar9M4Bro19&4cV-5<&`*V*k(;AZ-??H)FQoi#OCf&-Y8exX|pDkKc&1eb<M5?@|69wY*n(^zfwes4`Wc(%n>=a!|HUd3%&cH7K!Pc?Xnt zP>8?tEGKWwm^W zzxM#;IP-^wNYxgVv ze)G&T{LHiQXKdMXTy~br&UKZY=d$PfK6fETk?yjKJ>T;#sS6j;#iPofR(BlY&QIu^ z8IyyXW9Txc94=oqnkJ zOl>V(YIV+(i}gRFKeIDwdLkU6%lU@C;y1%99p4Xg(S2B?^xWEYbDKx~RuFdT%^Ncg zZcurp-mH7A70JNm0ZC@isD|&i7jT=>|IQ-!1j?1#WEpYCRks~Hx$LS<2fe;c30Ezr z&^em<#CLPt*5G4wsrcbqr&+F*+Z{g)Hy&(LYtZ9YUwW}DO)D?9I^}T5FY9)nD3<9@ zfcC6~iw}M*%u=e}^r$FsDOoP_+bd{Z#nPl*>jeHBzmV_4mV9u1r7?q=A!_>cg|I}4 zPHXMPQdPdsbn5v00-BffhcCe>T~3@hxzK8comQjacTTi7xGulAzPK@tT4W*$Jk2<-s!slQEzFa>{)E zHj`pm*j<79i6%EwsxzZ+=QdeaLW6t)gpkPr^0~GKt4Y+TW5UsBq9Cg#Kj$hE4tPPD zi+>1DFXu3#m|#>d)%7M9!;Y$dpoo~u1v3}Zip0QX8fhXDG5aEYFsC}-R>Yr@e}k*x zd+FYn=J=%_cLsXt35V!8z)SP|(r-GtQw80r8w&k8cWq4F&T#X%x1Vv<>g&$!tO`fe z@~GO(f^(-gd1~-~B{h8~rEcfcX0G>B!~CfUSAS~9JwNrY&8K#5{i(d#%=dn3gg^EB z?m(ov>SDl0QB9Aw)WZk6>weV@$Mid>1>mtS^*l|*mgMWFaC`3BjJjP=c(f3E^c%@X zSHI!X->dybX(#vR=~SXWMQ&%&wo~YPQdc62iRw*}y)-42(XwLit0(xW`4lKG?{y5r z@8Y7h6gVkX6po`5w?k@ksNZConS?l~jEZuixq65$M}jluD@*mD+%|%({6?*@=9ekU zUulOMETJ0pAY|QloK+%eB+h|ATx_&za)*i@X=ko@vW`#Gk*vE$(1rCCDLuoFwrllH zfJcKP+>-KAEhvYr@^zooU%1w8_+`>`s8DV#mbo@Rx3bm<>$XWVd_Be=xZY|tSl&_# zXC{o6<_=Y0!G{MRMiV-xS`~5ZdsVK-@0o2ieIXP~gij&=e5cduaA6YLGuw zMr|oEo#?H#M%AZRNsl+$QkT0^nS#{4&$Nq4$C91NM#QP?MTPySfYξ<6g1*Rcv> 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 diff --git a/schainpy/model/__init__.pyc b/schainpy/model/__init__.pyc index 86fc6d78a60abaf1be7f594cd3239a433b1e2095..eaea447e7b940b709d620f97c189df8a083d5e08 100644 GIT binary patch delta 24 gc$}Ne)WO8T{F#?)Dz`)AM2_W*<`Xx_PrPLb09N`3>Hq)$ delta 36 sc%18Cn#{z({F#^Q-q$Y?6FHVMI!)Xl&mEtdl%JfKmzrLbIPttC0Q=DnK>z>% diff --git a/schainpy/model/data/__init__.pyc b/schainpy/model/data/__init__.pyc index a1d3c9e7d1858f6fa5519867f109fa8185a76679..c71c585a1eda9793221a2c1defdde039db703799 100644 GIT binary patch delta 24 gc%1vm_>Pf-`70B4p6X#fBK delta 36 sc$|C3_>+-?`7J%nV;z)z@ g6eqiI#vt+DaONZNmUA6K(zk`%AI?*q9LysQ03w+vvH$=8 delta 245 zc${mOcqPHX{F#^Q-q$Y?8#!bd8QmwJ<&fu&Pff~CPRvV9FG`&JhC^|38eI!7v2n`&{`zlt*-hfEaLA*^=bQvZfq8US^&R_*`* diff --git a/schainpy/model/data/jrodata.py b/schainpy/model/data/jrodata.py index f7260e7..f316790 100644 --- a/schainpy/model/data/jrodata.py +++ b/schainpy/model/data/jrodata.py @@ -1179,6 +1179,8 @@ class Parameters(Spectra): nAvg = None noise_estimation = None + + GauSPC = None #Fit gaussian SPC def __init__(self): @@ -1199,7 +1201,7 @@ class Parameters(Spectra): time1 = self.utctimeInit - self.timeZone*60 else: time1 = self.utctimeInit - + print 'interval',interval datatime.append(time1) datatime.append(time1 + interval) datatime = numpy.array(datatime) @@ -1213,8 +1215,15 @@ class Parameters(Spectra): else: return self.paramInterval + def setValue(self, value): + + print "This property should not be initialized" + + return + def getNoise(self): return self.spc_noise timeInterval = property(getTimeInterval) + noise = property(getNoise, setValue, "I'm the 'Noise' property.") diff --git a/schainpy/model/data/jrodata.pyc b/schainpy/model/data/jrodata.pyc index 8287eca1002ed5e49d0517eaf6efd7edca4e0036..e9641f5c5f14f292ece43403635db99b4fd1a331 100644 GIT binary patch literal 29037 zc%1EhYit}zeqVLZaL6Ht@3*LxX0;D-cTX!(tKHS@$-Ao+Pb=ALO4pKCKIYcr=1h}p zYS=TH?vcpN@Xoiovy-#WzS!~k0mOEE$=LxehV9(Jh>dd|juRt504E;|f3X1@uwnb` z;9>&_kPo-1-><5=dxqQ(_p?@;+`>Ong zXDuNrLafTv5*1riEwO5uye(F3lh26N4D%UL&5G?lvDzoLb7D0oEYxO2wO?!xh}8jE z?h~JqUFJn4$IPIp^fNOgDg&Z&L{#!9-WTGds|8UR6yC5{mwgPywIiZZ5Z(xDhvV8& zQ5g~5C~HUK+A&cXGqvM!?YO8+2ydLVlX2~Ys7#r*({b&jsLYt!*|>H}ROU<%^KtDo z7URa^0@iL>CWC{IUu;I3wZ==u?PjA~D?UE>_|?iw#cy}6ExVEXY<;)5^x|{HvuBph zo?2Qub@ohg>G_w=yztW5rPcTb|6TdBvS`chqJm6r?1quIeZ_MtUL%^86^>hR8<%Q9 z)TmXfUPE13w9vj^CgmIDP1g^~s6Z!K`Mrbz{)tRl+}YcvP~b`Trq7Xuxv@2pJJPSwyBynQ&_~LO_Oc%Z1XwOW(G@|wD}0z46)6ZO`AC^ zaMI=!+YGbK@0&IfXckg!@*=VU1n=0QWy$?GDrdUl1F|E`zTvsm5HNnhUt)#7?QZy3 zA6ptkD=_Pc&yzv~C~D{JvL!qNrJ?fNcr zl}IjHG$?a#y49xl;YOp@NI*Wls%*p?mvPS`c9lu^A(@=stZjRzy@p@DefnOlaXYNL zW$$!I4A6h-yQjBhKh@Ld_4HPwR#BK34a@sCyl5rvdlbE5SA|`$=Bxw0cHWNhs?Xrn zA1l1lpg9VRQlP2OOcF!D=&z^RkQ^m#u7EV6&F52XCV^2&n<|JU+B8yarh!pOo6muI zqRmRG%`7k~Y4c^!QnYzG)n*jQkqSg^#Yy4DlEa-AX*^0H)wwiM zolhZ^#G@2aohMTLe_To7ih~t#a)x}Z)B=yKojj@rG=g*)8%7m2ET>TKM1l_sR^B?` zYv=4TMut(xeC7#Z0IOx>i2IhcXNxE!wz8r{B7GlxlQ8iW2{VI5`EzsA4~yHLWS^Cy z%&pfN#c0zj*4DPXa^&CjBwdZX#?lj$MF{-iIw&w2 zy%~isF^?bY3jV%?WYhCEHlr}U7`S&g;){|}u6d0RV|4F&4R^x}RhNzzH5)Brt-70X5z zj_K6Dkx7f245l|PB1>%9*f_}sZ|wXSu5FQGNl}0Kt#`zpt*ayjo8QYoq)E#1o+t+a zeBBnebD~ibt&BJ(J5$#$+<8g_T-z4)CQ1GpKY_fYlJ^NMZS9hN+pgRqJYga$dY3AG zS#IMZ7y~hm08_5%ZLWA;9R=qRbLqAxwFzV>e-UGwk}R^S3Lu0AvFV0x6g9YP&YS@W zA2jLO+E$cN{X}>u+WBkEsEeG)IVSIKqN5q^dchjDXYAq3acjiNWk#(@D`)RV#Njm4 z!3JuyBi}@i4p5bqoKhFZi;h2I;8!GLv&`7ArY*v_85MCGsI^{oH&$u@^Ii;%yXl7? z-mXWxKb(wkWfA-796_>RAme7E={buAj*=yFp6UV0L#Viejs}SGIlC~O&vLX{Q*JX& z5b2NEDWsPuBk|rNY69tx1JRKVFwHX^WI80gf><49I>MS!rejRUnNBdBWSc3b(@bYr zKTDIy9ME=k9&}~(2(K>i>QSbTFg?cfIMbr=9_8>(u=p6L6bKR(0%V>L+A{K_v5cIA zPA$cJP_jjB7Fm4?LOn81Ym><8GZ5jC`G7Wute%3vj?A;#6ta36S_m>{v>9Y|2|5Qd zXSE4r^*Lx5$eh#WkJaa)PayMxHhrwV2<-ux^V;mO`a$8nB)lh}F-Rh|`XLsdgg%bq z1s3H*j?}Z(W@x+ zv=;~p_=gS(;p$Hhpdp>~twj>oLElJ`t8%2kT=~2p@T##0(d`iz^oTF1=Y)Up(4z+T zkrJWo44fn|9rk3@lWNrZ8CQdfw}Tb>pAS2D=UGF+l{DV7|C*nyo z7BuuArR{ub?uM$-Vw``$>N?^ z(3+vFrirloFuAO|FIe$*PFwq75_bI!V+Pww(E}@8R%+9C*UQlr^8UVm}u1c2Exa(GxLXE_2G~C_P;tZq~r~9NGz(-^qw=|y=QbHTE7VJ?4 z3EA}WoECH!D1evp&XkmMruXOrYFT=5rlu7wl1h_Qd2TG`xDx2u|G)3P`|ieb{Q0d{ z$gYL>`YRis{j0D1-2eH{zx=YA^h-kfHiApFO}RWN%>-T5<#cNma>47)Wm2*AZFi^p z?BlZRm8;{0^;!^mM=dSF3VX^Px3yl9NiPrN=!&J6CteLggrU!bi+JjaH*#(2^&4Kf z7F0s#sz}pq=R1(R(Om-2pG@(|1pBAblZvr_F{W^8Mx2l$0@PinDyU0OkG5b%5y+`X zP}dvYou(I*cb#i(^W#`bRd;)>qAWvqyStlus&C3(pG~GZCMSEanAkFePEocHV~@>b zYQHe-#zB5LsW3Y$qBojnG@>R_N+9J0%g6_rvLV>0Z9 zJtjP=*xm7mZR7t?OpCLHLyKewY>0z>a|*p$cr6Z;=*GJAerrCdN6g{24zcXR@xYU1 z&v$?Hp&9*^c=Xwag?@sHwmemOBc5nIse}itbQ#81+ZTJa`y&ta$Zy2Zohdvttx>B@ zcj~2HEw_R10Ha>*@_N73zTR*32Dmx&QkNI}HMd#m?Sik#C#-jQ!N0eC!N0dh3yz`R zPA@psxvM9)=>|J#6#SFLdZQ*qwrKa+@bPqma))xBZrI+FR)*6J7SaujY@9R*kEE|_ zbtAdFviM<gSvIC5NXOizS~H0Fm^IuJ`fqz= zpzP8Ev{Ru;s@AK1omB;0bz{?Ck1k)nNpX@5@A*NccJJEyWxpzQ4(B>X@DZUk40x-l zwtgs5;#|od?yk}j?PUaZz8#cTvSGvsR7V z4R617-V?FUbbu~7@f#-2hGD7H#*+6h0ulyzp``h{LKo$l?IZ z;wTQm$O{D6FBtw8VFW`-5+hst)Jhouo6h%XJ*ttpHO5G9%{F zsL70(%(%%+n9QWfOqtuKO=iYqW=&=e3xmu&?o!^$@R2kzmr6w#HJarp<(_wTg*Jk% zERt?Ljf8|Gp;5T(lw(3gk_Gp+QxV#3Mk1yBKG;KNy^Rt%P)nUnB%m1%p69?<>)b|C zHB^!WN5bnxP0!%I>xr)ocBfB)$6&TXB11ubBuWhAk!G15@F5!o9>+mj|5hmHuPtt8 zMB{|9;#gvSkA}Lvj0h%l?Vhc*TR44{VJAbw4ue@x(}#?#ncC|UJ0F8pLbX_aYenqk zw9gk_=66J^PaNCo7km98m`9;SSGD~8v<=_!yt)QQaX+7$2k5u5Xm{aGS=^FY9XPX- z29aeQ8&fNK)necy8m8hE8%@7bD>g${l6hQ^#JnbRSK?@lQ#TlmF_?f=N0>+)`jNza z;Kx@czQJ~=0u4>9R&RTaT1bW^ImcFW!;L&=2`#ATj~Sp+&d6Br*W@?pP)S}G0(14+ zJxQ)!N3EmP<~l4dup1YlLhHM6#xEZJ`W{D5&{pkNJK61?Ph)S9#>Ex4-Zts^#9 zr)+|vVj^`y!<+(zW5$G{Os5(8{WI-$LZZ++$i)^fg~@wJKHgp20`vX7#2!+B;nxH@ z#`Y{%#6c4hZ;rO(O^{Dvj14-hVi$-R!~s+heI&}THp{9UAY5ZqHeLci*J6J=h%wTr zWx%3Z+gLh7cp~hCcbcB}wx`08=HhkYjh`@$2tbwBy04sGN5_AF1su@}I3`KYq%~uW z9$-NSc(qvt+l}WG*H>a3Nu>7=cXiWE*x${R-T5yPd-zzV41a*+eLUSDZNE;7*O2s5 z;&rm0^9I6|?DzdhegMf`1K}Mr?hdSjd49su>J-GK{ELN!(f-14KBq;U8!BQi7Igqq z6m{OQVo_(7qRuSkoLNdZvlMJ*Dbma`9ATE>2(t`FnB}1dnHCsQFwBsG5fiF3%3$62 zSBgnlhAE^gv#cD)?GTwP#x4j35Lk#{s4y-c`6=dAFu}A5CYUk71hXcXV9o>+%$s0> zBPN(&!2}Z=#iPAP7*b#}%0Yz`92Z_ucr(H~j@W|x8L|2(Yi3z9$(j?anPbfqYaV0G zJZd1+JoP-<*WKbdg#C*M5`vk+^6@L!}LoE-^nLxsM zbJvk?N<#ccLdQd_FnIgW5@Ne>NDf|i{YD6F=s;2Ns%aKn4a)S;P*PN(`%>Y&uH4Hg z-gBiG;RPE~7wnKDalc=$Uv@DGrzW&IM$TXILP=Q|ecLm!a?;kJg|S#U`2IpAu9QI* z7{p`%Zd0TJ(X?As3We7oC&o3)Z@o;pP>>tuXwabqC^@5KfDi>UlB4!B#!$(D)QFV4 zc;U_oDF^l$i`Czy9H`hc`RzXxMgoM87yBqnVZE$`y&n{9!XBVuM~<}QL(|qpcPCZc zZNIu3UsZg8y#15i1q5)SkJ!fTIWS?*SSO@F$8FAul>YF7h$9uGD3lkC8582CHd*bc z+Rpn~fB-hEBOciKkr?MFcH8f^Vt zE=r*ThVDHGZZ3U`t72BeZd(nt5H}CE5JWtp*Ig2FN%FgmS{hc~l&U^@{&;#-o_LsO zJO?q@y>!m3T!#?!Y5QSA2A9mj2JEOOLmgK`D zNbMcbcaj24>XWv@$SeXH{FD+*rV#RhY`@fEb<_t5RT8MDaFNV^%K#n&cEaYivY%7v zgovOljoYFvB7|W+_sa2k&{|_#35s1@J98d1?)$T`AOP#R^@x4qfGwXDX+dB>G$x^D z+=w#q=JU7(`4z;WGUOq$e2U{UTT|)rke_sJ1i`uc(H{=fgXUcXSNpFHNI%a#+749G+j*l-->6jXC)LK zbYB_MwEc`qgtoBtK_}J?a;Qv>T=HlX>ie}ldP*av0}GYH&cPTlzkuX(F?J%kx9K%h z@TniJ)d zn=2S@zgf^PS}J-oW2}|~#_~#QV{naEvts8m8c;8zsIDOAcE4y`2cd!-*C%G)u}K26 zh6Hl?TQp@N>hsPs;?~YnmO2QgESgmIrY)`P8B6~BynKpW*DYl*9W>PyV&A8Ea8PBS z2UaKqVnh2=Hx1#zmCS>08rXMJ_Q5yhp?BiGf@lqhR$ffq2OJIpz#6+2t_+LTpx7E= zItuNyA~^ysjLC*WA{gcU4_he;J?!N3}WzhpY8ACP?wXp}M+kz*{Mk^hrEx;NJNXl7DG% zL7l+7(@-bl+(tQagR?yNuFTFL7Ij}i_*&>(#xM#o0r`x1Qhn16J?EED_sgbNjE@MS zZZDVDRdwy2Ycgx}y-U<7*MNyZ*}GK3v6LMePrEOqUNVpQ3UKR5;#SToSOu95Tcg&P z^@ufZja$$2Gi&ASC+$&t+>XOk;?NrMJ4?KNB{{Mfo|GvMc^kWMG2E;*s}*kYnpXsY z@!hKbwpUS8Yme!_+vPBD9ht@G^50F!a-ZEEETW{fw8i^G`f@vzrJFsPZq_DPd{dDv zhqABJD%W9O|6B~nzaY{EnfkqkQUQn&pOh~yWM(40@hKFx+-Me^^E(8T|<1}DgWlqN5^J>?|g97|H#=$S77 zX41cbF967!%jl1t%XWlNygWTNJy7UZABIv4<@@C)m(Pzbn5h*c9GI0dgMiYHh+N|&h(cc`S!Q{urVmt#En z9%1atC1J>{Z88~?$3S2K^3RPg#CLw|cl zb>GP7cnXp7%(c;5Lvz1{^O+qnx;>c;0$iIJ(Ve50&MQb>MRKv7NWR|PQPWj_m5^C)_Bgbo$l4x5OV(chaMXZ2xogWHblbzbZTq{ zvEs2oLQcX87ZTsmo~_>{geX^e=>;?X^rZ|heZ)|b_)>>JiKp=$eu}n06*R{Wb%f-N zS|eh_MpAW)#|u*OCAmir{MbK}F;REff;DQJ@8264^Ix~gm=8M3@<5Y8dxLM~+|BzR zn>n1Ei-&c}x$m#HwX@okEI}IpTtmrG6(n|YdJ$Dprs zPo&vOw`J+y*4PtboE--=a{8}2xRJ>}r4MN2^pTBG$l1wp4B8hi)fx@2%AlzIf;ZF$ zEqLcCc;{(f$iu$inlYJK^*U(!H6I+F_dBFDBq@hDu|Yllur`m5vl|`9 zHfWXR>l9RAUe5&cKg<{_a#o+yc;C-q-<;MvPro*UUpHQcfo#lo$pOiHp=rearDrnj z;eLt>-zPhsuc)y2ltm(+3%5QrM)v**_1jRJWg31R@mx;&yU^YOu=U0pe`t% z&NO^L^v_plW314sw836l17a55p1c{61d+x!P>u%l8{Y5h_YmgAY)AElHX$Og;9QDF zpKte0!N1gb-R`(Pi@~-v8fbG+U1*bMzGlDIr1l0m-$4)|`K#X)J|uQ7a`-vrmU~X@ z72us}6~uf*=U9AE{!X@ra3y&>-of~5)-ALw(ECM4)}G8TkUQOQes4tV{12Yu(a-u1 zVsDgw#ZgW?J?XtM4t7Meyl^a?|D9uKP$vw<&X;@nc=%al!%g6yM@hg9ZMpXj8YjpY&SY-A|gkv!>9ez6y;4-KG6hZ8~-)|FqPnPf5*sE3A_*VqqB^Q|`^gt`9iWYCwn)UegL@MA7kd%sl(;>|)NCrr&kGmF@ z{V;SHDry1G@DAMM$ZXOZU&dr!Yk~g`6DbL{>aR82hLRg=%}9>W057qe_o{m58|W2h z|EQzA?lx~+zofWk#xe|(5pv|8F~jUo-MX_&AlJ9COE4>Ho|)C0Gx^)jO*8qy{3s*e zvIR?x1#*mfZ)d4eE0;>@9|(|$yV0VhEO@jAo4dhcW8ijeHLxLu97R zLaF}*#D5;Zw<7TrKg0JJr$Pfer2tN<%L~PEUQquC%nIE6|rT+)K@l}Ta literal 29117 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 diff --git a/schainpy/model/data/jroheaderIO.pyc b/schainpy/model/data/jroheaderIO.pyc index 4ab62392e1a23fcc6842f424a1fdd934444698fb..045598a56eea0c65772709f3a715e09295047992 100644 GIT binary patch delta 3416 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 QwpN=zC7ji{zq`%*5A!BEssI20 delta 3355 zc$}@4Yiv_x7=XX;^s;WFTX#9Tbd2uStt%VZU>7nrq3eJR*o6~`8KwjcJ#bKacy z{odR6eqYb+NqXl=YS8>_O!@lPUwY>apHbQY)L}_=dHP59xko&{pd03sN+T8_Sxq&h z`H;dZ2B#=%2_Yd*z-wbq!VyZiWQBpLTrU5JUv|0R8{H#`J;RLt&xD#YD)uJ~?ShmI zdspQpG_Zps*+Z=`mprIaij;CyQ1RVloT1rp%UG|nbbA_WPylwN|FEJc<_8CCE5T*5 ztuIQ6eSOG3BKzfl2jwP2R2vnf0@ftS0XIxLOb!&Q5O&0BNXzh9_{(xc1!A+(bG63T z=9jYEzsQ(SsqneXsRSBa)dhoD?X(-_v#L$q%L&s1wb^5=T`y-Bs{~6DC&X;@l7zX7 z2y`e_!VBVhl{I-eea7dRQA%8M+sd}U?VRH(+wyGgHcEHHcX?GRwe5}U%AccjJN#|7 zruJhB6tNeo3kLLV6#L;)K}cowaHMNx3DqA!yFnN$%!Sj1l`6JA_^a@kif$Zku4T_t4(R zZ^hMu@$%w1h_scJQE@lAIJuk=&4Kr%1JKu+b?mh3p}2|egJEZPT1BLGSpMWn{mstC7y*}E(dc@O84F3R6YzB&}vJ!7}c>|-PLAYCAAubGB%#1-zgJ{0bD7hMH zoC}8%S070@P_H6hOE6kj_|=_#z(- zxPvjJ@W16~NOt+Z^gvpzk_^G^T( diff --git a/schainpy/model/graphics/jroplot_correlation.pyc b/schainpy/model/graphics/jroplot_correlation.pyc index 3e45721e507c64b8f943dcb0a9ba2026c20fc94f..5f73c6bcb87c2754e965eafae7b2354792882e78 100644 GIT binary patch delta 97 zc%0j;^-+_9`79gg6+nO6gA)70JcnfJ-9s043Bph5!Hn diff --git a/schainpy/model/graphics/jroplot_heispectra.pyc b/schainpy/model/graphics/jroplot_heispectra.pyc index 3b8be0586b7eac7a3738f3730a94e6f9c30f5dd5..8eb5e83655259a33c09bfbad4ee20ac184e1c762 100644 GIT binary patch delta 172 zc$|Cg`p$)e`7Mvga3j9!x+MCB(NO6X1YWqyv}ZSG}Rha|aq3j01zB(0oo+;XZBv~vrnGwR>Y$zegfuwGU!eb=fL&Z)c3l1x(007PKGu{9I delta 305 zc$|CZ^4yh!`7VprHO_XXaea|!!iPE4uIfr6@xSas-aJ|g6T-7vk$VWN#VG^vVB!DSx1#A|jO<~b-l!68$m L*o7k$yp@yzL9cEj diff --git a/schainpy/model/graphics/jroplot_parameters.py b/schainpy/model/graphics/jroplot_parameters.py index dd1dbb1..6194c16 100644 --- a/schainpy/model/graphics/jroplot_parameters.py +++ b/schainpy/model/graphics/jroplot_parameters.py @@ -6,6 +6,217 @@ from figure import Figure, isRealtime, isTimeInHourRange from plotting_codes import * +class FitGauPlot(Figure): + + isConfig = None + __nsubplots = None + + WIDTHPROF = None + HEIGHTPROF = None + PREFIX = 'fitgau' + + def __init__(self, **kwargs): + Figure.__init__(self, **kwargs) + self.isConfig = False + self.__nsubplots = 1 + + self.WIDTH = 250 + self.HEIGHT = 250 + self.WIDTHPROF = 120 + self.HEIGHTPROF = 0 + self.counter_imagwr = 0 + + self.PLOT_CODE = SPEC_CODE + + self.FTP_WEI = None + self.EXP_CODE = None + self.SUB_EXP_CODE = None + self.PLOT_POS = None + + self.__xfilter_ena = False + self.__yfilter_ena = False + + def getSubplots(self): + + ncol = int(numpy.sqrt(self.nplots)+0.9) + nrow = int(self.nplots*1./ncol + 0.9) + + return nrow, ncol + + def setup(self, id, nplots, wintitle, showprofile=True, show=True): + + self.__showprofile = showprofile + self.nplots = nplots + + ncolspan = 1 + colspan = 1 + if showprofile: + ncolspan = 3 + colspan = 2 + self.__nsubplots = 2 + + self.createFigure(id = id, + wintitle = wintitle, + widthplot = self.WIDTH + self.WIDTHPROF, + heightplot = self.HEIGHT + self.HEIGHTPROF, + show=show) + + nrow, ncol = self.getSubplots() + + counter = 0 + for y in range(nrow): + for x in range(ncol): + + if counter >= self.nplots: + break + + self.addAxes(nrow, ncol*ncolspan, y, x*ncolspan, colspan, 1) + + if showprofile: + self.addAxes(nrow, ncol*ncolspan, y, x*ncolspan+colspan, 1, 1) + + counter += 1 + + def run(self, dataOut, id, wintitle="", channelList=None, showprofile=True, + xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, + save=False, figpath='./', figfile=None, show=True, ftp=False, wr_period=1, + server=None, folder=None, username=None, password=None, + ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, realtime=False, + xaxis="frequency", colormap='jet', normFactor=None , GauSelector = 1): + + """ + + Input: + dataOut : + id : + wintitle : + channelList : + showProfile : + xmin : None, + xmax : None, + ymin : None, + ymax : None, + zmin : None, + zmax : None + """ + if realtime: + if not(isRealtime(utcdatatime = dataOut.utctime)): + print 'Skipping this plot function' + return + + if channelList == None: + channelIndexList = dataOut.channelIndexList + else: + channelIndexList = [] + for channel in channelList: + if channel not in dataOut.channelList: + raise ValueError, "Channel %d is not in dataOut.channelList" %channel + channelIndexList.append(dataOut.channelList.index(channel)) + +# if normFactor is None: +# factor = dataOut.normFactor +# else: +# factor = normFactor + if xaxis == "frequency": + x = dataOut.spc_range[0] + xlabel = "Frequency (kHz)" + + elif xaxis == "time": + x = dataOut.spc_range[1] + xlabel = "Time (ms)" + + else: + x = dataOut.spc_range[2] + xlabel = "Velocity (m/s)" + + ylabel = "Range (Km)" + + y = dataOut.getHeiRange() + + z = dataOut.GauSPC[:,GauSelector,:,:] #GauSelector] #dataOut.data_spc/factor + print 'GausSPC', z[0,32,10:40] + z = numpy.where(numpy.isfinite(z), z, numpy.NAN) + zdB = 10*numpy.log10(z) + + avg = numpy.average(z, axis=1) + avgdB = 10*numpy.log10(avg) + + noise = dataOut.spc_noise + noisedB = 10*numpy.log10(noise) + + thisDatetime = datetime.datetime.utcfromtimestamp(dataOut.getTimeRange()[0]) + title = wintitle + " Spectra" + if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)): + title = title + '_' + 'azimuth,zenith=%2.2f,%2.2f'%(dataOut.azimuth, dataOut.zenith) + + if not self.isConfig: + + nplots = len(channelIndexList) + + self.setup(id=id, + nplots=nplots, + wintitle=wintitle, + showprofile=showprofile, + show=show) + + if xmin == None: xmin = numpy.nanmin(x) + if xmax == None: xmax = numpy.nanmax(x) + if ymin == None: ymin = numpy.nanmin(y) + if ymax == None: ymax = numpy.nanmax(y) + if zmin == None: zmin = numpy.floor(numpy.nanmin(noisedB)) - 3 + if zmax == None: zmax = numpy.ceil(numpy.nanmax(avgdB)) + 3 + + self.FTP_WEI = ftp_wei + self.EXP_CODE = exp_code + self.SUB_EXP_CODE = sub_exp_code + self.PLOT_POS = plot_pos + + self.isConfig = True + + self.setWinTitle(title) + + for i in range(self.nplots): + index = channelIndexList[i] + str_datetime = '%s %s'%(thisDatetime.strftime("%Y/%m/%d"),thisDatetime.strftime("%H:%M:%S")) + title = "Channel %d: %4.2fdB: %s" %(dataOut.channelList[index], noisedB[index], str_datetime) + if len(dataOut.beam.codeList) != 0: + title = "Ch%d:%4.2fdB,%2.2f,%2.2f:%s" %(dataOut.channelList[index], noisedB[index], dataOut.beam.azimuthList[index], dataOut.beam.zenithList[index], str_datetime) + + axes = self.axesList[i*self.__nsubplots] + axes.pcolor(x, y, zdB[index,:,:], + xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, zmin=zmin, zmax=zmax, + xlabel=xlabel, ylabel=ylabel, title=title, colormap=colormap, + ticksize=9, cblabel='') + + if self.__showprofile: + axes = self.axesList[i*self.__nsubplots +1] + axes.pline(avgdB[index,:], y, + xmin=zmin, xmax=zmax, ymin=ymin, ymax=ymax, + xlabel='dB', ylabel='', title='', + ytick_visible=False, + grid='x') + + noiseline = numpy.repeat(noisedB[index], len(y)) + axes.addpline(noiseline, y, idline=1, color="black", linestyle="dashed", lw=2) + + self.draw() + + if figfile == None: + str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S") + name = str_datetime + if ((dataOut.azimuth!=None) and (dataOut.zenith!=None)): + name = name + '_az' + '_%2.2f'%(dataOut.azimuth) + '_zn' + '_%2.2f'%(dataOut.zenith) + figfile = self.getFilename(name) + + self.save(figpath=figpath, + figfile=figfile, + save=save, + ftp=ftp, + wr_period=wr_period, + thisDatetime=thisDatetime) + + + class MomentsPlot(Figure): isConfig = None @@ -446,10 +657,14 @@ class WindProfilerPlot(Figure): # tmin = None # tmax = None - - x = dataOut.getTimeRange1(dataOut.outputInterval) + x = dataOut.getTimeRange1(dataOut.paramInterval) y = dataOut.heightList z = dataOut.data_output.copy() + print ' ' + print 'Xvel',z[0] + print ' ' + print 'Yvel',z[1] + print ' ' nplots = z.shape[0] #Number of wind dimensions estimated nplotsw = nplots @@ -559,7 +774,7 @@ class WindProfilerPlot(Figure): thisDatetime=thisDatetime, update_figfile=update_figfile) - if dataOut.ltctime + dataOut.outputInterval >= self.xmax: + if dataOut.ltctime + dataOut.paramInterval >= self.xmax: self.counter_imagwr = wr_period self.isConfig = False update_figfile = True @@ -636,12 +851,12 @@ class ParametersPlot(Figure): counter += 1 - def run(self, dataOut, id, wintitle="", channelList=None, paramIndex = 0, colormap=True, + def run(self, dataOut, id, wintitle="", channelList=None, paramIndex = 0, colormap="jet", xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, timerange=None, showSNR=False, SNRthresh = -numpy.inf, SNRmin=None, SNRmax=None, save=False, figpath='./', lastone=0,figfile=None, ftp=False, wr_period=1, show=True, server=None, folder=None, username=None, password=None, - ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0): + ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, HEIGHT=None): """ Input: @@ -657,12 +872,11 @@ class ParametersPlot(Figure): zmin : None, zmax : None """ - - if colormap: - colormap="jet" - else: - colormap="RdBu_r" - + + if HEIGHT is not None: + self.HEIGHT = HEIGHT + + if not isTimeInHourRange(dataOut.datatime, xmin, xmax): return diff --git a/schainpy/model/graphics/jroplot_parameters.pyc b/schainpy/model/graphics/jroplot_parameters.pyc index 0197eddf5b8f9b57bd8026da1f95a9a3e686c757..898f2e83e06890a956b2d65a7ce8d80c1d2eaeae 100644 GIT binary patch literal 54469 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 literal 49247 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 J9XC3j`UgJH8$AF3 delta 10814 zc%0Q*3vgW3c|K=%wR*p`yL#+OE9+sste26o<=S9bh8P@6zBXWN@OrhovR02>Y4-}t zWaY&Of@547^E-wlOoM@vHerBPX#z}}*iDnBlN4wmOd6&`U1(^4bds2qQku5s|L>lA zwbJTgn@lD%_NSwJ&OML+@tyzwuf98L`roga(#;ohvpxu||MT>5Q!8hTnZ*CC;(zpR z0V-oL#yp()IWMviRc%0`}?HeWUhz-D$^ z3dMr6H<}B18SX>1;3fj2gAL**BZw++Hlr%r6Br2lyrICMh!@UIG?$8{#T=esD5!co zb{yx#(I)tLrvolp9_J2tD9z1NzC3HPUf^*Yuiz|djsRaI;8g?H1rJR|0!k)!Wg}!E zV82p@Bhv&#yrDw@HC?p4e*c!KK(rwj`yB{w1e&-ShvO8{q444HNO&+f8c=HSAubv6 zg<&A0$Xba*U2tbc{USSkH{+fR-T~uXtsB?_oI@olBXw`_`RyPZ&KAHK^whU-|f}#bib<{Us84= z^wALzb|EP6clNv2U5m|q2sg<&eM8<*C@@Of8T9&8v7J^NunA!^!WxJ>y6wBMd5sj4 ziUt)_ZiSZ|*QAy%+*(>B>}0gGqRNuPi+QFghv)N5b3V74tfm}OF0bar`8Hl`fhSAP zZZ5!?)1}pD_K_pS)URy2Zu?%PRGNx1j?jjH-O3p_7Aj7;jh5NB%G`W7$qmPsaYHjT zEV7X%yR5RYlyAZtCOe$2aAfD}yGw_26?H9S$C8wbQ+w<>+RcYC(>^=?z}J;-sE z*&Ddj{WAXAl8=J<2)j!)H$CgTxfZq5VAh?-g;2SI$HZX8}4`gD|bVCmjmvt zY}H)4UO&Y=4<6TbLw1e}Eb6)m_d;kwXqJ1^cG*HkhtN7_zm~-|Y(+aL;&5M8{pxl+ z7Am^6ElA?)lqRJ3dnP@RAWo)q%)VOnADP1QCkx$a3c48labb1E;=Ak;Ot1!aHC1u+ zvKHGGG=7o-IaCiqJN!k{2EG%x$C=*Hg---qG}py%kvtJqBg$TUek;O=?uoY}96<0O zlp`EO@FEN#{1Ji=VG!XE!Vp3PVL!rcy8q~IL93Q|2cn7}AB`f6A%qaZkmoGDn$$L- ztBnp%oN^f95riq63J;6yTUYc^UE3tWvn;_(PWVhqmu((9 zC5Y*jmM$xaIS%LUTJ0gB97lMRB`&RTZ!n^qkQSlY#{IfrP9l63!Qdz&u1)%p{t)2- zgi~;OO)Y;Ao?o*qHDRQk5yKjxueFYwV6yf6j)(BIhe@Hjj33e6AlaFf&m&w8Po;f9 z4EP27v~3G~gYSiS`;K*4?4Am?FIOC^AxEk+q6U3v*hz%;Bq~P|8a!-rI?a->WH8}R zqeg~kz{@5FN1m#K1HD=Bz&$Q_wxhbzCQnGZR)b>!x{D=+ec0jTnGa4l^683I_H0kE zm9QcQ?CvbCy&4~{m%6<~^7^qD9z`1v;;;F*vBZD^d?;>K zVVN_WPuHSl;`2fltHoDJrt1<%nyzOtG0w^y)2o?3olQ3|zgWGIsYPtMi3Sx5qrQ<1 zm#~pE7TL#R#bo3*9DxlxQyn-oM7}X>XVKS8YAK6V;zHBS^iYT^lf}gKpT%O$@QL-+ z#n13q4!vG3U#x(aZ*T}J!iOcauuD603-jm6-M47FU&CSA z+o-on_GVIVmh9a}y>6D6VGV<#4dn&*($i{|c(V@vU_)tq6^oVA-fCE^f*Q3frtMb9 zvYrjsGk*c8Lp)iHGSP$+E2Kt4vXmNGY&8z%Q^&d5M30*B_uktN^XXO;UaXasO}8 zqm7l6O}C2^(_+Kz%-=~;6V_eT&W6R0Y7}IwgZb_Bf|L2_oWmtB(d{Y|wj*@b$o!Rf zJbx9Q*)OE)fG>Afw{)_|MbrHCgoQe2O)>vkxpHh3yx-lns)+f;Tup4ol*uP9n#8|b z@U5%ZjG$(0b-}icHR(biVrNaW;f=5IZC%op@%lzbzBY>&hW|Wj?#-!)rWV9b~EJa7bp?k zh<-ah&k}*KNdE8yJAz{hT_|+HQ{<98FLY_8*ynTd!kHh$Aag3iOhz&^h<&wnz){DDW5?|704I?iV?#Y z8Q6LKSR@aMbxt8rC2ZXlNa5Fr( z<=#EX@s6NU!4bkn`$xm7#}kZh4TlDUhqUYTdrv)HC zi!D&jnMl>lGF7w4R4q-WYE~Kfq|3-BJrVh++B{ivQ#Dta>`go@kc~n(*1MsgNE)XM zgI?{erZA|8!l12vpGZpD%B%D!XypM=9*XU8R0Y}|gLgWe@S6!6{A}CRR~837KYRMR zei;Y-&-IBo==*G`I4D&bm!q%m*6nZw!O+U%pnSBHZ=nQmUyMJP>8vZ}#im-5l^b!< zg1k=o((EAzkh&vqnFR&_FVit9NN`#@NcBYP}-tpKA8K>&-n}*)l5qF6f(2FMKD5XB3UhQL(YpEoR=zb zBl<;u))=}1;c||u7sJ%<1qOjnbD4vx;z5kQtmq9#7;Gg{$G~S6*2GfwP z>#9C^e=DV$OH8@+8xWq%C||Hg)K?rH9jxK)v;F)2$}Bh`_rSVZ68zFUQVZ=Pc9=e} zai`&<8xXpaZ4*tED&M1lLxGTg)H@IujcT#hivogJ>zyBU+lU zsDULIA_Yp)ec{mXZ(5Z5@GvG2#FtB1=^{GRVg$4jIG}N5-J2YRMeuUadAqm0$91D*sX?`O^KI+#F3N;pTDS=SRFEo1Ek9wYpAzOU}*`HDBTI-US|y zw>mN2P$1|DhWvpkO@1enC7%3=N@IXiQVT1hfjoF_?7oyVaDjb1G+=#047gy1mwQTh z7JL-?K^#-MMQXZNnE6C2ai~cdT_y~UGUMw^_RmzGqX=crg;N> zKSiR%@5CYRSU~wXOMJpy_FFi7QO)HiX8%m>=DZ!=nyfAP1)EbNS0~3u1IlCIykmPg zF&M@8zeM;IPMk-_hWH(h(%1176dip>5fGrl$oug09R~_dEq|nD7(ATE&%os2w-Y&? zI@J&+OMjcONHegA>P#sS<578RFg7@wU9xHvuORiRIN{L-5ZH`k0}3+&wj=vlaQ3&MR*T# z?{dctUdHu@qN>+7qL~(@a&IA|NYRu`Vbcvwx|SEOXr++&^ZG11%jAw1&^Bghn~b20 zba+A++q{o(sdBaVpz&C>jjlyliESY(e-oZL_NA1p{I)JZgNuJH1#t< zCwU>fDHIF`Xi0^0NI&V$Sys?!^IHt4% z*nernOlrfu<_HK@kXOWrnn<;n`z3^z5&jY3hX`MnvLLQXD1iQWFXe?G0G`Njro0nk zQ1j5Yv*+9i@XLp)T8T~;Ezy-@FWn5wewDC^Q7!P;!|Sq1f0R^}!iI diff --git a/schainpy/model/graphics/jroplot_voltage.pyc b/schainpy/model/graphics/jroplot_voltage.pyc index 9f145bcdbe6a3613ab0416fd50e7a11831bb807c..4e6b3185657e70ea5767b03f683f202185945f60 100644 GIT binary patch delta 134 zc$~Yg_g|NT`7^Fv(B$71N%az|@c6ZFXhOU_|0Fvv#r|aUXHk bG9z)f^0KibaRo&M5qhVfSiw5kMqC;I0h%bp delta 222 zc%1vMdtHx%`7@w#?1hLvP1(%x@0GUuuiU0rr diff --git a/schainpy/model/graphics/jroplotter.pyc b/schainpy/model/graphics/jroplotter.pyc index 752374ccb29b1088fe3e73f2522293ee43345ffb..ec931580ebba136bda49a20f5a1c532662e45716 100644 GIT binary patch delta 439 zc$~XpKF5rM`73UN)&U`=G?pL~kd0Z4MQNyANOmKO%f2Z?|PDHLOn%>vrK*@gWK6T&f@lekVW zBe|o7FN86D@b++euAb*9=!_WiB0Afib1kqr%(?PZ@TbFB=ws_$`Nv#t3~-3k(AyRJA$P2 Yqj*1(+$D)65Z>m6lB0974mi~s-t delta 653 zc$}MKcEy~7`7HUkGE${7Zz75r=X9Vn=Wo7b!jghaLloB{;%SO0osJMR5SIugA^+ diff --git a/schainpy/model/graphics/mpldriver.py b/schainpy/model/graphics/mpldriver.py index b1a2913..65b77f9 100644 --- a/schainpy/model/graphics/mpldriver.py +++ b/schainpy/model/graphics/mpldriver.py @@ -267,7 +267,6 @@ def addpcolor(ax, x, y, z, zmin, zmax, xlabel='', ylabel='', title='', colormap= cmap.set_bad('white',1.) ax.pcolormesh(x,y,z.T,vmin=zmin,vmax=zmax, cmap=matplotlib.pyplot.get_cmap(colormap)) ax.grid(True) ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 def addpcolorbuffer(ax, x, y, z, zmin, zmax, xlabel='', ylabel='', title='', colormap='jet'): diff --git a/schainpy/model/graphics/mpldriver.pyc b/schainpy/model/graphics/mpldriver.pyc index e98c39818dc24c4e695b1f6c68ccc3f19e2c82dd..487516de2588edb3cb16767d251277baca4edafd 100644 GIT binary patch delta 771 zc%1uMe6Wz6`72OyiDed!a#EJE!NF& z6>5|3vGFr%O@7C=1R=)H1=5vRmg<(7URsoDKlu}T7>W+I$@4il8C@q=amq|S$`OJj zSIf)J8J?LJl39|I>IsxjMv~Lx;$igNY|RzMh-OuCQEFmIs$)fJap2^S+>(q;o4I)u z8Bt8-XH1yf%li;XY(F1AW9H`bd||9ef@LE7jQNw>ME1eOv?k9K zI2kui-YK>SNodAGD86I{@MJs>$hC%cGS(#K$kn$;Qb7f;{}3oIo}sCnFmpzcnX|5Ch(=YUf3d^*HGq~Zeb(>ztZ}mLd#aa4H9ZBwwL?WTdKM}=HjzUr~qV%K61QB~A zPv2`8rsx-KOPDc_L+^%vrro;U^B3qRy)Mo|nt|{2hFFzu#y5mm5nX6^R@>JC|14)F zX#*`vZ2Uw7mf2ra2O&_JsP#Rjh8`gaHW1MGLj1&buqz7NBW1Wm%f>fJBQBd5S}ZW@ zqTcp_%$%+U?T)`r_oa3ug-<#o@RSyvR}#H2ir_gdk3N*>=`jK?S$=FQDh7-=w|pY- z*4M6h3%{5<;VRNeNa(d@H|X}Z>HYLM0QNn7Qrylg)_B&90ldq?j4#3H0oMS9O}lqw zz`uh@z|1~0ACmxgb14{Sk8;O^FLbyBHCCE>D>8q+oKWvJBh*U5QRONEr?n;d~ghpX<_bzq?{R^;vKD)ehBqEe5Nx?BasN{%vWp86lT-DJlQR-C V^WsyJ@{<$uQqzkPCr@I^000PP7z_Xa diff --git a/schainpy/model/io/__init__.pyc b/schainpy/model/io/__init__.pyc index 04b59982bf06966abe2be0eb4e29d46a14c9d8c3..f65809bcdf3c208a18530602402dd841b8b7a14f 100644 GIT binary patch delta 30 mc%18DX=Gt%{>;lYUCLo2`xHh-tI2a1<6C! delta 42 yc${lw>0x1K{>;mDD_MCX`xHh-*U57j<+ %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): @@ -1417,11 +1417,12 @@ class JRODataReader(JRODataIO): print "[Reading] Number of read blocks %04d" %self.nTotalBlocks def printNumberOfBlock(self): + 'SPAM!' - if self.flagIsNewBlock: - print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks, - self.processingHeaderObj.dataBlocksPerFile, - self.dataOut.datatime.ctime()) +# if self.flagIsNewBlock: +# print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks, +# self.processingHeaderObj.dataBlocksPerFile, +# self.dataOut.datatime.ctime()) def printInfo(self): diff --git a/schainpy/model/io/jroIO_base.pyc b/schainpy/model/io/jroIO_base.pyc index 09c99125805b6b59e63daa17d10323c2a4bf5e41..251696dfea5692510ef1b8dba19a6ec73415f09c 100644 GIT binary patch delta 7016 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 B7Fz%S delta 7402 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 diff --git a/schainpy/model/io/jroIO_bltr.py b/schainpy/model/io/jroIO_bltr.py index 4f07adb..ac987de 100644 --- a/schainpy/model/io/jroIO_bltr.py +++ b/schainpy/model/io/jroIO_bltr.py @@ -30,6 +30,7 @@ from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation #from schainpy.model.io.jroIO_bltr import BLTRReader from numpy import imag, shape, NaN +from jroIO_base import JRODataReader class Header(object): @@ -426,7 +427,7 @@ class RecordHeaderBLTR(Header): return 1 -class BLTRReader (ProcessingUnit,FileHeaderBLTR,RecordHeaderBLTR): +class BLTRReader (ProcessingUnit, FileHeaderBLTR, RecordHeaderBLTR, JRODataReader): path = None startDate = None @@ -450,10 +451,10 @@ class BLTRReader (ProcessingUnit,FileHeaderBLTR,RecordHeaderBLTR): - def __init__(self): + def __init__(self, **kwargs): #Eliminar de la base la herencia - ProcessingUnit.__init__(self) + ProcessingUnit.__init__(self, **kwargs) # self.isConfig = False @@ -541,7 +542,8 @@ class BLTRReader (ProcessingUnit,FileHeaderBLTR,RecordHeaderBLTR): timezone='utc', code = None, online=False, - ReadMode=None): + ReadMode=None, + **kwargs): self.isConfig = True @@ -717,8 +719,8 @@ class BLTRReader (ProcessingUnit,FileHeaderBLTR,RecordHeaderBLTR): self.data_block = numpy.transpose(self.data_block, (1,2,0)) - - spc = self.data_block.copy() * numpy.conjugate(self.data_block.copy()) + copy = self.data_block.copy() + spc = copy * numpy.conjugate(copy) self.data_spc = numpy.absolute(spc) # valor absoluto o magnitud diff --git a/schainpy/model/io/jroIO_bltr.pyc b/schainpy/model/io/jroIO_bltr.pyc index c88055eb2f2cfe3ae43c158305e24148ef122c49..1a0ad74204b886a4a1fce9bca66ca3f1793b7175 100644 GIT binary patch delta 4103 zc$|$_du*Fm6+btQT_=tc=i$UjTj$|C9LISyNz;rZPV;h-rfr&=w9r87dilPj&cn{^ zFJ#?pvMz;gqGjE#hJ@(Y7<6=lwL+$%qNAFasL+ar5QxG*i~&O9@dpeL+8^7v=Q{Vx zL)jxze)@gqo_p@O=iGDd_4D5$FJ2)#4ga=gJ{;PAdS|!;F%1Vm0Nzpz@+NIa` zN%AR4Iwa|oq)QT?B;Atim!wCMUP<~mSrM#XiUuU{%V-ZuGPFi!8bnHYFotDH59lf7 zkr@HC6jYwudQhuiIvtdQ`Y?~zAsog@hlMl?#XNch#@(arABKBHZo&_zX60~zj`jz& zAXS5k8fCAgUn89?Xf0(=4wtc4j8;<3UN^Rt zV9|{HdpR1?)P`jKjs-$&?5ug;`tmti23J^&hQiu#cskO|@-iwbi_q^(4uQZzL|K|w z0|A>({K9Ir&EMyNulL9lV&l|8bTb?q8nCC7pt;Xt9L`>ziYLS6YPi9OSM~E*5}cBG>0J! zMx((qw2>`l7kJQn+KM9<4yQ#@CzclHRoeDp`@)!AVDD!;?HF5HfgmEfPegP}FmX0b zKArPtBO7yGv7Nxr0K(@GPO{fsb!GIl+^)MxhLm<7bRu-Ipz{)Q7G|rb z>0<`FSI=3>Cxj+;x1!vKait9yLgDv7-ze=5j8D*`eG^CN0NtZ+rdfBe8v)xrZDEbB zJA4uLj_ZIOBkMNl5x}(2y=<&9zobp(P7N#m#qFviOA`}^u%cY-*Om8*_3UVPVh%^b zYAQ{i-;yCbm~STC)rG{F#wi}S5i~u@kGBReOCSyqCvY)&yk?%5gpFl(*Ih?i+5gJU zGRHpct+t)r5+8Qa+q@R$TXXWfvOS;8@USW5FtmNIMf05&>I7PVdIKl;e6>&hmE`7nw`$N2P&!PB> z2wy_L?R-qDdX|6gNvbV9X`gu%)|$?|8m4E(5k*KKh*}m^j{QY+TU@kvJ~B0za&UE% zmu|y`T)n@yWW%9*i3<-VLv2>l9F}v$vPY<&j-zA(WY5Bk2cyC8jOxx12HDkprQ|yM z*}g*?vVW@GMndd?_TAO!90sHhH|gC0cz$P7NbpW`%yGXh$se@W8pyls_Z?SP5@v{- zL36-tClY>>79=vncNfGn@S9H#_=JgEn5}_Crrz50{m0WD8yNsMkezp4{!t(qCJ6 z3lAO^&6({wNVX`r#mIc~R4}T&%Kq5zB6Z9(&`MTV$H4BDFUT69qTEBG?doN;*rCIztbl{408W;a2EHgfY~0a0v7soS@i|*u4Q88D(z|lv~8* z)Q<2PEAYFzjv>YR61U0pd?ct*3TscK(Bk5_Iu!{kF?wCf!hZk6kqCd7#Ar9u{N3$8 zLJL`&x(mI8@Fc=h2;#1sMVLdFM`&Pw_wVB2F%OQBb8K?3Y5ED-xTYct{K4^HAl0*O zO7Ssuo?_9{NfhI?uVF`C45gk9;t7EFxOfMM8GWaN;r>uequ9jUm8o9w&q0s<$4GyI za0lV%2yZdZ&?@;WyEb%ly)R|HjCsZee4D*8Je!`DL-LvXz+}t%Q)gLkzuPu>gfAmp zW;YJhb^Z$0?q3Dp%)iBfT-mkhb08c0GYHs)=}R&O^yMx0^n+Y@jXg5b#oxWRM}Aqm zte=I{dhm%}r01FW(0f&n>nn?C`kg9zExI}!=2xBPu+#SNhZw`Fiae3Lde}i~FUu`# zX!zOWBknmL?)(`ZmKcTxGBe0w_YR!3{$|0?KtPF1$@luQ9;fFv2d3Q0mwGgP?J74J zOlcYBob1#~Qk=gid*?_uuj}Tq7f6`>ZfyA!9_-m@WOy`ie=w#}tK50y{#kWOqxb`W zuE@;s*LQ$6g1rA0Kvpy+gyQ1sTip5^=PxvmTxIXlW<#3Iz`Wy&rqU1K1NhDV0mtwn Ar~m)} delta 4471 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 delta 3532 zc$|$^drVVT7{8~bwY1Pygv!IpLlA-jGAuG3lS~nCJTIX5K)kjEDz(M-LKQc45?vIH z+dhnn&TPKs6f^Z^+2TJgI>qgeWsBLCWy{PS$+kE*H}#Jhr@P;&w+XYS0O>C$_xsLw zzUS|pyO+tn5u#Jyjn#jD|6a>^U8$PXz(ifDq0PC*YZpAu4xa#mX}UC^o$3j6AF2W=05r(5^|6}RbsRgPeH+qVdaLXEQ(Y4MQ zOydB|O1G147)&qFzCyDJpQQIO>a#P$Og@F7j6K@j!65Rcasgnz;U;IkPhG6P3+z(3_h@Cc(+vUJ?N7jOQ#gX$BeA2^*T^u4)vW-FyqP z9ziz9lLPRlVXW}e3_qiJC0RUQIyy6+M6E&1#}*5Go@X%A^p=Ju$ql#izGl>3SCBx; zVQRrvhWzJ(M6yEqw;-2jX+s=@yh58i`u4&X89VM3CXrQOeCEOAKE(q%|IQ8FwSqiT z0Z1*fB&OG5ac|4?gpe%`uNEgbkskMjb%);h{ z%NSncpj%;D`4?mt+?Q!TtVI(gT%S{LP!i-pTGYl!RZE41td_hLRzeQIp2}K%nm+Bx zAADE&So<0!7WkoRC;}^9TWlnD>C45PM5fy3t7kEMKPlVV0T-*!G0PT5j>DCj>PS&_ z`&=He%G2&W3y#{`!SU&XrFBhY0EX*W9bu}EA?IOA{T6MIh2ib`N#@hzU_TA=#g!ud+rC|7|VICv$VOq5cKApsYi@&;M6pz*gd9?p&D&-UgB~QJK zIOS!;J$V_)$-#vlzcl8c@md#+4LOpZpfq>DSGQ&@j5N+P9Kr9+2usFb%^y|D8wz|) z)#MCZYT8QDV1DzkF4QZxns=q{RV?Pv*GTtx(u-HwA8>O?FVwBn_`fTX z3dS^u^(E4crTJ0IXo21cZ682LBg#aFhME6RDJi{JJ>EcY+G&DjE7TAq1nS#h?$`Fa%i5Pm^ORO;dOb`;Lyk3(#0HaQBm z)=owT;hn9A-&#-SM|?)`DSh-tIs(-^VFJhih;F+2X}L6TKY$+y@cak7q9r6u%V b6&(YgwPg@D{MGi5F_cBZJk4>-WA4&_zO{Ph diff --git a/schainpy/model/io/jroIO_hf.pyc b/schainpy/model/io/jroIO_hf.pyc index 4ffc07c7d28912c0bd989fc3feeaa6ff753bc5fa..22b31099a57616b37a6cc8cda9bfcdc1301a4079 100644 GIT binary patch delta 2045 zc$|Hee@t6d6vy9f8S4)>3rf~uf52e0gAE$H(n8S{lpm!~++|bwNA222TY=KGC9uK7 z;3Oe&L^xYwaL9hB9d0q2r*4VHWXTrX{uuh#wro0=_=o>#vSt3UM1AL#_jtwPOWr51 z_nv$2Ip1^c>7{uxGe=a)2b(lsJmcw^Q9UBnGymAYM$VIIxJyQ0zv3KhP+lPQaNl5t z(rsq$u`;BT{aoDGOvtzJhic&oji!Wuys`LDsvb_Oza|yPDvlPDga` zgYF<%9h)fVSUnf?g|CwZ7%6Or>xCDk@iJI`>WbFIZ$_PnTKMScA7!g972PXu#)%e0 zE20hI6@AEd#0+^`?#P1Op+80PGwWe_>$GepU3@~O3QQV&x2}4bn$@pttQ|~%HPz-*KqkSyyVTKytF#E6=uwzW zC8LMgHD$4~KjM9u+U?fOuBW)saV_HkS5P}aNGlw7Hp0)&Z;IcRk{3gu1oQ}=YJ_E1 zF)X))mMK;riRmfQd=u^0T=w@uFp!1n(J!_DoGla_gvMx z#Jdpd4h+Qm*(5!Os}|vc$3UEL%`;z@#(@U0W&)Wj^&AdjUD4-pM#Ce*M#GU5UJN?G z2>oZFaUY4n!^R#`2mU6vb&qHojmNv$;9xA2q#hho^XN^m2Zz{L@DOc;FPj=TF)rWy}z#1pU@57_HVqvSo>{5_fA^WHtRJsRp`5O_IZb zcwl5j6QQ335{bYeS}xTjo@K?xPM<~eAnqXU=FS!00B>=+HWwjR!RxIcw;}G;7YQC; z7K#q>6JiPGy+)badF{XN_*lAt_i<;1bgq59$_V-P7Uk^uaNW0S+<~8N#3$J;pcnBj z;w{7&Vv<>D9rU>5#)pWLlGN`Zjv*Ehg1h*SNY5b7BJLq>BW^N$*6A%F8W``;%l_?t d?U*&sOD73u3V9Mrvj`D{naP-1-{sj)>*Z2Sc delta 2402 zc$|fnZA@Eb6vz9t6FMq*DRy+DYYPktt57U&<7I<}GG52r!^}3nj7zzFarA|@gpHv@ zfy9kP!;TBdHuh@R+!8gpaT-6EeGuXYli^F;BFS9*V2m;QvQ0l|)O&8Zw?TW?oAlS_ zx#v00IsbF+xt%*pK3yPM&7ZKCue|;wsgvL^YvOP4W61t$H&W#5dqw zZrEEUe5*vnQUzy*;|xQx;S@8HGI%pI<@Tmd3zl;alWS0_?@me-(SM>~?9Ka9S1&|C z>kzfj@cfE`WvAgs;s$GX{0zqy(EI8Va%M@m;N5}#A%~}ZhLZ?EyQ-vQA zFH{$mk^y+7Xp4ege34#5dSSWb5%Ixir4Ah?OrJxz;Bl#q_`zh`ma1`WUlB4473Eti z-Ew02a-L#}orsaN3fgS^=j8{8F6pNetah`b7dN3eeR!3L;)v2_2pElfLg6v`GA_P} zn1Z0)$arOG(TKhdXY3{G9530or<9@?oG<(-WLsIGAQk-W*72t+Ohl^mUrrOOR9YqTt{Gs2!IR*s`Hl}91#1qY~wBVTkbl09(GX(oN}hqIZ?KuvXFtqXVS5RBALJ}w>$ zjC23#khOCV@4(6GCT1>u&lW>|&5}Y(6x4bM*$b0(uH+QBU3becDOWg%@FOPp+4?-v zkrX&td?Vs5dC$c9jq_4}q@4)G4ObKjvZ3+3u2vpE^>DMXF?DJAvL?TVEW+HbC1btx zOojT{U}Tt!(QCN-I)qwGqz-0V78(|Dp-E~qHt}dS<03XA-HCUy1o*jt&mZp%#Nu=~ zF#_4v{UivtS`U#Oz_^;qc1fmzNTi?hghN9y+Jb8v1$d*}$S4=`9HXreb2Td@`Ox)I z#*IXN;ap?NMk)c)_JPv&w)dIDcEm+deM+vEoT&n&|?7Ih*HB7Q)urmwj$f$#F?cJCnM3;3?1wECW;qIa0}^@WGn zIGZ?0OzgJU_=pw6G9vRSDNc9(;nO->WiiA%Wu2(i7z!H?CdU| ztU(uzi1(5c3Be(z5w9VRBW9#YMnMkbEaIG8q*=r%1pXhOV!)RWml0PG_YtTK{az*X o6TK_u0}s1XXKn^}&uPnf`Bd?IvC85DU_cDQlOCl``l;9PFPzv`X#fBK diff --git a/schainpy/model/io/jroIO_kamisr.pyc b/schainpy/model/io/jroIO_kamisr.pyc index a9cd7617611c1dbdbc67f1bdc310a37dea377eef..d9b8e4bc0ff778ec73ab2e16451fcfb487d56870 100644 GIT binary patch delta 756 zc%1t>fpKadBM0+mUaqy$4v`xPcDk)L&Q0M{&-NrDRMlWhd~8Ji~i2zJ4> zn=tO0Y$miDu11ruIJG1ou_!S&wIsEuc;Dn;;bTa4rHk-09@|_l;>Cz0$S=mncww`g zSPin^3vnLCCzHR5`yzQ{f&>fWi^)?Z_8_U7FDb@&ck?#MO)N-)+vG$UKW;uFC&dVN zm>HwwW)B5!WGfabiZUv0-mbU;IW+n;I3{mZ5n$BZd`yK4Swc=-oY7~qnL3IQ{TdRC z37c1FWH6!`k)|cUSh~4f>m4JC5ge0u>+my9*nC=NCXxg%2Qc7^QWH~L5=#13AAwT2B$>D}!a544C{|$M8;mB)L#fl_&)0~&_)aK{rX3U5%V>JRAEi<{mdI^dH z*(PV$2r)WsuC@_Hw(6c8H>1bqS9U^3j^khkIj%G>cXE)!eWb{!cNCH|W@f|&c~my9 za+GI8as@ZgjM~jI&i=@PmO#PQ&HG#&kOhAL1*cCAbaRD^sWVnge(Clf$(d#zc8u`= DXcyZJ delta 1187 zc$}Ns$M|&uBM0+mUaoszzeH^0_`=5MIr*ZpJa>F*Qhst`UTS(#;^dD8N|Wu_b-9^1 zL68xMnKzfQCo*AGs;t1uz`#(PT2flz17auu2?k!EE|5M(enx)g%~o8quv?=%d4oL5 zWNATu#>&asf?ZhEs89YQ$ji8KGMCV9oMy01<`d>++&WoC_!tf~sv`W1dpDbkcrjvE zz|RGAb$onrYK}`{Now)&%@;*$a44NTL7a#2_T;(ZzSx6~EhrCY*8Ryw5_@nMU??fZ zcxAJP8DDG;mXpHegbnh-i~^gF$aCXTU@ONtSz3{YQDU=(;tCuQH~GFg z$7E?00Y-(*Ix1Ya6us5v5J)Ua&Tz}jNiFuz%gM}3b>2Kt4X4fb)g>6iH~&!2z^#B| z@@h>1#+=Q2G~eM;^j2G(v3)bE&P?2qz`|LSnwSENuEhD9-|1T6a(}h~KjVtY)dpc$ z6-Uy0ZpO=aaPwC)GiF?IZ3K*K;mO5TOK|#@ZE}LO5ToVhVrx-cZai(v z&1k>*x~&in-*PYmZ7C|vOPOq9e;-GN4RsKf)L~}C26>b=H#*2;Hyh{$ZlK{Mn_oEk u<5Xb@R8h0J-q``CiXT7~eUsT;U2!S+15}Vdd5Y_Qobkyz`L>%SV;BI+c99qW diff --git a/schainpy/model/io/jroIO_mira35c.py b/schainpy/model/io/jroIO_mira35c.py index 6e656cc..b447548 100644 --- a/schainpy/model/io/jroIO_mira35c.py +++ b/schainpy/model/io/jroIO_mira35c.py @@ -416,7 +416,7 @@ class RecordHeader(Header): self.RadarConst = header['RadarConst'][0] # #84 - print 'Pointer fp RECheader', fp.tell() + #print 'Pointer fp RECheader', fp.tell() #self.ipp= 0.5*(SPEED_OF_LIGHT/self.PRFhz) @@ -456,10 +456,10 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): - def __init__(self): + def __init__(self, **kwargs): #Eliminar de la base la herencia - ProcessingUnit.__init__(self) + ProcessingUnit.__init__(self, **kwargs) self.PointerReader = 0 self.FileHeaderFlag = False self.utc = None @@ -490,13 +490,14 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): self.dataOut.nRdPairs = 0 self.dataOut.pairsList = [] self.dataOut.data_spc=None - self.dataOut.noise=[] + self.dataOut.normFactor=1 self.nextfileflag = True self.dataOut.RadarConst = 0 self.dataOut.HSDV = [] self.dataOut.NPW = [] self.dataOut.COFA = [] + self.dataOut.noise = 0 def Files2Read(self, fp): @@ -543,7 +544,7 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): timezone='utc', code = None, online=False, - ReadMode=None): + ReadMode=None, **kwargs): self.isConfig = True @@ -553,7 +554,7 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): self.startTime=startTime self.endTime=endTime self.walk=walk - self.ReadMode=int(ReadMode) + #self.ReadMode=int(ReadMode) pass @@ -576,9 +577,13 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): self.Files2Read(self.fp) self.readFile(self.fp) - self.dataOut.data_spc = self.data_spc.copy() + self.dataOut.data_spc = self.dataOut_spc#self.data_spc.copy() self.dataOut.RadarConst = self.RadarConst self.dataOut.data_output=self.data_output + self.dataOut.noise = self.dataOut.getNoise() + #print 'ACAAAAAA', self.dataOut.noise + self.dataOut.data_spc = self.dataOut.data_spc+self.dataOut.noise + #print 'self.dataOut.noise',self.dataOut.noise return self.dataOut.data_spc @@ -629,7 +634,7 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): pulse_width = self.fheader.PPARpdr * 10**-9 self.__deltaHeigth = 0.5 * SPEED_OF_LIGHT * pulse_width - self.data_spc = numpy.zeros((self.Num_Hei, self.Num_Bins,2)) + self.data_spc = numpy.zeros((self.Num_Hei, self.Num_Bins,2))# self.dataOut.HSDV = numpy.zeros((self.Num_Hei, 2)) self.Ze = numpy.zeros(self.Num_Hei) @@ -693,7 +698,7 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): npw2 = self.recordheader.npw2 - self.dataOut.channelList = range(2) + self.dataOut.channelList = range(1) self.dataOut.nIncohInt = self.Num_inCoh self.dataOut.nProfiles = self.Num_Bins self.dataOut.nCohInt = 1 @@ -756,7 +761,6 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): self.dataOut.COFA = numpy.array([self.COFA_Co , self.COFA_Cx]) - print ' ' print 'SPC',numpy.shape(self.dataOut.data_spc) #print 'SPC',self.dataOut.data_spc @@ -764,20 +768,26 @@ class MIRA35CReader (ProcessingUnit,FileHeaderMIRA35c,SRVIHeader,RecordHeader): noinor1 = 713031680 noinor2 = 30 - #print 'npw1 db' , npw1 - - npw1 = 10**(npw1/10) * noinor1 * noinor2 - npw2 = 10**(npw2/10) * noinor1 * noinor2 + npw1 = 1#0**(npw1/10) * noinor1 * noinor2 + npw2 = 1#0**(npw2/10) * noinor1 * noinor2 self.dataOut.NPW = numpy.array([npw1, npw2]) - print ' ' - #print numpy.__version__ + self.data_spc = numpy.transpose(self.data_spc, (2,1,0)) self.data_spc = numpy.fft.fftshift(self.data_spc, axes = 1) self.data_spc = numpy.fliplr(self.data_spc) + self.data_spc = numpy.where(self.data_spc > 0. , self.data_spc, 0) + self.dataOut_spc= numpy.ones([1, self.Num_Bins , self.Num_Hei]) + self.dataOut_spc[0,:,:] = self.data_spc[0,:,:] + #print 'SHAPE', self.dataOut_spc.shape + #For nyquist correction: + #fix = 20 # ~3m/s + #shift = self.Num_Bins/2 + fix + #self.data_spc = numpy.array([ self.data_spc[: , self.Num_Bins-shift+1: , :] , self.data_spc[: , 0:self.Num_Bins-shift , :]]) + '''Block Reading, the Block Data is received and Reshape is used to give it diff --git a/schainpy/model/io/jroIO_mira35c.pyc b/schainpy/model/io/jroIO_mira35c.pyc index dce19e7f96195db888b9e577b7e0962621499f64..75a01bfa3d5f7f89c9a9e61c4c39412f855884c6 100644 GIT binary patch delta 2082 zc$|e*Uu;ul6hG&-z1?lQb(<+`_ov(1ZWPyce_^aE8&I|pbfdY8ijkyFZdo?W=4fXS zH|H`X`d}m+UW}SJ5##|A;2JTQ2)-C!j7Ci`@xdn(O@x?8qA&jW&ZW11CX4xUPtKp; zIp;g)`@VC(T*n*lpxyF&rQ>4i=oR~ID-IL7n`uD~QPOs}M7m=;bWhS3y4-BjC*607s*rx#Gl3So2ulD<2(RgVZFLybtSrwqLb?@l0p`;|(9l$d zU>azyJs@eQpK1RFX)ZkG$k{}|x%ruFh7Lqq%B!cQZBDGFRd)-mxZO1_RM2&ANd~Xa zY`a_9ol6~6_=o;U#|q*)4Mu%6>iZ&i7)+8aKr6VEFwjtILDVD&F52WAha0 z_6}bbtg&f6?a`U1GdZUaw5iAg=(Cs56< zI;WkB^DQ|*YoZqt{)Y`YQRdzE{|UBlmY`8C#-@J~Hj3_QU-5(HhnFQ-axvP-U+9u) zV}k@fFI)PH>Viw+J_dQSSaMmc-T(1PEDYNoa=-cGec zk?sIb%OH#~Y!LEE`(X`PAA)6ZaoS+HiZd)*n9}P*&9&^s9=pt7JLu+6J#M8Rh5{>_ zXEd)?ztQ$R9F9%R27M5wEu5DDdy6i`@=eC<&ffc*8_l*N%qH^_Bn@nw4EO7v;RMS3 zZq;*ic=r&Vr#E-sLP^i=IfcG`tUtx%5RU;X&!tS}n0k?FlTVsY`9yM$c*=BrU)Xt` zH9Sky_vrS%?kdA$elC+$ZwQ9`Ba6l7?o_`My3;&2&eE?VCz~W2dMz@_lK8MevPoX_ zOCBkNtvFOk%cBE$g|3YzdwF`P9~MUORVF-wjPYRvEso!fGx+3KM?*x}qEuRN<8rwb WzkYLUtBe=*pU1D2{!Q*2{PADwNvvxC delta 2241 zc$|e*-)|Ik5TDt-z25HKv8DFf-WA&G-L*ZSKe$4F-1Ux@{sawBwnovH6T8>igS5~) z2H|T)-<4}Q+>P1n={*u9rF}Nq zo6-~38YAaiMjN9^SJqM!F)HOxBpa1iy=|=u8w0*Q)}apD_?oPK(%K+mIQ)ZlY4b{) z3XIqo`fI-styL7N-y^(<)b6h~Uap_U+5$qh1{MKEcj*2Vf-oKp(BHvh>nj0ZY<7Ak zpP36z9tvv1gU@94>zTP+8&l8=4N*GX;1r^My3%k`&@vPYg=|tj8!C5gWkw+T1Ul~9 zAd0F?--lXl65ScTQ;Q5Ouy>HXxucBB17r~j0E@;%q#DChz?tkiNH>7)D4s)*5A$<6 z0y@%CV@Q|+<9g#aC`-)I%?)xjC z(Vdoo#=Hv(3M`ssNXwuD>lH85?x@13c7c;+dbD-8+Vsy_m*>7U*0x=3PqB$tV73DrtyPj%7SDeK4aDmpFJyW)D59J*j?& zVt^P=y2`w5ymt~h1P_*Dx!^+;RnZ8>?uyR$%{+`qXBpx}YU#3G9}(#q!#zSbx*kK1 z(bzqPSVl*C#?VDy_M{aV@@~j_L04#VJct`;Z+tzSidWF_xQd(TbUdh(uR=a!kQTbd zApS%JDG3$ZD3Ay$m8+1UM6jbBrVw-|EQ)5AJIz|QL7nabKR?z&whI`OgGKVz6$yo(f=;eoTdG{w;HM`@N}61OJZkXpiyswj{dwa8L75(k{}izHNAk0{u5p zF>d#tK>q-jpC}HmIiHXN0kFcYP8vjmyOJ>PwjujKmP+UtO+at diff --git a/schainpy/model/io/jroIO_param.py b/schainpy/model/io/jroIO_param.py index b3fed36..dadfeb8 100644 --- a/schainpy/model/io/jroIO_param.py +++ b/schainpy/model/io/jroIO_param.py @@ -178,8 +178,8 @@ class ParamReader(ProcessingUnit): print "[Reading] %d file(s) was(were) found in time range: %s - %s" %(len(filenameList), startTime, endTime) print - for i in range(len(filenameList)): - print "[Reading] %s -> [%s]" %(filenameList[i], datetimeList[i].ctime()) +# for i in range(len(filenameList)): +# print "[Reading] %s -> [%s]" %(filenameList[i], datetimeList[i].ctime()) self.filenameList = filenameList self.datetimeList = datetimeList diff --git a/schainpy/model/io/jroIO_param.pyc b/schainpy/model/io/jroIO_param.pyc index 3174364a1517d2217487053fdce0a9ac0dcad07c..5821a2c4a5568f2df81507509c8657d431db80ac 100644 GIT binary patch delta 3713 zc$|G!Yj6|S72YdjS(aatWg$yOmXKw8!N$gi;mSCejNdM+!ZQ9OOswOA3 z-Lj?_k4ik6dSGV{#by;d{Kir>WDx`*i~a`aPYqJg1mPGF76f5|2+tCMXcl2fz~}KS zAu0$5L_#kOiR&mzxYTSE#>Zpvm^MBRWmy}-C{n|7RhgO8taNewq@0{mMY<9gsO|7+ zegH0xgdExQaS*rgorK}Q*)rlg4a3|n`FS55<3s6}hxUGZ42ElwkoU!IwBnLca zttE!26Yh{bo2k_1=Oie}87g$q$6WgB!tFws%lR?M)19^!Lh_+Mw+w!i>n8>J<=j@{ z5YgnJA@iRL0(q|xJA9nCKSx9{k_|4Dc=Dw}TsshopeuhN{~I1rGr(U^YW+5D^+Kee zn`G-hD7Z_=>+qeTqwv?Fc~Be^u;P%R!x@E(&ZAIP{4rcDejH|9{iGPS_&o4?*En%P zeaR^w##U-V$V13SSPjO{OSX_^xK%RBBhX4N>uoy!}5 zn*lGlJgrXD!Lk&KcE@HEsR<5y%1OFEHn`$(kbM2BMxVh#^Q6s`qC`i>)5ZDmrAKzlIc zJC4g41jY3E9> z4Vz3%O5k-|9$hnIFIE;4(3dM+mbPh>FolprP!T2(MiCaws$jaQURl$U60S8r>o@tL zE5d^I|K*%D?K#E-#Scu&bBZc0!NX!8Em6M`9b^SQ6R$L}keo&cAsj|0Y&`D?E;wS6 zQ=UI1Jq>@_RGB93!Od=R8c&coAHv?H~@gRqKAtnOVmkGk){h#NL>yrE!4Sg)}m{PJjn-dW}djwldx#Nu&*e zS^s;uPbCPxI_~H&LMg%s!U=eJOEux+1e|qkwBzor8zJNqc(r~P?c&$#Bd}@f0eF1t zEZo`J4?7#W;pv7Bau$Bu5U5>3DbG@vz+`4jL%(p(Gz8bSjhmRIFCn~wv9s_Lt{G2r z#2vPzjktHVDTLT`-?x66Wwjf8|3z~(S%NQ{H<6Q2($eaAyhiVP7hUWKR~|t#9$f6+ zVkvuAFLgu|i;dq6aqixeqbAS8;9|pBD4#wA5*)lg-trYRnTP z;v|);G4dj*MejXiNLdZ%`aXa5D^ z7CbfZz1*77@|$=nZb%YKI*A0?+;dtTu%jqTUBlPp0ZE0bC*8i=BBKd z5pE#dMEE;247pMbmE6|P4ZW7K&}UD5Pd=4*d6EHOYqRF~6IeFWpACgYXqBZz)Y#?tGnY`fv*2XSKD^ mngySZx!})ZrBueh$9xVpE?8C8FkV6B!*8Uqxb%@aQt&_FXZJP$ delta 4329 zc$|$^eN0=|6@S;jvmfTeU@$gcHa1`rsG&=PG2jFO<12wA4+@F$K_1u`12M+$p(Gti zriT5qZj+KDRc)4`Y|S!hA644dR@<@vYm0BrTTQ%9btlKoLd*?ph zGj1U8WdD5ceb@J%^ZT81?tT7c@~hW~DdVHu>_0#F$HA9OV+L{(jvHM4F6GHaNC?t& zw%!vZAt`kWQY1ALiHFk%=$w(*33UiwHPki`hG7iKw@dko76l}RInOXl3^PucFvAS{ zaK?}i=RjRXxdXdWCeDt`P5G2xhJx4!q|<30k4(%@3h_uZDZtNcZktJYH9j7T$E5M` zL7ayFWaJ-a6d8yGZe{hcIZB_;1((eR+u1Zqawsv4?N4(k#(2P&Z2fm zi-`kZHV)+#DP2x;rVpaVD=nYng!w>$gq9|Scr@a}fAdC|Wh>ZxZ05nA%u9t5@*3NO&u#Exj)h&s z*L&e+PEVG>L8=V0Irk$%{tchxO_*G(4+!~-Ij%Ji{62p&eIRHN(g!YC!s!G5v#eS0 zc)?Fnoyx+`r%zoe93TbI_pf_*FzXoqJ?kLBPAB@iOogmE6J?Dl+xQjAB#(orz6P-KLD>d{DYL!^j)M31)|9WzaK|h z5Dp;l2*U^?+N@YSyjj9RqO_3I%I8a;B;*qOv8>GZkn5QDeylx%5lKi5gSoul{?KHV zoi+%U4^-9aLjW$vTjVaA>A|_Te!N;Jk;&Cz!hb!D0 z1XQAw%}pu^iYA5yN!SZ-R@^Rb*W~i0c$|V8l|E&ycPqVW#7;ng(_MN3n{kAwM%bfR z`-(Gj(K*l>O%0mX9o$vEl+(pAH+n=K%#gF0qYGvjc^E|Ny|-Yk7A1;Nl6~VT&jRh)(XF=wYE_zAH7ac zGjfJ56d#@z5)qMK28Y+Vfvit?E#!CbjQ90s%GT!)+z8|7rAd#N1$~o{#-y-#ivJ>9 z@YQUv^uK(?vBwvf`Skg<2O`EhRP410}(wdN>_Twq2)=sA`!pu5K&>TSR zc*5D}rAqWDKDM;UIztO%2|4Nv(qC8rn#ve7j+kkh@Ut?_kx!0CWDf zEVXES%Rih+8~^d2P#e+40k!c`V~^VSxUrK2A=u>fFXM(^R$vn2Chh7{%FwIJ48g05 zajSANf0=-Jn3bmB4ud95irIa{nl{V-(H@JmBmy22jLv6msh*m)8@lE6H z$GSZs_-gweau)8i?=IC34qvXmow^8gg?dYynYD++W}?Eop$|v|-q`6N3-JEV_K;rB zR9U{Snc&Mz^NpWiR*TlAJ6zrMc7^H$I*Bnfr`!PW-mT_xFMPejO^k4}qkV&Fw7av* zFp&v;trhas&dbDl*sxT{NO{as0mk;MQZ20Va95BNnu+AW3v0NTanS4RKVhZY?!Xb{ z7JJ4{-`N;PxP+NCFv)B3TiqgI+f}iLdUhxrEcbL&>yq%lrLXh?uvU<}Jq^`ov3VQe zEriz)UPpKVK@|!*dhO=~y?pd*O4D0U^Al>o(&(maG%@_Dyo*D=(FNTyJ!`0qJ}%v|g>-vv z>M?eG>qgy|`F*{a%Ep(51I|>=Qm6ll@T$I3KinT~XrZEA);YO@Kx>vM-MFA`*L78b zkrCep=h^;!S@83bUpIe<6aUVn)d;36A6J+&q`VdAS-c=*weP(_O6{^)!sZaPZm&3HIJWKgsz&2Nj8@ diff --git a/schainpy/model/io/jroIO_spectra.py b/schainpy/model/io/jroIO_spectra.py index b4084e9..284a35b 100644 --- a/schainpy/model/io/jroIO_spectra.py +++ b/schainpy/model/io/jroIO_spectra.py @@ -11,22 +11,17 @@ from schainpy.model.data.jroheaderIO import PROCFLAG, BasicHeader, SystemHeader, from schainpy.model.data.jrodata import Spectra class SpectraReader(JRODataReader, ProcessingUnit): -<<<<<<< HEAD + """ Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura de los datos siempre se realiza por bloques. Los datos leidos (array de 3 dimensiones) -======= - """ - Esta clase permite leer datos de espectros desde archivos procesados (.pdata). La lectura - de los datos siempre se realiza por bloques. Los datos leidos (array de 3 dimensiones) ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 son almacenados en tres buffer's para el Self Spectra, el Cross Spectra y el DC Channel. paresCanalesIguales * alturas * perfiles (Self Spectra) paresCanalesDiferentes * alturas * perfiles (Cross Spectra) canales * alturas (DC Channels) -<<<<<<< HEAD + Esta clase contiene instancias (objetos) de las clases BasicHeader, SystemHeader, RadarControllerHeader y Spectra. Los tres primeros se usan para almacenar informacion de la cabecera de datos (metadata), y el cuarto (Spectra) para obtener y almacenar un bloque de @@ -81,168 +76,25 @@ class SpectraReader(JRODataReader, ProcessingUnit): Inicializador de la clase SpectraReader para la lectura de datos de espectros. Inputs: -======= - Esta clase contiene instancias (objetos) de las clases BasicHeader, SystemHeader, - RadarControllerHeader y Spectra. Los tres primeros se usan para almacenar informacion de la - cabecera de datos (metadata), y el cuarto (Spectra) para obtener y almacenar un bloque de - datos desde el "buffer" cada vez que se ejecute el metodo "getData". - - Example: - dpath = "/home/myuser/data" - - startTime = datetime.datetime(2010,1,20,0,0,0,0,0,0) - - endTime = datetime.datetime(2010,1,21,23,59,59,0,0,0) - - readerObj = SpectraReader() - - readerObj.setup(dpath, startTime, endTime) - - while(True): - - readerObj.getData() - - print readerObj.data_spc - - print readerObj.data_cspc - - print readerObj.data_dc - - if readerObj.flagNoMoreFiles: - break - - """ - - pts2read_SelfSpectra = 0 - - pts2read_CrossSpectra = 0 - - pts2read_DCchannels = 0 - - ext = ".pdata" - - optchar = "P" - - dataOut = None - - nRdChannels = None - - nRdPairs = None - - rdPairList = [] - - def __init__(self): - """ - Inicializador de la clase SpectraReader para la lectura de datos de espectros. - Inputs: ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 dataOut : Objeto de la clase Spectra. Este objeto sera utilizado para almacenar un perfil de datos cada vez que se haga un requerimiento (getData). El perfil sera obtenido a partir del buffer de datos, si el buffer esta vacio se hara un nuevo proceso de lectura de un bloque de datos. Si este parametro no es pasado se creara uno internamente. -<<<<<<< HEAD - Affected: -======= Affected: ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + self.dataOut Return : None """ -<<<<<<< HEAD - - #Eliminar de la base la herencia - ProcessingUnit.__init__(self, **kwargs) - -# self.isConfig = False - - self.pts2read_SelfSpectra = 0 - - self.pts2read_CrossSpectra = 0 - - self.pts2read_DCchannels = 0 - - self.datablock = None - - self.utc = None - - self.ext = ".pdata" - - self.optchar = "P" - - self.basicHeaderObj = BasicHeader(LOCALTIME) - - self.systemHeaderObj = SystemHeader() - - self.radarControllerHeaderObj = RadarControllerHeader() - - self.processingHeaderObj = ProcessingHeader() - - self.online = 0 - - self.fp = None - - self.idFile = None - - self.dtype = None - - self.fileSizeByHeader = None - - self.filenameList = [] - - self.filename = None - - self.fileSize = None - - self.firstHeaderSize = 0 - - self.basicHeaderSize = 24 - - self.pathList = [] - - self.lastUTTime = 0 - - self.maxTimeStep = 30 - - self.flagNoMoreFiles = 0 - - self.set = 0 - - self.path = None - - self.delay = 60 #seconds - - self.nTries = 3 #quantity tries - - self.nFiles = 3 #number of files for searching - - self.nReadBlocks = 0 - - self.flagIsNewFile = 1 - - self.__isFirstTimeOnline = 1 - -# self.ippSeconds = 0 - - self.flagDiscontinuousBlock = 0 - - self.flagIsNewBlock = 0 - self.nTotalBlocks = 0 - - self.blocksize = 0 - - self.dataOut = self.createObjByDefault() - -======= #Eliminar de la base la herencia - ProcessingUnit.__init__(self) + ProcessingUnit.__init__(self, **kwargs) # self.isConfig = False @@ -324,24 +176,15 @@ class SpectraReader(JRODataReader, ProcessingUnit): self.dataOut = self.createObjByDefault() ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 self.profileIndex = 1 #Always def createObjByDefault(self): -<<<<<<< HEAD - - dataObj = Spectra() - - return dataObj - -======= dataObj = Spectra() return dataObj ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 def __hasNotDataInBuffer(self): return 1 @@ -349,11 +192,7 @@ class SpectraReader(JRODataReader, ProcessingUnit): def getBlockDimension(self): """ Obtiene la cantidad de puntos a leer por cada bloque de datos -<<<<<<< HEAD - -======= ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 Affected: self.nRdChannels self.nRdPairs @@ -370,40 +209,16 @@ class SpectraReader(JRODataReader, ProcessingUnit): self.nRdChannels = 0 self.nRdPairs = 0 self.rdPairList = [] -<<<<<<< HEAD for i in range(0, self.processingHeaderObj.totalSpectra*2, 2): if self.processingHeaderObj.spectraComb[i] == self.processingHeaderObj.spectraComb[i+1]: - self.nRdChannels = self.nRdChannels + 1 #par de canales iguales -======= - - - for i in range(0, self.processingHeaderObj.totalSpectra*2, 2): - if self.processingHeaderObj.spectraComb[i] == self.processingHeaderObj.spectraComb[i+1]: self.nRdChannels = self.nRdChannels + 1 #par de canales iguales ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + else: self.nRdPairs = self.nRdPairs + 1 #par de canales diferentes self.rdPairList.append((self.processingHeaderObj.spectraComb[i], self.processingHeaderObj.spectraComb[i+1])) pts2read = self.processingHeaderObj.nHeights * self.processingHeaderObj.profilesPerBlock -<<<<<<< HEAD - - self.pts2read_SelfSpectra = int(self.nRdChannels * pts2read) - self.blocksize = self.pts2read_SelfSpectra - - if self.processingHeaderObj.flag_cspc: - self.pts2read_CrossSpectra = int(self.nRdPairs * pts2read) - self.blocksize += self.pts2read_CrossSpectra - - if self.processingHeaderObj.flag_dc: - self.pts2read_DCchannels = int(self.systemHeaderObj.nChannels * self.processingHeaderObj.nHeights) - self.blocksize += self.pts2read_DCchannels - -# self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels - - -======= self.pts2read_SelfSpectra = int(self.nRdChannels * pts2read) self.blocksize = self.pts2read_SelfSpectra @@ -419,26 +234,18 @@ class SpectraReader(JRODataReader, ProcessingUnit): # self.blocksize = self.pts2read_SelfSpectra + self.pts2read_CrossSpectra + self.pts2read_DCchannels ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 def readBlock(self): """ Lee el bloque de datos desde la posicion actual del puntero del archivo (self.fp) y actualiza todos los parametros relacionados al bloque de datos (metadata + data). La data leida es almacenada en el buffer y el contador del buffer es seteado a 0 -<<<<<<< HEAD - - Return: None - - Variables afectadas: - -======= Return: None Variables afectadas: ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + self.flagIsNewFile self.flagIsNewBlock self.nTotalBlocks @@ -446,11 +253,6 @@ class SpectraReader(JRODataReader, ProcessingUnit): self.data_cspc self.data_dc -<<<<<<< HEAD - Exceptions: - Si un bloque leido no es un bloque valido - """ -======= Exceptions: Si un bloque leido no es un bloque valido """ @@ -463,25 +265,13 @@ class SpectraReader(JRODataReader, ProcessingUnit): print ' ' print ' ======================================================== ' ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + blockOk_flag = False fpointer = self.fp.tell() spc = numpy.fromfile( self.fp, self.dtype[0], self.pts2read_SelfSpectra ) spc = spc.reshape( (self.nRdChannels, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D -<<<<<<< HEAD - - if self.processingHeaderObj.flag_cspc: - cspc = numpy.fromfile( self.fp, self.dtype, self.pts2read_CrossSpectra ) - cspc = cspc.reshape( (self.nRdPairs, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D - - if self.processingHeaderObj.flag_dc: - dc = numpy.fromfile( self.fp, self.dtype, self.pts2read_DCchannels ) #int(self.processingHeaderObj.nHeights*self.systemHeaderObj.nChannels) ) - dc = dc.reshape( (self.systemHeaderObj.nChannels, self.processingHeaderObj.nHeights) ) #transforma a un arreglo 2D - -======= - if self.processingHeaderObj.flag_cspc: cspc = numpy.fromfile( self.fp, self.dtype, self.pts2read_CrossSpectra ) cspc = cspc.reshape( (self.nRdPairs, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) ) #transforma a un arreglo 3D @@ -491,23 +281,10 @@ class SpectraReader(JRODataReader, ProcessingUnit): dc = dc.reshape( (self.systemHeaderObj.nChannels, self.processingHeaderObj.nHeights) ) #transforma a un arreglo 2D ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 if not(self.processingHeaderObj.shif_fft): #desplaza a la derecha en el eje 2 determinadas posiciones shift = int(self.processingHeaderObj.profilesPerBlock/2) spc = numpy.roll( spc, shift , axis=2 ) -<<<<<<< HEAD - - if self.processingHeaderObj.flag_cspc: - #desplaza a la derecha en el eje 2 determinadas posiciones - cspc = numpy.roll( cspc, shift, axis=2 ) - - #Dimensions : nChannels, nProfiles, nSamples - spc = numpy.transpose( spc, (0,2,1) ) - self.data_spc = spc - - if self.processingHeaderObj.flag_cspc: -======= if self.processingHeaderObj.flag_cspc: #desplaza a la derecha en el eje 2 determinadas posiciones @@ -518,16 +295,13 @@ class SpectraReader(JRODataReader, ProcessingUnit): self.data_spc = spc if self.processingHeaderObj.flag_cspc: ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + cspc = numpy.transpose( cspc, (0,2,1) ) self.data_cspc = cspc['real'] + cspc['imag']*1j else: self.data_cspc = None -<<<<<<< HEAD - -======= ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + if self.processingHeaderObj.flag_dc: self.data_dc = dc['real'] + dc['imag']*1j else: @@ -540,62 +314,6 @@ class SpectraReader(JRODataReader, ProcessingUnit): self.nReadBlocks += 1 return 1 -<<<<<<< HEAD - - def getFirstHeader(self): - - self.getBasicHeader() - - self.dataOut.systemHeaderObj = self.systemHeaderObj.copy() - - self.dataOut.radarControllerHeaderObj = self.radarControllerHeaderObj.copy() - -# self.dataOut.ippSeconds = self.ippSeconds - -# self.dataOut.timeInterval = self.radarControllerHeaderObj.ippSeconds * self.processingHeaderObj.nCohInt * self.processingHeaderObj.nIncohInt * self.processingHeaderObj.profilesPerBlock - - self.dataOut.dtype = self.dtype - -# self.dataOut.nPairs = self.nPairs - - self.dataOut.pairsList = self.rdPairList - - self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock - - self.dataOut.nFFTPoints = self.processingHeaderObj.profilesPerBlock - - self.dataOut.nCohInt = self.processingHeaderObj.nCohInt - - self.dataOut.nIncohInt = self.processingHeaderObj.nIncohInt - - xf = self.processingHeaderObj.firstHeight + self.processingHeaderObj.nHeights*self.processingHeaderObj.deltaHeight - - self.dataOut.heightList = numpy.arange(self.processingHeaderObj.firstHeight, xf, self.processingHeaderObj.deltaHeight) - - self.dataOut.channelList = range(self.systemHeaderObj.nChannels) - - self.dataOut.flagShiftFFT = True #Data is always shifted - - self.dataOut.flagDecodeData = self.processingHeaderObj.flag_decode #asumo q la data no esta decodificada - - self.dataOut.flagDeflipData = self.processingHeaderObj.flag_deflip #asumo q la data esta sin flip - - def getData(self): - """ - First method to execute before "RUN" is called. - - Copia el buffer de lectura a la clase "Spectra", - con todos los parametros asociados a este (metadata). cuando no hay datos en el buffer de - lectura es necesario hacer una nueva lectura de los bloques de datos usando "readNextBlock" - - Return: - 0 : Si no hay mas archivos disponibles - 1 : Si hizo una buena copia del buffer - - Affected: - self.dataOut - -======= def getFirstHeader(self): @@ -650,7 +368,6 @@ class SpectraReader(JRODataReader, ProcessingUnit): Affected: self.dataOut ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 self.flagDiscontinuousBlock self.flagIsNewBlock """ @@ -659,82 +376,22 @@ class SpectraReader(JRODataReader, ProcessingUnit): self.dataOut.flagNoData = True print 'Process finished' return 0 -<<<<<<< HEAD - - self.flagDiscontinuousBlock = 0 - self.flagIsNewBlock = 0 - - if self.__hasNotDataInBuffer(): -======= self.flagDiscontinuousBlock = 0 self.flagIsNewBlock = 0 if self.__hasNotDataInBuffer(): ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 if not( self.readNextBlock() ): self.dataOut.flagNoData = True return 0 -<<<<<<< HEAD - -======= ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + #data es un numpy array de 3 dmensiones (perfiles, alturas y canales) if self.data_spc is None: self.dataOut.flagNoData = True return 0 -<<<<<<< HEAD - - self.getBasicHeader() - - self.getFirstHeader() - - self.dataOut.data_spc = self.data_spc - - self.dataOut.data_cspc = self.data_cspc - - self.dataOut.data_dc = self.data_dc - - self.dataOut.flagNoData = False - - self.dataOut.realtime = self.online - - return self.dataOut.data_spc - -class SpectraWriter(JRODataWriter, Operation): - - """ - Esta clase permite escribir datos de espectros a archivos procesados (.pdata). La escritura - de los datos siempre se realiza por bloques. - """ - - ext = ".pdata" - - optchar = "P" - - shape_spc_Buffer = None - - shape_cspc_Buffer = None - - shape_dc_Buffer = None - - data_spc = None - - data_cspc = None - - data_dc = None - -# dataOut = None - - def __init__(self, **kwargs): - """ - Inicializador de la clase SpectraWriter para la escritura de datos de espectros. - - Affected: -======= self.getBasicHeader() @@ -782,7 +439,7 @@ class SpectraWriter(JRODataWriter, Operation): Inicializador de la clase SpectraWriter para la escritura de datos de espectros. Affected: ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + self.dataOut self.basicHeaderObj self.systemHeaderObj @@ -791,19 +448,6 @@ class SpectraWriter(JRODataWriter, Operation): Return: None """ -<<<<<<< HEAD - - Operation.__init__(self, **kwargs) - - self.isConfig = False - - self.nTotalBlocks = 0 - - self.data_spc = None - - self.data_cspc = None - -======= Operation.__init__(self) @@ -815,42 +459,12 @@ class SpectraWriter(JRODataWriter, Operation): self.data_cspc = None ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + self.data_dc = None self.fp = None self.flagIsNewFile = 1 -<<<<<<< HEAD - - self.nTotalBlocks = 0 - - self.flagIsNewBlock = 0 - - self.setFile = None - - self.dtype = None - - self.path = None - - self.noMoreFiles = 0 - - self.filename = None - - self.basicHeaderObj = BasicHeader(LOCALTIME) - - self.systemHeaderObj = SystemHeader() - - self.radarControllerHeaderObj = RadarControllerHeader() - - self.processingHeaderObj = ProcessingHeader() - - - def hasAllDataInBuffer(self): - return 1 - - -======= self.nTotalBlocks = 0 @@ -879,7 +493,7 @@ class SpectraWriter(JRODataWriter, Operation): return 1 ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + def setBlockDimension(self): """ Obtiene las formas dimensionales del los subbloques de datos que componen un bloque @@ -898,17 +512,6 @@ class SpectraWriter(JRODataWriter, Operation): self.shape_cspc_Buffer = (self.dataOut.nPairs, self.processingHeaderObj.nHeights, self.processingHeaderObj.profilesPerBlock) -<<<<<<< HEAD - - self.shape_dc_Buffer = (self.dataOut.nChannels, - self.processingHeaderObj.nHeights) - - - def writeBlock(self): - """ - Escribe el buffer en el file designado - -======= self.shape_dc_Buffer = (self.dataOut.nChannels, self.processingHeaderObj.nHeights) @@ -918,7 +521,7 @@ class SpectraWriter(JRODataWriter, Operation): """ Escribe el buffer en el file designado ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + Affected: self.data_spc self.data_cspc @@ -926,19 +529,11 @@ class SpectraWriter(JRODataWriter, Operation): self.flagIsNewFile self.flagIsNewBlock self.nTotalBlocks -<<<<<<< HEAD - self.nWriteBlocks - - Return: None - """ - -======= self.nWriteBlocks Return: None """ ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 spc = numpy.transpose( self.data_spc, (0,2,1) ) if not( self.processingHeaderObj.shif_fft ): spc = numpy.roll( spc, self.processingHeaderObj.profilesPerBlock/2, axis=2 ) #desplaza a la derecha en el eje 2 determinadas posiciones @@ -955,11 +550,8 @@ class SpectraWriter(JRODataWriter, Operation): data['imag'] = cspc.imag data = data.reshape((-1)) data.tofile(self.fp) -<<<<<<< HEAD - -======= ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + if self.data_dc is not None: data = numpy.zeros( self.shape_dc_Buffer, self.dtype ) dc = self.data_dc @@ -969,15 +561,6 @@ class SpectraWriter(JRODataWriter, Operation): data.tofile(self.fp) # self.data_spc.fill(0) -<<<<<<< HEAD -# -# if self.data_dc is not None: -# self.data_dc.fill(0) -# -# if self.data_cspc is not None: -# self.data_cspc.fill(0) - -======= # # if self.data_dc is not None: # self.data_dc.fill(0) @@ -985,21 +568,12 @@ class SpectraWriter(JRODataWriter, Operation): # if self.data_cspc is not None: # self.data_cspc.fill(0) ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + self.flagIsNewFile = 0 self.flagIsNewBlock = 1 self.nTotalBlocks += 1 self.nWriteBlocks += 1 self.blockIndex += 1 -<<<<<<< HEAD - -# print "[Writing] Block = %d04" %self.blockIndex - - def putData(self): - """ - Setea un bloque de datos y luego los escribe en un file - -======= # print "[Writing] Block = %d04" %self.blockIndex @@ -1007,43 +581,12 @@ class SpectraWriter(JRODataWriter, Operation): """ Setea un bloque de datos y luego los escribe en un file ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + Affected: self.data_spc self.data_cspc self.data_dc -<<<<<<< HEAD - Return: - 0 : Si no hay data o no hay mas files que puedan escribirse - 1 : Si se escribio la data de un bloque en un file - """ - - if self.dataOut.flagNoData: - return 0 - - self.flagIsNewBlock = 0 - - if self.dataOut.flagDiscontinuousBlock: - self.data_spc.fill(0) - if self.dataOut.data_cspc is not None: - self.data_cspc.fill(0) - if self.dataOut.data_dc is not None: - self.data_dc.fill(0) - self.setNextFile() - - if self.flagIsNewFile == 0: - self.setBasicHeader() - - self.data_spc = self.dataOut.data_spc.copy() - - if self.dataOut.data_cspc is not None: - self.data_cspc = self.dataOut.data_cspc.copy() - - if self.dataOut.data_dc is not None: - self.data_dc = self.dataOut.data_dc.copy() - -======= Return: 0 : Si no hay data o no hay mas files que puedan escribirse 1 : Si se escribio la data de un bloque en un file @@ -1071,51 +614,18 @@ class SpectraWriter(JRODataWriter, Operation): if self.dataOut.data_dc is not None: self.data_dc = self.dataOut.data_dc.copy() ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 # #self.processingHeaderObj.dataBlocksPerFile) if self.hasAllDataInBuffer(): # self.setFirstHeader() self.writeNextBlock() -<<<<<<< HEAD - - return 1 - -======= return 1 ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + def __getBlockSize(self): ''' Este metodos determina el cantidad de bytes para un bloque de datos de tipo Spectra ''' -<<<<<<< HEAD - - dtype_width = self.getDtypeWidth() - - pts2write = self.dataOut.nHeights * self.dataOut.nFFTPoints - - pts2write_SelfSpectra = int(self.dataOut.nChannels * pts2write) - blocksize = (pts2write_SelfSpectra*dtype_width) - - if self.dataOut.data_cspc is not None: - pts2write_CrossSpectra = int(self.dataOut.nPairs * pts2write) - blocksize += (pts2write_CrossSpectra*dtype_width*2) - - if self.dataOut.data_dc is not None: - pts2write_DCchannels = int(self.dataOut.nChannels * self.dataOut.nHeights) - blocksize += (pts2write_DCchannels*dtype_width*2) - -# blocksize = blocksize #* datatypeValue * 2 #CORREGIR ESTO - - return blocksize - - def setFirstHeader(self): - - """ - Obtiene una copia del First Header - -======= dtype_width = self.getDtypeWidth() @@ -1141,22 +651,11 @@ class SpectraWriter(JRODataWriter, Operation): """ Obtiene una copia del First Header ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 Affected: self.systemHeaderObj self.radarControllerHeaderObj self.dtype -<<<<<<< HEAD - Return: - None - """ - - self.systemHeaderObj = self.dataOut.systemHeaderObj.copy() - self.systemHeaderObj.nChannels = self.dataOut.nChannels - self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy() - -======= Return: None """ @@ -1165,73 +664,44 @@ class SpectraWriter(JRODataWriter, Operation): self.systemHeaderObj.nChannels = self.dataOut.nChannels self.radarControllerHeaderObj = self.dataOut.radarControllerHeaderObj.copy() ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 self.processingHeaderObj.dtype = 1 # Spectra self.processingHeaderObj.blockSize = self.__getBlockSize() self.processingHeaderObj.profilesPerBlock = self.dataOut.nFFTPoints self.processingHeaderObj.dataBlocksPerFile = self.blocksPerFile self.processingHeaderObj.nWindows = 1 #podria ser 1 o self.dataOut.processingHeaderObj.nWindows self.processingHeaderObj.nCohInt = self.dataOut.nCohInt# Se requiere para determinar el valor de timeInterval -<<<<<<< HEAD - self.processingHeaderObj.nIncohInt = self.dataOut.nIncohInt - self.processingHeaderObj.totalSpectra = self.dataOut.nPairs + self.dataOut.nChannels - self.processingHeaderObj.shif_fft = self.dataOut.flagShiftFFT - -======= self.processingHeaderObj.nIncohInt = self.dataOut.nIncohInt self.processingHeaderObj.totalSpectra = self.dataOut.nPairs + self.dataOut.nChannels self.processingHeaderObj.shif_fft = self.dataOut.flagShiftFFT ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 + if self.processingHeaderObj.totalSpectra > 0: channelList = [] for channel in range(self.dataOut.nChannels): channelList.append(channel) channelList.append(channel) -<<<<<<< HEAD - -======= ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 pairsList = [] if self.dataOut.nPairs > 0: for pair in self.dataOut.pairsList: pairsList.append(pair[0]) pairsList.append(pair[1]) -<<<<<<< HEAD - - spectraComb = channelList + pairsList - spectraComb = numpy.array(spectraComb, dtype="u1") - self.processingHeaderObj.spectraComb = spectraComb - -======= spectraComb = channelList + pairsList spectraComb = numpy.array(spectraComb, dtype="u1") self.processingHeaderObj.spectraComb = spectraComb ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 if self.dataOut.code is not None: self.processingHeaderObj.code = self.dataOut.code self.processingHeaderObj.nCode = self.dataOut.nCode self.processingHeaderObj.nBaud = self.dataOut.nBaud -<<<<<<< HEAD - -======= ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 if self.processingHeaderObj.nWindows != 0: self.processingHeaderObj.firstHeight = self.dataOut.heightList[0] self.processingHeaderObj.deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0] self.processingHeaderObj.nHeights = self.dataOut.nHeights self.processingHeaderObj.samplesWin = self.dataOut.nHeights -<<<<<<< HEAD - - self.processingHeaderObj.processFlags = self.getProcessFlags() - -======= self.processingHeaderObj.processFlags = self.getProcessFlags() ->>>>>>> 08c4507d6c3c48f6c52326d5dedfa1972fb26356 self.setBasicHeader() diff --git a/schainpy/model/io/jroIO_spectra.pyc b/schainpy/model/io/jroIO_spectra.pyc index 9b0c1fc606ae08d5e9fc8500c2c52f8490344565..e38b2dbea92274b45445616c87e111c4138e5d6f 100644 GIT binary patch delta 1739 zc${sN+fN)-9LMK3v$t8;?r!NW&{9~+01M?J6xbHZ?y{w{m8x}u)fN;-b`};!cG(@% zqEu*F6cR}xzxbpzX-wk{Q|m<22Tjlzqlpjdga3d}-X0p?e6XJ1Y<7UgIoZ#iIcLsy ze%JYK8E#(#m+-g8{ZY-xg}bh0-ZpLLI8?$F_#uDGI4g_+zGpjc{A+W8#~otV$;--% zSxxQ5Dn~t@aYXTkBZj}Qx!~-=m@|lqvlh3Uhwu}pjr}*$Tu4s1QF0C7oGVn#a~vnI z-!S{-SAgSmj++K$?Rzw*7Ya z9993YwI<;Me+7JDRP61s?O41S43uw?&LPtAi@*k72NIMC#`i&khqQ5}QUeTiX0WP)b-B_s3x`9)L9$RUVMwZ)uAElWlT*4pf}5dgN7S?oe+=EQ>;9imNa6`wTjG)8zn4%qH) z#X$38s5JlDC>JB2&Y#H4rqYvgr{%`QZ4Yqf@FMK0w!mksw(|{?1h0n|3q!yS-#%RQ zIZ$hf?Wn4MT7vMW;cwjlAEmmGfI@NLr)@9ncygjW0QZggb|(*~@M=fg*y`91zQ@VH z2kercphM^I_s&jfgr*lPLru-63C~zncOK(Mq^8lLM>=bM?qxNX$;+?PT0zW8(F(2| z>8~3v7ITuNMt+_)lw!l}?m7wky7oj|tWWbjX14^O6zahXLGbZjsDQ$~hYc_5A6gNM zcO}MBR~Xk(LtGO3`(kj~w0(Uy!OQ z`;u8zgJhRv=Eo3^u7hO8dx|hv>^a#Ajr>|c{>x*lmRt|a8SnRgEjZLdCuE}u$5bI{ z_oB!8(=?s7&eBIfp0ko*cFzDIMHnfDU&-Z^dG?KHi#7OWX=jF@nFWE#*wH9boat*P zM+g}@NN!C`DYLVxX3CjSp?;R*|DT#Lw#4_qD)z-|LBMC@-J@4X>{Y@dVILu2dB03B zYhvZ0%D1}kI$@QtPI!~>4qR*sZht^&o3@Tk zr>G34G0ViqnD}BQzEHC*M$JtYXLKecGyVa-P+w@wviQbV{z^16dY;?$vbd7%p7hgm z?s?9y=leY8zPCocUMD*BZzlZ@fBb&@6Wuyfai>D1a=`|3gSezI^^*iX&>W@JyBZy- zcF{+V7(NqO&ZfkEth>Ob=1NjUk967uhDhi z1Al5=yNF7qV(4#({_^XzRZyuGiRzq6wI+FWFOrH|44(Z4m!Jo3&=Uq;@;IchF{G}; zp#=?&6H_ra{a4AzkHM7RX_yn|Gto#|jOQZolfBU@m}uW9_D`Xe%>;j$-z8;jS;0#! zK8D+t@v;UyV=F;$3+iphAQAWVbawVMsddx8$vrSdzl?VtuUct(=Bd|^}$C$Chs=R-Bgz$Smv zc>>2<5mCfx#0=sj;s^{hwQi%!)h2^;hQ>v{Ro0jzMtTwrLj_=rjFGmq8u+Fu7VcL( zIe@^>kTn<1APynsm8G98Mb^V&3~n}?oh>Z$VBr!R%W1g1+=TQ?b01R?B*ma^1;H}` zVPhRl5F_03e9>~GBxN!`lu5^uaiLrB#)&OQz?Ih3^1)jS^sDHEX58uy6Id+{c)M+Q z8=p0_SCbzlfBOcpU>pf`TagFf@0~9@$_?i`tmL-zR)>}$Bk<0?5ZL$@V7q>;n!vsP zOCMnp=QvC;39fE>H`Lo&-SXtqh~vtMHG4#09w49cY{_rO^Vtl!Q6#IQ4MVc$noXX7=v9~J zWznR{zSjvas}M&FmC{^Ld?KtD*Z6AxtJ};8{z@_{z3<;tvkS$POb5bjyeRGUfIpDH zYEqdC?;#yJ z6wyQ^ofcE_bh4|mkz`H?K8i-Wf|cYnbOiU%55QEgcl8`j{2bzWL>0oWc;-Ap4wMW3 z%Nr%z*ATBDE+O7TTt-|gm+cgtiOjOtDdv*VrOp*NLXq!JiKs#C+q(K)rQPf diff --git a/schainpy/model/io/jroIO_usrp.pyc b/schainpy/model/io/jroIO_usrp.pyc index 636212839d6d5087263b924777ee5cc6ff49c610..fac87c6050d2b1bf4bf65ac4a3b157b53edd50f1 100644 GIT binary patch delta 1400 zc$|%sO-vI(6vubEbnS;oArvU3)dHn0)Joa%;Rk+(D5w+``|2TieCP0AixX zgTaH(Xw-v=@hicDX2V52c_p6I0}(XF#Ka2+y%|m1H`t{bW87qac{B6o&71$ccPBX$ zH?UvxO<(L=2c8%PSf`F*7*_pvtABb}h0HL=2s6$w(nmVsyTwkzP*ymZ6ZKqkK-gZ% z4WP#%$k-!X2b%RTZ{JDkpt|BdDS_FF!SaJBniJQGwcI0!!?4TYG`FBxjj+K8_ zEm=+mLGO()(})Nju^G{dI7O=(j`&-auLz&~&vQnLYx~J5aC*ve=B5L4feX0x z3gRImgAc6J9@zT#PI1AHb!RQ-wMrYIV#8E@JIQwCYu|5e?)bCK2}7cE5Mg047~ruc z1(Z}+p@lX4M>5#|ml}))+|T4$2;6LFCbwbUP=O5!cD^6R_;Nd5)5~Q;(K3pPve+IM zy5TWjuchtMqZUC3hC0Xt7!UOon%4aK+T+PlIlaLIwR|;{HCoqeE1gS8YEpVxEobFl ziR-7;;SPAw*tUE=^fVO}ttcpx@$!+#2{9IrMARfRO)cgwt)@fpwCNV~5iJR=NGy6@y|9t;>JW1Xf z$(MdQ3P1h+6?>H5BYBA+2qJr1*qhcE3_%zq!U;h*n;Dnx5)TeA@_2NpKfrzkj&v*3 zH_xCBSmnr@S_}LS!j7CWe4Kg%-h-A z)&l-aw_}w=I^nXjn{0zGPA};I+k$ZmwU-O>WU++6y72mZ-_(<_yCp)}VZLWA%h2vg zly;zaDMJElrF>pKgdb4`Z#}Qaw_~#tu><`mWZ10^jcS{8J*88Mfi6S=;vixtj7B_&>jeS%j6i2*athjirj|H zT6pShB_a6hy+d4Zdudq49`Z99qRLG0mXLA`%@PKk=lO@BxVyKvNT^PiZ*Sj3?0>Y|-gQ{$ShC{xN@ z?;!js4+TvHzR<>@M7m4sOC{rcb@-yD52+&>Jp=6(#bgWyD+Y5H3a-irGS?5mtI9G9 zH$uxF6VWEZ=Rl9SO<`3qI^8)Ed^XoN7 zh_#4Oe&pbL)k=%04^%(5h{RXK$SAz2bX&xWYTnnJ!}Jq~dx#^r8%1+BUigor4*P3Q zInSC$WP*uu@^AwWgzmH0M)=yW$->5w#zhO|`3nu4 ry`l`OiKL>?PPo#z(!Sk1eGz!qc%4u%nxZ+=>@BF8D;9_a#3}v*bV+^y diff --git a/schainpy/model/io/jroIO_voltage.py b/schainpy/model/io/jroIO_voltage.py index 1ad1910..7dd5f63 100644 --- a/schainpy/model/io/jroIO_voltage.py +++ b/schainpy/model/io/jroIO_voltage.py @@ -427,10 +427,16 @@ class VoltageReader(JRODataReader, ProcessingUnit): self.dataOut.flagNoData = False self.getBasicHeader() - + + #print self.basicHeaderObj.printInfo() + #print self.systemHeaderObj.printInfo() + #print self.radarControllerHeaderObj.printInfo() + #print self.processingHeaderObj.printInfo() + self.dataOut.realtime = self.online return self.dataOut.data + class VoltageWriter(JRODataWriter, Operation): """ diff --git a/schainpy/model/io/jroIO_voltage.pyc b/schainpy/model/io/jroIO_voltage.pyc index 6469154259a33ceb600eb1ed887cf62805aa1634..00ef66d8c5deceb014e2b6ad82d0a8186a0eb973 100644 GIT binary patch delta 1686 zc$|HddrVt(6vywck6T(^<R5Ur$ZOrAI8LGSz;Dn(fF5%j~J(!G5R~V<3bqP))z||+(y@bWwW}`pTbzr=1oxPj z6g<@R1nUH|DIZqZYWSQDfZa3>i>5tos=K6P7^YE_34IMrBhjFz&meuI47JD%bBr)) zhDj6VoO0Ln93eMg$vmliXSV9#UTz08+jl9`d4K3QTq_%Jp%9yuSvr_sjEF}iHytr5 zq#npPs^M~@J1>M&9*redxLLSD*8k$*y7lGzv$YBiE)^}1*Pyca0DRQU!G+>p5`ie|)*;1`4;ncLSAV(8%DF9sAx7Hwy%wrO~9nlS? zj`XHIzj0h89Qw#+iuj0_n59*f_%NFAXb~|IKPvDcxKpoRfxGjg2&@eMC}Ipzh8U)R(-pQ&Y5ua~wqAF}pxme# zC%|z-McR3JK~9QsDu4`k4XSE)n)XIw5^CqXs|UVvd8y4q$4zX&>kLd;sHqm-uPuT* zwc}Vk<#1gYVGm*0Ban8F4`F_CUiNbPVu|T_IeJ{+C(w#|iN28J|%zRj1Ni zWI@Ol4W}msF(L5}LzTx#CZO9hu<4#}dY&XE7~D17ID=7p5krV<5(s%+N82ch1AF~j zh76-N)eEhg<;`Q-532i3W{bMvdGCsDm4Rim7p5ATRSg}k%Yo|+j}sA`jicqbp7$d< zx6i_z_X&+7Inijg!mov8@K@ucA^5<}!PO=^`B}Nu^aknJDn-mIcfELh$=O*!%qk;} zs9cxPmJLgMHu5`od_U;^WWc)HcfSR8z~$X$ShEkqxnhfPe|$zrL7=4?>RPRAA8yqT zq1K(Ajs4SFko}rqvyQ5C;cTndBjV79r`Ky0nL`Y2R~F39+g3o#5Nx|gd!@a-A3kh$ z(ZrlI!F>3l-3q<*eYbrN_&a87)3{R$qFKw}6kO@>vTBTz@O?-9rh`xUbBR}p`U$bk zYwZ-$x+@5$IvX^1H~iCCKt_~;z}tj;3LgiXXq{Y8({+TVP!6wlRj`j_zXu<5_0ca4 z33XDX218-%nAVYMZ-(H-kl(Pp^&Z@Xk|6Jmijurfh|CD$W6<9nJeb54ClHH>5=1G& xs#QE+JsRRE#A(Dch%<Iw-3W;&pWo%e=fnI#d0jHWlJWom delta 2184 zc$|%tUrbwN6u|qn^wK|cv`AZE5H6)HwCjMDzq^zne@X}f9p#TM8Nm)NP%JIGw~P&8 z4vAT!X3?BwQQr(%=1Vp6CQdWWjPb#z`7|GVP+yE1=QguxqQ3Z@+tEKr-EMM!_nz~8 z-#O>|&N<(=8*gqAjp~6x_uU^4pSz}6QYy#Q;B{BPMdc1*!K)f%SbTKg)m6e}Rh5!u zK~g=-usT%3yTlCkg1Z)Z4kBp`MWD3tW= zqpx_8N(qHxi6}M{if!rT!dD6T9t_&!>1d^Stx=hY{j|Ov{5Fl0)YquW(Nv-U?eNk0 zdiqt!5Qo6jRIQ)kPsV4%F@8Y^gQ>Wg7$8u*L-rf9gU9&xJ|i{FcF>wu$W?g1!2)lX zS~77QXtcx6rl$!9u9BhsmrB=5772MxVoMz)D@SGm#Vvbn*+4id^0_sf>Xj`= z8JxG-0*v z>9*u{^HoK5H^T$>j`{<6zESIjFAp_U{nVwd4= zqb-lUi6%3-2TM&qD$NAOyuRGLr~0{wo)2+apxdd2d*(hc`3{{8NCr)Xx zjS%xv`i}6YuM7^(wI9y2^nOJ_@yyHupXiOoXI~hPtn)*Xvg0E{Zo?->8nxMBJHWs_ zPlH|NTA7j575N_5OY7rT?g(uaM`yq|p1z3WE6ES*ogHNBe+mfQi+o}rB8Z7WK0L<@ zlVJ0AP9<>pD&jQaDMTs4n9iR;J{80U;w8j3;sWB*llGo^jSflhkKfM7uKK~z^|5*F L$(A1-Bv<|gH01Hk diff --git a/schainpy/model/proc/__init__.pyc b/schainpy/model/proc/__init__.pyc index 9d14e21ce92caebb7e5ecb07bd66470ad7338314..666192e12ee46df2452880bc459ce99ecad437aa 100644 GIT binary patch delta 27 jc$}NX($B)d{F#?aU&bMFBgaBUMw`j2809BlVRQokX66UZ delta 39 vc%18JnZ?4v{F#^Q?$<978#xv-GP+M*#VF4mpPH1PoS2uIUX(cbB%>Pu9vcpM diff --git a/schainpy/model/proc/jroproc_amisr.pyc b/schainpy/model/proc/jroproc_amisr.pyc index fe775a4cea4d1247e2ef404bc3e6cc4673929054..70a3d34c8e3db6432e99525392f6529ede62ef83 100644 GIT binary patch delta 256 zc$|BpyHbaP`7Op7kxhNV*^6ZAA+9BG-cE%0=Gi=Vku{y*D?>7|k6#s8l3B16N%DlC VFf)>*wrCm>@1bZvlH~`*lmQo6QCk22 delta 460 zc${0Q^F)_}`7VqKMjLEv7kGWmG3~ zGY8<%vygc=cA3qKSS~POmC~BLhusHIOC#(}ui7nZRlNPe$#IclAO)LdeS|@S?V#OUvE0MeO zK5WaCfg%oi%dJ3k~v%H(VubaxdJ?LVhg)fwNG$i67v0V{+Lm2s(CZl=<8@w|j!rzL!UEvFE zDT%YRsXIc1T@mxXZjbPbia3kW#B)__*TnXycwEBlUs@PVf47O+Y6ELsrh&9l)!E>! zaGls$Nn#IsIU~zjMH9x&{n`k)nXE@R=eXw5k2WwzSC8$7O$Ddbrk{0lH3Z7DvQd71)N%)_`7A zMgclh#zZR4g-mTIT#(Rl{a zRg$nBL^CxWdNc52dZEyfkPx_mthb#`r>=*0I!@OKWzbWEIf9{zX5`0CRBVvFM7heB zkqYOTBt94AEhZL`D8wrCsnP)1TMV}8Lcf*uZR!~jUmY2Hy+E#jG$5}>;C(xuo{=|* z5V~O^%@>isK+DGHKvT)+O3AD8<=sRNa5h8bY+{IP6Y0Wg9oMa=o6)vXgy6e^E&hep z=%hhf7QlguZCXmg)0MKR3_+w&8HN@^h4hfkl`5ncnrIX)q|Gc=J(zKs)kCvtBoex3 z$!B5L)sMX>ZbB)?$EXO*21Rqt#9#18n@kj&Q<;T?e&BQ>#d7aObkZB%W)sa#^lzR7 zL98@P{09Cv!A#!ac?+~wKORYAtMwMBVll$5T2;H6mlhuazP7PG$HAzvJKJnN$c~u3 zgZ^nU`&@h3tbt$ilAiZMj%eL|qtglQEB6L%_9AH8ten_*8Vr4ecF3v*!8TjbYott8 z8|cPLEyJuf#LXALY<3)cjD+qb_fXCRM?eCw(vO{=WXmbHONHg!%$8%B<=Eodo}HdW z^qEyy&JB{dO-CkvDxA55*R$#BvJv!1!l$JJ<<;?^$VkLfah7%1v6+BX0ED0}cV$R# zLLZtfo5~~o6MGw8o8+5BJqp?$)g*LcY>1^Ij?a?cOXB%jL0L$t=Rj@VJZfc`>C^(( z`Ov0{lhEH!Yst+>^)rV}(8MoDUqLU2UXZG4;vgZ908?iAH6yISarOXkU;~@-5Wq1u z01noO5Hc|_ZZpo!mw|D<2n-Td@?3X@MR*qKay3K$StGY4vmW*!cGPaf8juA;Yofzg z(}b4Yd`;`y>mXiXU38K>iMG)_mJ#5Z)<0jeE1yd4KZ=sOVopoCUPv%39!u@C5mLPA3Spq3aY3niGfKdSVQvfu|<>bY#E&x_0X_ zK$67(uRJ-;Lhq6;T!Scu`$ppPT5?1VsHhkUc{zxey1kCVP~|R$VGtIM?l5#!RTPYz zm#L^xR#D~j%Sb$DG1Ta^c5D&8kwWq@TqY44D?;X*khkjB(`Q5wRT17wA1Uyl0rZGY zkSU`_m(6(im%>!POJfbhH58+Ko6bhYAMG_zwC;W@?*7Yo0#uGciJm2Q z@)|`sdBfM#)xTJv{dbYR9~J!WsMyy(UkFV;Y=QH>#k{~xF+dE>5lt5L^`buPf@_pI zN`BAuZjZe&(#^EcsB#OISN8}gBA=kH@2=!*eD0H%cVXR#=_65qBx z&p!&0iX@>PGFLZ7!)BP);g<%WN@_b{GQ4T^7Lb*QgVusTY9$4UZn?MoyGm(>1h? zu){^FgPK|u?vhI3H^P67pGR|7h6a6Ykr?eCzRIT%O&ugKMRRSO4@WwkCt7}4XAhzN zy&j47BEHv?cqTD<&Qfxa--A>{-UBFXPKzwOv5hn|FQRzSnE&Q1iiWWojQQppC@zWA zpD#ow@Cn$6s|ScHoetuBGUA5?d>wxN0d&uR`s6tz8wl7F)+8qzChb$!WT_2!KzOs1 z*`Gww2E7S*Md#o~5J11QIdi2$8rx*I%EJE@4=G_tberqtLVbuy{T}@zk4aSwsgki; zCF6GehC2*HY3y;%>r_7LP}+nk$GIN^9Xo z8M(A!SbHaBWnO*^Qj&wL)MB#vE z*Y?jeH^6xiZ>f-WG2g^&8F@|y8HwpSR*?{(kXv;~897=r9mLYU5KRVpG?k%u578jD zgtq=En~~0=09s;I$DW2F!p}QE`Sqq77Nto<>~-jRg}q5Bipnourf7$ zK?40WK?DiOq>He5;GXa&i6B&cxGSI~P0sbjxq0Grkn2KFdjQ+%c^28`v!0@(m@~K-{%MEE#|2O zFffq1bk#a^0O_4|(j1WoUzYPBsBj{)FAKSkdc7ET*QM&S{bnrNYqM9h-&$?z-N=q+ zW{~s(0!xsfJ%AsO=2Jq(g+d&cE3cnBokVeLS1|pY>Z!8_$~eZ+&@!;jtsv>Rl9#^W z`O4J^3ZQ_qe+C8mvZ)iq^ccz1mwg(YXo@=B@ONb zV<>acE7{~}6WDhm$dmRLoX-#4^bzyO1Nc%uFev~2HdLtCK__P|gdeeom9VS zXI|gPcKmRaJe1eB@zvMdQwDpLaqOLG>sE}+FXGH@+|qm{C=1uqa7=^KlU*qlTDRr z5(-o(7E5(V-)~r$wm$ZkGK0d$p63luAC`~bh_O?yYz+3m!pQglVfT|If~J5l{N_wMJ_ literal 9434 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 JO?TyA{{!(O{S^QJ diff --git a/schainpy/model/proc/jroproc_correlation.pyc b/schainpy/model/proc/jroproc_correlation.pyc index 908cbaba258757e75fdef86d5c45f304a0fa15ca..9a7e5ff855df80ea61d29ec6871c0502e2d111bf 100644 GIT binary patch delta 513 zc%0j>)u6?}{F#?4M#dp>BS#>k91{Zr12YhN197nnkSJkb$YNxuVPL3XWayn-!njTa zq@;ueB%hj-R>B5kWS1uvr59@eSqxyJ*nRRrcKOM&Y}%72FbOaUY+lF|$jk^9+$_uH zz{n^yIgUMv5vEFKvpB~Skl-IqV@8e123+Zk+LLE+B_k;a;x=Q|kp@}J4kVKEa|?1( zD}r2s>`X?GD99BVshQ~+C7B=x1gTHnB4A)E0CQL0MB=Vdy67%v>bBcph zK|&lLArG+TVzBCz#FE4ygUO15`am}Y3hMD|!pup|&&vwZnA|6*%V;%ukD$7M3dk~L z5FrU7OecR9w6(GVF{40wxPU}jX-B|*NE zvxM{+btlgPl5oFIRuEob0WvKp0z|Na2!EJCL7*rKiUkqbu+YaE556KwK+hD2#3C82 HA}S34{u^u2 delta 574 zc${m{+ONgI{F#^Q-q$Y?8#w|Qr5PC*7?^z$VJbC^bW{#&I1ur>`8PzAta-}nBO>X5%#-Z4l+niNM3glRJAd#G( zTac4l5#%ztMnIBLZSph$16zKWPf98aQiDW63{D`C=bVw4mzSDT9Hasg;s6PGq-LgP zloW$irzDmn2I)^`7Ssp2#aK{}Ujt@Na(-S`kox2TL0v}6$@2u&1(bn;K}sM(0z{Zh zzA9*IWeH+Ng7k0!iL}z39H-K>wA7-YFpz{k%*Dk8IhiHSZb9B4QIJc5d?xz{=`-p~ zt^tx*{XF@b&_WB4$wA>D0u=T^elSCWKoJ@g10u3ukwzf;e1RUc5sAfN*%J{N0Mq`A AlmGw# diff --git a/schainpy/model/proc/jroproc_heispectra.pyc b/schainpy/model/proc/jroproc_heispectra.pyc index ff839509f7fc3b4c05a1b680e03ecb04a807c509..6dec0a4b678ebd3725c6789c785c5afd7a862d14 100644 GIT binary patch delta 1765 zc${riQD|FL7``XTP14&WP17W8vNR2i#+KA|lOb!ixK>Nrw05S)N+(;J-8DCDYMX@I zTeUbSB8Y+;%CDe^dmG}m7wL=QgCZh`FLN*5UX+0k;$8+Kjy>)Cr@be+E+O~h+;jf( z|KI=p|9>w{f17jL|M4p8vGG^Gc8`&`O_C%#duG|ACm0x#v`(apl5~+sm*52Oqrh0-gdKvEBET9O!l3CKdfs zNrH?$3T1oBjeG3h3zzM&(Sw(WX&I54x1!R)=^=CH5PW4{Brzb4y>tf)RH@f<>WWco zaJHvwRn73TMYUGZwW6jQl}**C)T*%OxK8#N&-bR`wmd*a;DH>IZ64yWLCASCq_Asr z06|6wAoRdP=Wt{Ymq~<9QTcEGS>or#|$-s}UUwVRQhZ2{|2IY=ZaK%01 z?8oI(aMS&C%eDJSM@O-^su{VmF}r)dBTmRL>?nOiflrlF#1FTXT8sG?oi0M*YUd{; z04F?IhTEPe{m+?oX)O+#+r0r&fw1>G;(=Sl4N!(e4ityZ;-e6^&#$t?}6cco23q~&qm0e|~X9nPSS;|M1ZvIy88blk$X z)xq1{S(g9z-M?G=H27GbeiP`A+5}NoJ70InDESg5d;TOL7!HngD~W?&zFOZh^o#=U z1bM_mvJ1sioM2OS+1hy6*7YrY4O#vRqp=TOMn&n12t2p5A^MNwa0>&q%meqLpG;kpZD`kyPYAP-FScmWs-WJ2~83HG5ahNe(4^hiw^k0T9#!Nz5 z628oMVT(B=`i!9;I?YX{VGEo#SHVN`&m;&{mcJotog>SA|LJN3zbzVJ+)Q4=ex^!N z$(~^|8=GODZ6V;KJCrbj6+uGqLYuuI7{S*lf@lQ&)6}%4cwoj}xq{P|_6pJpAMKBP zK0ITlkjdx@b0WiY#|B#vU)O@wxv_|e|K&~2bULf)JsCYQ|GP6nLbV1p9a&_?)ogO2 zOVw4y3HQYgTPd#8!Gb75gDYN?RWs>_2d)c5f&upqikIBAWo<^{R>~d*Q{nNFEUfq3 zAx-ewvrk+juK997d&zjo(h#rt8znMve?0?_OON&KK>DpLW<%b3CbSI!S9Ldqp%FEg z)5a6IVeJ&#sbjs2u2x{ycDi&No|SbpZ9{uo5w;`55IPXr3qt)?wf-h~$vT*o{wwSP zsjv$!daL0VyT6FkNC>Os8dUpUkrpudV>N~tT&qNGa$3)~ElIh@|3E6(!DgjEuZxvj zaw4bc5qK5|!RdfPtv(4f&=UI)*iUL9S$>%G!Oikb#miB&vPRXXC+FrjSM(E-hF>dF z>M~BF7;kd)6TOsms5?{2h3f4^h$CR7DM{3VSshU)HH8(qox+s1IMI!p`k*l=6B&}h zx)s{wZqP**;Bjz{T!s@N#lgeAQ4)q1q3SKmDIz6CZn1opcp)Xl2Q}gHfXuwFmTGLW z$?5zEcF|k78b1GH3!Y0LF#ZR)S+u1LAYdETTX^BhM&Rm+>@arYs$Q>D#fTeTRLu?+ z^VWl~hkNVeF0F+w9Td=?K6*@34t`g-sCOhHk}xzx-n8~`zq=6z5e^~r8miXY3S26O z5e`Bkx?zQ6-ivz3dUzWBM@<>D6_s~9`?NOmkfS`jmcsDZCl23^o>Zr@`NiPU-_f>K zZ1rwP)vP_c3(s^K#+4&Hk9&E*-CXTnE_s}@W5igNQ#>^TT%ti9SxhMMO%b3&iY#N- ZMc4j1.1*pnoise: # to be tested later +# # wnoise=pnoise +# noisebl=wnoise*0.9; noisebh=wnoise*1.1 +# spc=spc-wnoise +# +# minx=numpy.argmin(spc) +# spcs=numpy.roll(spc,-minx) +# cum=numpy.cumsum(spcs) +# tot_noise=wnoise * self.Num_Bin #64; +# #tot_signal=sum(cum[-5:])/5.; ''' How does this line work? ''' +# #snr=tot_signal/tot_noise +# #snr=cum[-1]/tot_noise +# +# #print 'spc' , spcs[5:8] , 'tot_noise', tot_noise +# +# snr = sum(spcs)/tot_noise +# snrdB=10.*numpy.log10(snr) +# +# #if snrdB < -9 : +# # snrdB = numpy.NaN +# # continue +# +# #print 'snr',snrdB # , sum(spcs) , tot_noise +# +# +# #if snrdB<-18 or numpy.isnan(snrdB) or num_intg<4: +# # return [None,]*4,[None,]*4,None,snrdB,None,None,[None,]*5,[None,]*9,None +# +# cummax=max(cum); epsi=0.08*fatspectra # cumsum to narrow down the energy region +# cumlo=cummax*epsi; +# cumhi=cummax*(1-epsi) +# powerindex=numpy.array(numpy.where(numpy.logical_and(cum>cumlo, cum-9: # when SNR is strong pick the peak with least shift (LOS velocity) error +# if oneG: +# choice=0 +# else: +# w1=lsq2[0][1]; w2=lsq2[0][5] +# a1=lsq2[0][2]; a2=lsq2[0][6] +# p1=lsq2[0][3]; p2=lsq2[0][7] +# s1=(2**(1+1./p1))*scipy.special.gamma(1./p1)/p1; s2=(2**(1+1./p2))*scipy.special.gamma(1./p2)/p2; +# gp1=a1*w1*s1; gp2=a2*w2*s2 # power content of each ggaussian with proper p scaling +# +# if gp1>gp2: +# if a1>0.7*a2: +# choice=1 +# else: +# choice=2 +# elif gp2>gp1: +# if a2>0.7*a1: +# choice=2 +# else: +# choice=1 +# else: +# choice=numpy.argmax([a1,a2])+1 +# #else: +# #choice=argmin([std2a,std2b])+1 +# +# else: # with low SNR go to the most energetic peak +# choice=numpy.argmax([lsq1[0][2]*lsq1[0][1],lsq2[0][2]*lsq2[0][1],lsq2[0][6]*lsq2[0][5]]) +# +# #print 'choice',choice +# +# if choice==0: # pick the single gaussian fit +# Amplitude0=lsq1[0][2] +# shift0=lsq1[0][0] +# width0=lsq1[0][1] +# p0=lsq1[0][3] +# Amplitude1=0. +# shift1=0. +# width1=0. +# p1=0. +# noise=lsq1[0][4] +# elif choice==1: # take the first one of the 2 gaussians fitted +# Amplitude0 = lsq2[0][2] +# shift0 = lsq2[0][0] +# width0 = lsq2[0][1] +# p0 = lsq2[0][3] +# Amplitude1 = lsq2[0][6] # This is 0 in gg1 +# shift1 = lsq2[0][4] # This is 0 in gg1 +# width1 = lsq2[0][5] # This is 0 in gg1 +# p1 = lsq2[0][7] # This is 0 in gg1 +# noise = lsq2[0][8] +# else: # the second one +# Amplitude0 = lsq2[0][6] +# shift0 = lsq2[0][4] +# width0 = lsq2[0][5] +# p0 = lsq2[0][7] +# Amplitude1 = lsq2[0][2] # This is 0 in gg1 +# shift1 = lsq2[0][0] # This is 0 in gg1 +# width1 = lsq2[0][1] # This is 0 in gg1 +# p1 = lsq2[0][3] # This is 0 in gg1 +# noise = lsq2[0][8] +# +# #print len(noise + Amplitude0*numpy.exp(-0.5*(abs(x-shift0))/width0)**p0) +# SPC_ch1[:,ht] = noise + Amplitude0*numpy.exp(-0.5*(abs(x-shift0))/width0)**p0 +# SPC_ch2[:,ht] = noise + Amplitude1*numpy.exp(-0.5*(abs(x-shift1))/width1)**p1 +# #print 'SPC_ch1.shape',SPC_ch1.shape +# #print 'SPC_ch2.shape',SPC_ch2.shape +# #dataOut.data_param = SPC_ch1 +# GauSPC[0] = SPC_ch1 +# GauSPC[1] = SPC_ch2 + +# #plt.gcf().clear() +# plt.figure(50+self.i) +# self.i=self.i+1 +# #plt.subplot(121) +# plt.plot(self.spc,'k')#,label='spc(66)') +# plt.plot(SPC_ch1[ch,ht],'b')#,label='gg1') +# #plt.plot(SPC_ch2,'r')#,label='gg2') +# #plt.plot(xFrec,ySamples[1],'g',label='Ch1') +# #plt.plot(xFrec,ySamples[2],'r',label='Ch2') +# #plt.plot(xFrec,FitGauss,'yo:',label='fit') +# plt.legend() +# plt.title('DATOS A ALTURA DE 7500 METROS') +# plt.show() +# print 'shift0', shift0 +# print 'Amplitude0', Amplitude0 +# print 'width0', width0 +# print 'p0', p0 +# print '========================' +# print 'shift1', shift1 +# print 'Amplitude1', Amplitude1 +# print 'width1', width1 +# print 'p1', p1 +# print 'noise', noise +# print 's_noise', wnoise + + print '========================================================' + print 'total_time: ', time.time()-start_time + + # re-normalizing spc and noise + # This part differs from gg1 + + + + ''' Parameters: + 1. Amplitude + 2. Shift + 3. Width + 4. Power + ''' + + + ############################################################################### + def FitGau(self, X): + + Vrange, ch, pnoise, noise_, num_intg, SNRlimit = X + #print 'VARSSSS', ch, pnoise, noise, num_intg + + #print 'HEIGHTS', self.Num_Hei + + GauSPC = [] + SPC_ch1 = numpy.empty([self.Num_Bin,self.Num_Hei]) + SPC_ch2 = numpy.empty([self.Num_Bin,self.Num_Hei]) + SPC_ch1[:] = 0#numpy.NaN + SPC_ch2[:] = 0#numpy.NaN + + + + for ht in range(self.Num_Hei): + #print (numpy.asarray(self.spc).shape) + + #print 'TTTTT', ch , ht + #print self.spc.shape + + + spc = numpy.asarray(self.spc)[ch,:,ht] + + ############################################# + # normalizing spc and noise + # This part differs from gg1 + spc_norm_max = max(spc) + spc = spc / spc_norm_max + pnoise = pnoise / spc_norm_max + ############################################# + + fatspectra=1.0 + + wnoise = noise_ / spc_norm_max + #wnoise,stdv,i_max,index =enoise(spc,num_intg) #noise estimate using Hildebrand Sekhon, only wnoise is used + #if wnoise>1.1*pnoise: # to be tested later + # wnoise=pnoise + noisebl=wnoise*0.9; noisebh=wnoise*1.1 + spc=spc-wnoise + # print 'wnoise', noise_[0], spc_norm_max, wnoise + minx=numpy.argmin(spc) + spcs=numpy.roll(spc,-minx) + cum=numpy.cumsum(spcs) + tot_noise=wnoise * self.Num_Bin #64; + #print 'spc' , spcs[5:8] , 'tot_noise', tot_noise + #tot_signal=sum(cum[-5:])/5.; ''' How does this line work? ''' + #snr=tot_signal/tot_noise + #snr=cum[-1]/tot_noise + snr = sum(spcs)/tot_noise + snrdB=10.*numpy.log10(snr) + + if snrdB < SNRlimit : + snr = numpy.NaN + SPC_ch1[:,ht] = 0#numpy.NaN + SPC_ch1[:,ht] = 0#numpy.NaN + GauSPC = (SPC_ch1,SPC_ch2) + continue + #print 'snr',snrdB #, sum(spcs) , tot_noise + + + + #if snrdB<-18 or numpy.isnan(snrdB) or num_intg<4: + # return [None,]*4,[None,]*4,None,snrdB,None,None,[None,]*5,[None,]*9,None + + cummax=max(cum); epsi=0.08*fatspectra # cumsum to narrow down the energy region + cumlo=cummax*epsi; + cumhi=cummax*(1-epsi) + powerindex=numpy.array(numpy.where(numpy.logical_and(cum>cumlo, cum-6: # when SNR is strong pick the peak with least shift (LOS velocity) error + if oneG: + choice=0 + else: + w1=lsq2[0][1]; w2=lsq2[0][5] + a1=lsq2[0][2]; a2=lsq2[0][6] + p1=lsq2[0][3]; p2=lsq2[0][7] + s1=(2**(1+1./p1))*scipy.special.gamma(1./p1)/p1; + s2=(2**(1+1./p2))*scipy.special.gamma(1./p2)/p2; + gp1=a1*w1*s1; gp2=a2*w2*s2 # power content of each ggaussian with proper p scaling + + if gp1>gp2: + if a1>0.7*a2: + choice=1 + else: + choice=2 + elif gp2>gp1: + if a2>0.7*a1: + choice=2 + else: + choice=1 + else: + choice=numpy.argmax([a1,a2])+1 + #else: + #choice=argmin([std2a,std2b])+1 + + else: # with low SNR go to the most energetic peak + choice=numpy.argmax([lsq1[0][2]*lsq1[0][1],lsq2[0][2]*lsq2[0][1],lsq2[0][6]*lsq2[0][5]]) + + + shift0=lsq2[0][0]; vel0=Vrange[0] + shift0*(Vrange[1]-Vrange[0]) + shift1=lsq2[0][4]; vel1=Vrange[0] + shift1*(Vrange[1]-Vrange[0]) + + max_vel = 20 + + #first peak will be 0, second peak will be 1 + if vel0 > 0 and vel0 < max_vel : #first peak is in the correct range + shift0=lsq2[0][0] + width0=lsq2[0][1] + Amplitude0=lsq2[0][2] + p0=lsq2[0][3] + + shift1=lsq2[0][4] + width1=lsq2[0][5] + Amplitude1=lsq2[0][6] + p1=lsq2[0][7] + noise=lsq2[0][8] + else: + shift1=lsq2[0][0] + width1=lsq2[0][1] + Amplitude1=lsq2[0][2] + p1=lsq2[0][3] + + shift0=lsq2[0][4] + width0=lsq2[0][5] + Amplitude0=lsq2[0][6] + p0=lsq2[0][7] + noise=lsq2[0][8] + + if Amplitude0<0.1: # in case the peak is noise + shift0,width0,Amplitude0,p0 = 4*[numpy.NaN] + if Amplitude1<0.1: + shift1,width1,Amplitude1,p1 = 4*[numpy.NaN] + + +# if choice==0: # pick the single gaussian fit +# Amplitude0=lsq1[0][2] +# shift0=lsq1[0][0] +# width0=lsq1[0][1] +# p0=lsq1[0][3] +# Amplitude1=0. +# shift1=0. +# width1=0. +# p1=0. +# noise=lsq1[0][4] +# elif choice==1: # take the first one of the 2 gaussians fitted +# Amplitude0 = lsq2[0][2] +# shift0 = lsq2[0][0] +# width0 = lsq2[0][1] +# p0 = lsq2[0][3] +# Amplitude1 = lsq2[0][6] # This is 0 in gg1 +# shift1 = lsq2[0][4] # This is 0 in gg1 +# width1 = lsq2[0][5] # This is 0 in gg1 +# p1 = lsq2[0][7] # This is 0 in gg1 +# noise = lsq2[0][8] +# else: # the second one +# Amplitude0 = lsq2[0][6] +# shift0 = lsq2[0][4] +# width0 = lsq2[0][5] +# p0 = lsq2[0][7] +# Amplitude1 = lsq2[0][2] # This is 0 in gg1 +# shift1 = lsq2[0][0] # This is 0 in gg1 +# width1 = lsq2[0][1] # This is 0 in gg1 +# p1 = lsq2[0][3] # This is 0 in gg1 +# noise = lsq2[0][8] + + #print len(noise + Amplitude0*numpy.exp(-0.5*(abs(x-shift0))/width0)**p0) + SPC_ch1[:,ht] = noise + Amplitude0*numpy.exp(-0.5*(abs(x-shift0))/width0)**p0 + SPC_ch2[:,ht] = noise + Amplitude1*numpy.exp(-0.5*(abs(x-shift1))/width1)**p1 + #print 'SPC_ch1.shape',SPC_ch1.shape + #print 'SPC_ch2.shape',SPC_ch2.shape + #dataOut.data_param = SPC_ch1 + GauSPC = (SPC_ch1,SPC_ch2) + #GauSPC[1] = SPC_ch2 + +# print 'shift0', shift0 +# print 'Amplitude0', Amplitude0 +# print 'width0', width0 +# print 'p0', p0 +# print '========================' +# print 'shift1', shift1 +# print 'Amplitude1', Amplitude1 +# print 'width1', width1 +# print 'p1', p1 +# print 'noise', noise +# print 's_noise', wnoise + + return GauSPC + + + def y_jacobian1(self,x,state): # This function is for further analysis of generalized Gaussians, it is not too importan for the signal discrimination. + y_model=self.y_model1(x,state) + s0,w0,a0,p0,n=state + e0=((x-s0)/w0)**2; + + e0u=((x-s0-self.Num_Bin)/w0)**2; + + e0d=((x-s0+self.Num_Bin)/w0)**2 + m0=numpy.exp(-0.5*e0**(p0/2.)); + m0u=numpy.exp(-0.5*e0u**(p0/2.)); + m0d=numpy.exp(-0.5*e0d**(p0/2.)) + JA=m0+m0u+m0d + JP=(-1/4.)*a0*m0*e0**(p0/2.)*numpy.log(e0)+(-1/4.)*a0*m0u*e0u**(p0/2.)*numpy.log(e0u)+(-1/4.)*a0*m0d*e0d**(p0/2.)*numpy.log(e0d) + + JS=(p0/w0/2.)*a0*m0*e0**(p0/2.-1)*((x-s0)/w0)+(p0/w0/2.)*a0*m0u*e0u**(p0/2.-1)*((x-s0- self.Num_Bin )/w0)+(p0/w0/2.)*a0*m0d*e0d**(p0/2.-1)*((x-s0+ self.Num_Bin )/w0) + + JW=(p0/w0/2.)*a0*m0*e0**(p0/2.-1)*((x-s0)/w0)**2+(p0/w0/2.)*a0*m0u*e0u**(p0/2.-1)*((x-s0- self.Num_Bin )/w0)**2+(p0/w0/2.)*a0*m0d*e0d**(p0/2.-1)*((x-s0+ self.Num_Bin )/w0)**2 + jack1=numpy.sqrt(7)*numpy.array([JS/y_model,JW/y_model,JA/y_model,JP/y_model,1./y_model]) + return jack1.T + + def y_jacobian2(self,x,state): + y_model=self.y_model2(x,state) + s0,w0,a0,p0,s1,w1,a1,p1,n=state + e0=((x-s0)/w0)**2; + + e0u=((x-s0- self.Num_Bin )/w0)**2; + + e0d=((x-s0+ self.Num_Bin )/w0)**2 + e1=((x-s1)/w1)**2; + + e1u=((x-s1- self.Num_Bin )/w1)**2; + + e1d=((x-s1+ self.Num_Bin )/w1)**2 + m0=numpy.exp(-0.5*e0**(p0/2.)); + m0u=numpy.exp(-0.5*e0u**(p0/2.)); + m0d=numpy.exp(-0.5*e0d**(p0/2.)) + m1=numpy.exp(-0.5*e1**(p1/2.)); + m1u=numpy.exp(-0.5*e1u**(p1/2.)); + m1d=numpy.exp(-0.5*e1d**(p1/2.)) + JA=m0+m0u+m0d + JA1=m1+m1u+m1d + JP=(-1/4.)*a0*m0*e0**(p0/2.)*numpy.log(e0)+(-1/4.)*a0*m0u*e0u**(p0/2.)*numpy.log(e0u)+(-1/4.)*a0*m0d*e0d**(p0/2.)*numpy.log(e0d) + JP1=(-1/4.)*a1*m1*e1**(p1/2.)*numpy.log(e1)+(-1/4.)*a1*m1u*e1u**(p1/2.)*numpy.log(e1u)+(-1/4.)*a1*m1d*e1d**(p1/2.)*numpy.log(e1d) + + JS=(p0/w0/2.)*a0*m0*e0**(p0/2.-1)*((x-s0)/w0)+(p0/w0/2.)*a0*m0u*e0u**(p0/2.-1)*((x-s0- self.Num_Bin )/w0)+(p0/w0/2.)*a0*m0d*e0d**(p0/2.-1)*((x-s0+ self.Num_Bin )/w0) + + JS1=(p1/w1/2.)*a1*m1*e1**(p1/2.-1)*((x-s1)/w1)+(p1/w1/2.)*a1*m1u*e1u**(p1/2.-1)*((x-s1- self.Num_Bin )/w1)+(p1/w1/2.)*a1*m1d*e1d**(p1/2.-1)*((x-s1+ self.Num_Bin )/w1) + + JW=(p0/w0/2.)*a0*m0*e0**(p0/2.-1)*((x-s0)/w0)**2+(p0/w0/2.)*a0*m0u*e0u**(p0/2.-1)*((x-s0- self.Num_Bin )/w0)**2+(p0/w0/2.)*a0*m0d*e0d**(p0/2.-1)*((x-s0+ self.Num_Bin )/w0)**2 + + JW1=(p1/w1/2.)*a1*m1*e1**(p1/2.-1)*((x-s1)/w1)**2+(p1/w1/2.)*a1*m1u*e1u**(p1/2.-1)*((x-s1- self.Num_Bin )/w1)**2+(p1/w1/2.)*a1*m1d*e1d**(p1/2.-1)*((x-s1+ self.Num_Bin )/w1)**2 + jack2=numpy.sqrt(7)*numpy.array([JS/y_model,JW/y_model,JA/y_model,JP/y_model,JS1/y_model,JW1/y_model,JA1/y_model,JP1/y_model,1./y_model]) + return jack2.T + + def y_model1(self,x,state): + shift0,width0,amplitude0,power0,noise=state + model0=amplitude0*numpy.exp(-0.5*abs((x-shift0)/width0)**power0) + + model0u=amplitude0*numpy.exp(-0.5*abs((x-shift0- self.Num_Bin )/width0)**power0) + + model0d=amplitude0*numpy.exp(-0.5*abs((x-shift0+ self.Num_Bin )/width0)**power0) + return model0+model0u+model0d+noise + + def y_model2(self,x,state): #Equation for two generalized Gaussians with Nyquist + shift0,width0,amplitude0,power0,shift1,width1,amplitude1,power1,noise=state + model0=amplitude0*numpy.exp(-0.5*abs((x-shift0)/width0)**power0) + + model0u=amplitude0*numpy.exp(-0.5*abs((x-shift0- self.Num_Bin )/width0)**power0) + + model0d=amplitude0*numpy.exp(-0.5*abs((x-shift0+ self.Num_Bin )/width0)**power0) + model1=amplitude1*numpy.exp(-0.5*abs((x-shift1)/width1)**power1) + + model1u=amplitude1*numpy.exp(-0.5*abs((x-shift1- self.Num_Bin )/width1)**power1) + + model1d=amplitude1*numpy.exp(-0.5*abs((x-shift1+ self.Num_Bin )/width1)**power1) + return model0+model0u+model0d+model1+model1u+model1d+noise + + def misfit1(self,state,y_data,x,num_intg): # This function compares how close real data is with the model data, the close it is, the better it is. + + return num_intg*sum((numpy.log(y_data)-numpy.log(self.y_model1(x,state)))**2)#/(64-5.) # /(64-5.) can be commented + + def misfit2(self,state,y_data,x,num_intg): + return num_intg*sum((numpy.log(y_data)-numpy.log(self.y_model2(x,state)))**2)#/(64-9.) class PrecipitationProc(Operation): ''' - Funtion that uses Reflectivity factor (Z), and estimates rainfall Rate + Operator that estimates Reflectivity factor (Z), and estimates rainfall Rate (R) Input: self.dataOut.data_pre : SelfSpectra - - - Output: + Output: self.dataOut.data_output : Reflectivity factor, rainfall Rate - Parameters affected: Winds, height range, SNR + Parameters affected: ''' + - def run(self, dataOut): + def run(self, dataOut, radar=None, Pt=None, Gt=None, Gr=None, Lambda=None, aL=None, + tauW=None, ThetaT=None, ThetaR=None, Km = 0.93, Altitude=None): - #numpy.set_printoptions(threshold=numpy.NaN) + self.spc = dataOut.data_pre[0].copy() + self.Num_Hei = self.spc.shape[2] + self.Num_Bin = self.spc.shape[1] + self.Num_Chn = self.spc.shape[0] - spc = dataOut.data_pre[0].copy() - NPW = dataOut.NPW - COFA = dataOut.COFA - #print 'COFA',COFA.shape - #spc = numpy.where(spc<0,spc, numpy.NaN ) + Velrange = dataOut.abscissaList + + if radar == "MIRA35C" : + + Ze = self.dBZeMODE2(dataOut) + + else: + + self.Pt = Pt + self.Gt = Gt + self.Gr = Gr + self.Lambda = Lambda + self.aL = aL + self.tauW = tauW + self.ThetaT = ThetaT + self.ThetaR = ThetaR + + RadarConstant = GetRadarConstant() + SPCmean = numpy.mean(self.spc,0) + ETA = numpy.zeros(self.Num_Hei) + Pr = numpy.sum(SPCmean,0) + + #for R in range(self.Num_Hei): + # ETA[R] = RadarConstant * Pr[R] * R**2 #Reflectivity (ETA) + + D_range = numpy.zeros(self.Num_Hei) + EqSec = numpy.zeros(self.Num_Hei) + del_V = numpy.zeros(self.Num_Hei) + + for R in range(self.Num_Hei): + ETA[R] = RadarConstant * Pr[R] * R**2 #Reflectivity (ETA) + + h = R + Altitude #Range from ground to radar pulse altitude + del_V[R] = 1 + 3.68 * 10**-5 * h + 1.71 * 10**-9 * h**2 #Density change correction for velocity + + D_range[R] = numpy.log( (9.65 - (Velrange[R]/del_V[R])) / 10.3 ) / -0.6 #Range of Diameter of drops related to velocity + SIGMA[R] = numpy.pi**5 / Lambda**4 * Km * D_range[R]**6 #Equivalent Section of drops (sigma) + + N_dist[R] = ETA[R] / SIGMA[R] + + Ze = (ETA * Lambda**4) / (numpy.pi * Km) + Z = numpy.sum( N_dist * D_range**6 ) + RR = 6*10**-4*numpy.pi * numpy.sum( D_range**3 * N_dist * Velrange ) #Rainfall rate - SNR = numpy.array([spc[0,:,:] / NPW[0] , spc[1,:,:] / NPW[1]]) + RR = (Ze/200)**(1/1.6) + dBRR = 10*numpy.log10(RR) - #print 'SNR',SNR.shape - #print ' ' + dBZe = 10*numpy.log10(Ze) + dataOut.data_output = Ze + dataOut.data_param = numpy.ones([2,self.Num_Hei]) + dataOut.channelList = [0,1] + print 'channelList', dataOut.channelList + dataOut.data_param[0]=dBZe + dataOut.data_param[1]=dBRR + print 'RR SHAPE', dBRR.shape + print 'Ze SHAPE', dBZe.shape + print 'dataOut.data_param SHAPE', dataOut.data_param.shape + + + def dBZeMODE2(self, dataOut): # Processing for MIRA35C + + NPW = dataOut.NPW + COFA = dataOut.COFA + + SNR = numpy.array([self.spc[0,:,:] / NPW[0]]) #, self.spc[1,:,:] / NPW[1]]) RadarConst = dataOut.RadarConst #frequency = 34.85*10**9 - #Lambda = SPEED_OF_LIGHT/frequency - - Num_Hei = spc.shape[2] - Num_Bin = spc.shape[1] - Num_Chn = spc.shape[0] - ETA = numpy.zeros(([Num_Chn ,Num_Hei])) - data_output = numpy.ones([Num_Chn ,Num_Hei])*numpy.NaN - Km = 0.93 + ETA = numpy.zeros(([self.Num_Chn ,self.Num_Hei])) + data_output = numpy.ones([self.Num_Chn , self.Num_Hei])*numpy.NaN ETA = numpy.sum(SNR,1) - ETA = numpy.where(ETA > 0. , ETA, numpy.NaN) + print 'ETA' , ETA + ETA = numpy.where(ETA is not 0. , ETA, numpy.NaN) - Ze = numpy.ones([Num_Chn,Num_Hei] ) + Ze = numpy.ones([self.Num_Chn, self.Num_Hei] ) - for r in range(Num_Hei): + for r in range(self.Num_Hei): Ze[0,r] = ( ETA[0,r] ) * COFA[0,r][0] * RadarConst * ((r/5000.)**2) - Ze[1,r] = ( ETA[1,r] ) * COFA[1,r][0] * RadarConst * ((r/5000.)**2) + #Ze[1,r] = ( ETA[1,r] ) * COFA[1,r][0] * RadarConst * ((r/5000.)**2) + return Ze + + def GetRadarConstant(self): + + """ + Constants: - dBZe = 10*numpy.log10(Ze) - dataOut.data_output = Ze - dataOut.data_param = dBZe + Pt: Transmission Power dB + Gt: Transmission Gain dB + Gr: Reception Gain dB + Lambda: Wavelenght m + aL: Attenuation loses dB + tauW: Width of transmission pulse s + ThetaT: Transmission antenna bean angle rad + ThetaR: Reception antenna beam angle rad - print 'dBZe',dBZe[0,:] + """ + Numerator = ( (4*numpy.pi)**3 * aL**2 * 16 * numpy.log(2) ) + Denominator = ( Pt * Gt * Gr * Lambda**2 * SPEED_OF_LIGHT * TauW * numpy.pi * ThetaT * TheraR) + RadarConstant = Numerator / Denominator + + return RadarConstant - class FullSpectralAnalysis(Operation): @@ -218,7 +1041,7 @@ class FullSpectralAnalysis(Operation): Parameters affected: Winds, height range, SNR """ - def run(self, dataOut): + def run(self, dataOut, E01=None, E02=None, E12=None, N01=None, N02=None, N12=None): spc = dataOut.data_pre[0].copy() cspc = dataOut.data_pre[1].copy() @@ -227,9 +1050,18 @@ class FullSpectralAnalysis(Operation): nProfiles = spc.shape[1] nHeights = spc.shape[2] - pairsList = dataOut.groupList - ChanDist = dataOut.ChanDist - VelRange= dataOut.VelRange + pairsList = dataOut.groupList + if dataOut.ChanDist is not None : + ChanDist = dataOut.ChanDist + else: + ChanDist = numpy.array([[E01, N01],[E02,N02],[E12,N12]]) + + #print 'ChanDist', ChanDist + + if dataOut.VelRange is not None: + VelRange= dataOut.VelRange + else: + VelRange= dataOut.abscissaList ySamples=numpy.ones([nChannel,nProfiles]) phase=numpy.ones([nChannel,nProfiles]) @@ -240,6 +1072,7 @@ class FullSpectralAnalysis(Operation): data = dataOut.data_pre noise = dataOut.noise + print 'noise',noise SNRdB = 10*numpy.log10(dataOut.data_SNR) FirstMoment = [] @@ -257,20 +1090,20 @@ class FullSpectralAnalysis(Operation): for Height in range(nHeights): - - [Vzon,Vmer,Vver, GaussCenter]= self.WindEstimation(spc, cspc, pairsList, ChanDist, Height, noise, VelRange) - if abs(Vzon)<100 and abs(Vzon)> 0.: + if abs(Vzon)<100. and abs(Vzon)> 0.: velocityX=numpy.append(velocityX, Vzon)#Vmag else: + print 'Vzon',Vzon velocityX=numpy.append(velocityX, numpy.NaN) - - if abs(Vmer)<100 and abs(Vmer) > 0.: + + if abs(Vmer)<100. and abs(Vmer) > 0.: velocityY=numpy.append(velocityY, Vmer)#Vang else: + print 'Vmer',Vmer velocityY=numpy.append(velocityY, numpy.NaN) if abs(GaussCenter)<10: @@ -278,10 +1111,10 @@ class FullSpectralAnalysis(Operation): else: velocityV=numpy.append(velocityV, numpy.NaN) #FirstMoment[Height]= numpy.NaN - if SNRdBMean[Height] <12: - FirstMoment[Height] = numpy.NaN - velocityX[Height] = numpy.NaN - velocityY[Height] = numpy.NaN +# if SNRdBMean[Height] <12: +# FirstMoment[Height] = numpy.NaN +# velocityX[Height] = numpy.NaN +# velocityY[Height] = numpy.NaN data_output[0]=numpy.array(velocityX) @@ -291,8 +1124,9 @@ class FullSpectralAnalysis(Operation): print ' ' #print 'FirstMoment' #print FirstMoment + print 'velocityX',data_output[0] print ' ' - #print 'velocityY' + print 'velocityY',data_output[1] #print numpy.array(velocityY) print ' ' #print 'SNR' @@ -309,7 +1143,7 @@ class FullSpectralAnalysis(Operation): return numpy.convolve(x, numpy.ones((N,))/N)[(N-1):] def gaus(self,xSamples,a,x0,sigma): - return a*exp(-(xSamples-x0)**2/(2*sigma**2)) + return a*numpy.exp(-(xSamples-x0)**2/(2*sigma**2)) def Find(self,x,value): for index in range(len(x)): @@ -353,9 +1187,17 @@ class FullSpectralAnalysis(Operation): xSamples = ar(range(len(SmoothSPC))) ySamples[i] = SmoothSPC-noise[i] - + + print ' ' + print ' ' + print ' ' + print 'SmoothSPC',SmoothSPC + print 'noise',noise + print'zline',zline + print'FactNorm',FactNorm + for i in range(spc.shape[0]): - + '''****** Line of Data CSPC ******''' cspcLine=cspc[i,:,Height].copy() @@ -372,6 +1214,8 @@ class FullSpectralAnalysis(Operation): coherence[i]= self.moving_average(coherence[i],N=2) phase[i] = self.moving_average( numpy.arctan2(CSPCSamples[i].imag, CSPCSamples[i].real),N=1)#*180/numpy.pi + + print 'CSPCSamples', CSPCSamples '''****** Getting fij width ******''' @@ -385,7 +1229,15 @@ class FullSpectralAnalysis(Operation): meanGauss=sum(xSamples*yMean) / len(xSamples) sigma=sum(yMean*(xSamples-meanGauss)**2) / len(xSamples) - if (abs(meanGauss/sigma**2) > 0.00001) : + print '****************************' + print 'len(xSamples): ',len(xSamples) + print 'yMean: ', yMean + print 'ySamples', ySamples + print 'xSamples: ',xSamples + + print 'meanGauss',meanGauss + print 'sigma',sigma + if (abs(meanGauss/sigma**2) > 0.000000001):#0.00001) : try: popt,pcov = curve_fit(self.gaus,xSamples,yMean,p0=[1,meanGauss,sigma]) @@ -399,7 +1251,7 @@ class FullSpectralAnalysis(Operation): except RuntimeError: FitGauss=numpy.ones(len(xSamples))*numpy.mean(yMean) -# + else: FitGauss=numpy.ones(len(xSamples))*numpy.mean(yMean) @@ -474,12 +1326,13 @@ class FullSpectralAnalysis(Operation): VxVyResults=numpy.array([-cF,-cG]) (Vx,Vy) = numpy.linalg.solve(VxVy, VxVyResults) + Vzon = Vy Vmer = Vx Vmag=numpy.sqrt(Vzon**2+Vmer**2) Vang=numpy.arctan2(Vmer,Vzon) Vver=xFrec[Vpos] - + print 'vzon y vmer', Vzon, Vmer return Vzon, Vmer, Vver, GaussCenter class SpectralMoments(Operation): diff --git a/schainpy/model/proc/jroproc_parameters.pyc b/schainpy/model/proc/jroproc_parameters.pyc index c530ce9cfccf22090e55b673b19d7b124db7dcc3..7245382990d53a65d87e3e17750136f2d428ca20 100644 GIT binary patch delta 31802 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 BLK*-7 delta 3327 zc$}41du&r>6u)2h?$+5cI@p7>bd(hs7Sm06>^)>`jOlb7Mv#4L=Xg>`s-AGkscKkLD))!Ck5f@y}IL-IIZO3 zoD}fd)u+H9;)2gj=Hg*#bI>Eok}oU*$$5krqDyl2ok!oluIcTp!e>p06y$UT*pHz=v#^HPw#E9}lNTStHWH6Ibm}lr9Ga+DD zPv*i2!{!X0gQXKW`PFEr5w4Z(npmOPRS>)Z(dP;-7Zs5jwP=}>3S5RxX&Vj|so)QV zR)`)Y7-o!U69Qw2ylJzxOzzww%CZ!Q&{iCJAnpZyv`0GN`m}mtg*oMqnr)a+=E8tr z(PE8Rrm(x*k|Cx`PQVKw^ejK#z>Q%f*yN7%p|fV0xB3OiJ3 zGj7Pn(hrp;LMGut)qvij=hgL&y#|J>`$`i-@uG9Vo$7{?l)>$mS+Kfhw`qja=|EV{ zVuSNFjf-$bDN(@_6So_aoU|&7knO}1eSKCR(G}|8VwDs6>_t##URjvL*bI|q2eH60 za~m8tm#AdTP-7XGO7@7cjmuui3J@00-jktLjMlGo<_2VD;UmbFiCcS@lOK1p!}{Sk@UQwdaQ3&hB%sD%AH z=x!W-9$^_j{SjG|>7=HO`VV_{%U-%uTN4(?rGSF1OAPxW!7%J^G7>)=Zkq0TR){yj zfIp(pCwVc9BfN~TRfu=vuqclNN12&1+3yX8M_CV~FCe^#@DfaGt}QObSL}jn18!^X z$=`#od*PMlh566n>#OiZvq;_sTgw6RE}UptQ2U0)-aqmXeG}L0*PN=&t$l0ObpYO|yXDZB5?Pw)<=c9{EK6CzMi;F*OKec?auzc|9!GFO zzpK`WN7bIo)px=!mm|aRyXiVcJn+ft0ry=r{1}WY_L;lLGkpo+4}{C9UjA37se||W z_K^e7-cOS+MAZ}AJKnh-93BpZgI<3?V&5D6-4q4R;bIzcc^Sx2=M;u2IJN{wB?o+M zsz}$zV3;1A!j2^N)KQ^`cMS ze&74^yno-hb%k78Ay)Gr4%>_;e*C)id*U&19A~D#ar#qJ6f}-oAlx#?Efel#_={|G zp^Dao_fl?FvrysmqNvQNK`L|V>zqAaQ$Rq@v?xYvPH&YN5MO@O*jUuV@Vo?&1nXp^WQd^=&2^8){ zvc=+2F|8F8VFa}pk5Rbn+{ZtTVyi)^8$NMPMKG%%`|mK+nc*m-jo?G*)GM&943&3W zJ!HU*Dp+X2X4oc?5uS;~q9kX82{g7Ckw)Rpp0H~M#mEl6E8^alNQ60BKw#F*hBXU# z8lj;F#_oLUAaOBeERZm+6B8ET%l$#xir@Bk^T~$RZB9aRaH)NY*x=Xp9K|ii1l({B zKwH=iPS5kMGlp-RMd1-f4z7D5eR!kYM%@Wcg4H)gNu=Rx-(!5jsJsWk3w{2}#!&TD+PgkAd518P zi(Mm}z1w6T{N3XtDewdi^9x3iCKy?m51io7qquD3>4EP80pE+5A}-@uG54Qxqf)BD z4MKwOS;rA592lh;&9H0&p%~3(m1eR&UCSbB#Ie+9=v?b&Xd9{jV?fJVuAJ+&H^mKA zwp`VPVlF2Uf<}c-=^LzBDafV#$)Zx26=Lv3e~3H>zxV%Bx3>=;Oxef~yn1As)Si}T zbht*0d6|>6i9%MDgb*ITW@PBq6+|^JYD%_TeLCJiIHpt0s@b&AHQ@!Lna?7;jj*V1rXtFjLY_S>B{@4=Q1U_y72ZTxL3j%x zt+!b`r82v`l*v*mb{=nA5DvpiEMZwi@m=^i)@ykk#jDU37s(o2h+iewz%v~3f1ta{ zX8MH>QRgF_Ojgbem&(HXkQ*-5RW>p*M!db)Pm|I2-bPb)=b;nLDI5~bUaj`DloLdG zPO2OFMPp-YW5%+M>kSu>V6{c9@ZOl;vV`I}_-ZWRs*T(QgeMU$LQ^6hOzC}+S%($9 z4H>ai-gzL`;q$~AnFD#e%RX<+LKarXyGJw>RfHnKQwV@iM)(+E6X7<(`d#(d{)Ic9 R9H1YiSCUWEstO}1_rKSjjVS;C delta 2215 zc$|%v?@v=#7{~8vp(};rb!+_r{Y7!K(weC-!2zWegA@uQCxZ;*!Y=f-TrIby_k!r0 zi@KQk#zmjWoYBo?F;26QkiKwyIr_3vlzE?Ivj^@QU%6T5oYrSvnX9Cw&-Cphj5JSX?I z;<#FYgJLEXWOq)3Lc!PQtsWOAvXg==rt<>auL?oX%oBTIulZ30S<4_?NLic6CO`T_ z$I{Cj7VcO5ZYF!+J9~@OxBP>L_B$qaTd3_NUihW<@eU9As$@7W=Cg`g#aeRDlpxDu zMxlGy6MYl$3c?RhH-y-{I=-K{K;$P$5Pssrqz(SzPpu>P!NyJ#8NTRn6AySCbz`WV zzN!aBJ(d$`92>Z>l*{!BlWI0kV`!zVegFqIFr+dOyl1!e;mxKuy>uzexI~!jwOWVt-{bDBZN#Zf#Msh)T{M;8WL=Qu?q=QV z{6IOL0`(3;&O_AK3OQGU&1W+z>EG=xSac27mb!}FuG2NEI!?K7ICF-S1Y$_r7j$^q zcjAaz!!TK_xwxDZ=T}&jvE7h~W($9MhKb2)f|&1P>k5fpc(6AVdd|I ze8b3#3f(Xs>V;V}p^ZpC#RQ8d^A5Gp4l;+e-5wokOZ-${JKS{t$(_6e` zBw7-}QW*w2bT?w2=<@rgL;ngAnZRils{`(0f``hq96) z(q`-iBMKhfKv1RyH80H<&%#THUVRIaA`3G8LeCj{(C%?LMbE+?UBPy&iQ*SvCa|hRv^_p<5ug;7s>*@;z*eh8l0^o}}b1dJ}DKbIV7YBqw9D^Ym-T zM`zcGbW1EwykX3{$*7NTIhFck-=WGuEG)IU82wQ(Lj^f4u6T*&j3c8|np!Zr^}?Vi zyqK~r@M&M8WgeTy;D^3|vs9)h5Fa8=!n3|;Frnv7)-pb$=OHP~&i{WAFTuC*+m;kg zs)y?i2W0xI`Lt0mQ#jy)sK?tw73|0(vWSlm7ZFDhi-_M4PY_G1!uGO%2rUDx>`OW| M@ZQ=Dgi+WekV3~k80fOe?%G>+U3**Zz05ku zKpnco7@Wrk6E}x0OeJv+8ZqHPU(6nSGrsy_G%hAaGxfNO! zch2wo?z=b1_t!~b-k-aya#i5D)xuv$mDyx6<*{Fo{gep?s>$>MG0mDxv&8gf+Gh5V zYV=X_(LsnsRSPpNyvWOwN*%LI8Yum6caVbz)<#&)vlDxIJ@4myqA&W>e-$1i!~+dh zj<_LcoyojPKd>GlY@yk^qZ`eD9)EKZfBJ9RvYE8OQb{YU`agjZ zS3yxyPDBT!h>(JJ>{AvGZf}R;-M3i$&vyGedvT%EAR=B8C=yYN7$kX7Rt7~yr5(70 z>(Vf;QLQQt9xn}(2AC~a6)>Qjj8a6gOLp^dUG<(dc-7$AR3dI7`~KU^0Rh zp}>fsB~=i1j`DfsA>z=SwHBVxi=#3SXC2|d=d7{Q?RKv__Y!lAz(Y?fJgjmPEBxEI z5Bj)aX07@|@CVlhrw%ybxa+FpB_qiQ!pY2>e|2><;~Uk+Abg&eBq640D#vS^;v3C0 zmHyN{Ow9MOf-5XH2P@ttsHolr_r0i74xXt#$tnm#QO&4**qDJUqnvonwH$ek?f=@$ z^<$chun;b9-tq)=)O*MXoUT7?myK49YL&w6`qTDT(Y#`ibU~@F*7G*}=6L=-i4k&1AAdAq__D@cG7oHljvd8bb$4K_- znh*5MWwT+FNkI)IL`9%}T)u8Fbn6bh66aM}OlgVf`v^mNsiGqB68%u`H+#_j2c#%n z)O}?Bq7YLb!$|BxO~?@Fv6IViqG#_M^3g7<7~V|Ri~+xaa0_8hKesY3MG|o>%(Ns% z6LMU;$>>dlC4>(UqIxO(IYrwS7a}4n5wAtM2caG3(5%f1e(DKWmeITozFxoO2AUtk znO>f(!B@RYWF5{PZSdaFV~UX$dKZ1tdR3wn>6uQ^6}WSBI;ZtB#|8-3go(_CFq*a& zK}-5b-?Ifns3NsEGmbGKMtNyc$T<;n##zqlP@{iXR|LfZGc&A&AA?@Y%V@p=w!vCQ zR+9?|uOYk+{eywJ5q(IKCV@-(JRdIW=YJL*xoiLc delta 2373 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 v3dpJDNn8>-(t%47clhuFEz delta 5687 zc$}SBdrVvB758VrI6R%=q{hL4KzV~rAZZApEtsN^gpzQL)sP3~#=d@lU$Ji+$kI?k zNwTU@*PKY{L!Gj&+N5c!)>&IMElav+YyPM-bXmTczxt@A`h` zf-iQ9#PRjL_dAc@`JMBf&wu$V`RpDs7JOM=^6|g^dH7vpy?zVP>2!MOe@OaIHc3L% z>1K%Tj83-%Bl^i|d@dH^Lm}*Mkv?@)B*)-;*4k2!a3bdAqe39T!{DwCFcp-Na;Pcz zgsgr3g|Q_yRCtAulGLAyYKX=g{l%q(Y=#lzge2cIHkuk0lNxqYUl{F#*rBe(T~b$4 zm;Qs}RW)$AO4!~q(nG}P#+V>0OVYp&?Lj%)O8>a~&Y4zhPRUeVmzE?Gx zRx3l}Ft@H&AB6YKXZ9m1oB`v)xT7ONC=e8rTsz*Tz&wnB7BXOVqIgt!niGcZ)bBPe z=?$oav%}Mt9@8Er7ik;tx@D`uf|m}sVL6{YT6n4Y!~IkVUG6~PRAo#=z6ZOwVdW*U z6yp(2NfB{;G$5?&Dw=rET%7ucb(6lAhF#7)EJkH$CxL1>3u8+$17))uNxyAK!~NT~ z3$1nqX>JRy*0a@Hasi3yzOnT_v2Is_r~V{^d|Z$ec zbA8+K-U@sb`OUSVXr}o=(TAcN#eNh|q2N%sP@I7A`l>8yrBuU@>;I!}JR8-G=R(K^ z%Pw=))g3VW$me7y>}cGbVRC%38qPNUW+Q%47yMAuh}0ZjY7$8Ukmf}ahNb34(`-IC zK4?BhhzE|fj=L3gOm_&~9}7K@{Z#{)U1Xd-$y^=8rv;3A z)YEVtz=5mdH5VG-W>~OuOf_oY=267d?SghpEEN9PfKTeV`Pn+(`J<_9w)`lf%vP8g zEK(c9E3_ttA_8|h?-2iJ|FYN5EJjc~hvHi(0t%un1~qzTP@KNp)uGX-#jXTdph>~a zM?~yHQBhv&W?`_ZJ}o3-NlG5MjUjm6SR@{n_Mb5&gPaw`CMAA~Q%ec+%b+Mj0Fn{{ z{n91g4Ea0}$+&XK&vBi)^e8a%Omvn@;Oeva)X`_%wPZnL4$w~dZ4?$3((?==>Sz^9 zXf=wEI&aiv6tk!JL?9_=ZM7$oa0Fu!!676<-dP9y#A;fz<5a*ec67$PxZJ1M;a+4+ zjkDC+8KVM>Rzc$%YK|JSljkwF!@hHZFOuUPAE#%=Oiic6g)jxJIxd4DNYv*95DQ zS5dsIQ(7eLKvxyUh5UYTW#xjSzg1()y4F8u$~kY~i?PQ(IY6rfSiBo(0VNVbm>1KC zyslf*q`2>(=*)-ucOFj?;(&>PiB=jFRhcpRHnUK?BDUWTnA)jE>Zs==Zl6zn0iV*(>+1~H1|RQ#2<{j(hL5tl($XaIL8mW==>vz` z97?8WH}-@>vjVqImmVsUBA*aFA$lTM)+kTRmvi)O|DrBE>e0Pf9w>~g6lhhsSvJsu zJmB6`+QI6r6yuEK-p%A%yzOqJf3PY>wkxOvNFrg{3v41h|J6NICXvetsI={ z(jI2ZHW#emlg;IoTC6rrK6M4{)a6y9)2~pl<5te@aASgR&8R6*t2vmDhHL$WDRAE` zX!@ZPIU6buC1Uc-o0hHc;e$ov0Cy%O+o30~bX0X3~Bs6YU zSTD~h&q(tP-4w#1q{wA>mN|!FgQa_yFeeI8A4ktZ78YR$7LPV=LJGa~pZf4I>_hZ;BTtDRF>eP@oKw{% z&4>_*i}Nz_iihh4y*vdqF#HCX zTiapYXCrR7>TA$guNV6D_6%?Aj69hGnwjBGWB)bJn}COd4ln`aJMN_B1O5dI3MwR4gU8=hu7KH2c?dZ#PmshIQ4n7QSYRq zDaGZR0tW7r4X!*0qlS*Vqf4LVB>eEl$9&PNN{oCR^gc+`NTcc9#9`^&(VyI|vE}?M G>G(gfa?0KS diff --git a/schainpy/model/serializer/__init__.pyc b/schainpy/model/serializer/__init__.pyc index 1a09293b789093da8f5b95f7183dae113d1fbb44..43bd5d1823a987d28bca2518539b98ef7854df56 100644 GIT binary patch delta 24 gc${0pIFpfs`7Dd8!_5zvOb767Z-?l3jb0BJ@L#kN2~KO;XkRX?>TGdWwoJijQrxF9h(RlhhnBQY~?vM!@F E0EfvL>i_@% delta 173 zc%0kI^n%HS`7H;@P@P0GnE&TvUAN%YfTnK;+fAqXU=!GJ;(djJXj ujQreG{nVn&?|#LT?-)TI36#Jtq>qQuEejMe~*?j~IT diff --git a/schainpy/model/utils/jroutils_ftp.pyc b/schainpy/model/utils/jroutils_ftp.pyc index 61c0ca95787d73bed8bdffe17e13ef412a2be7d9..68f115418955f1af04f5b28febf6c1ac5d8e218f 100644 GIT binary patch delta 1805 zc$}S7ZA?>V6u#${0$z%3t@weI7OJITj16?B|w1|DadpbDTTHx&<__9m+0cQ zh|!T9r*kt|HscmD6LmN9BXM)THD;OFvi-o#?87Z2#vdk%n_us})N)E-KX#M*=AQR` z&Uw#y&U5aKUts!2$W+|R7G5yabf3$d;=zP}@<;FuMY&cmvd0q{ip6|kW8aufz^e*} zn431qgB|UD1AgCb#^o9BC#`k(FykpXYg}@USZDjwuvIuq(5+e5h!s%XBG!l5c2MC| zwhu>|^_Zn?!--e&@z&BYf|*oLLIB+wOk(!-8t`qc280CKh`(unA|6Y0pAzd|-JLm0 ztjM{>lSB8a+jGf_X#3F-0xqGwV-aLM;7LLLttTNT%Xm2TIRj64AJ#MKmVCLHW1bcJs@B9ph zZ8iz$V0Ty(KqX!_-zSMGEK?+Jv=+z7;r-(Ew5YL?8Q^aNK51HqACy)vR@Dkw7t-VM z#p02$&A5Abs9$(qs90}RC`i=f8`Lnb%E#rW;3S^hSjLji!$&nTjD|eYyF>;=EWeQaMU8E3Z15%1s&?s$*p5kLrnhp5r(Ldz;uBHM1qgaRK1= zaNHi?4&l37I*by;wNg4tXG`#PZ^R$9urE$tqI2;aHEPgcSIsnxV4eMIh#=JFXkEk4 zp{aOjK9u6V+HZjYYhV6|NcF|~9grirx%MvXYsR}@D82)n43TDpHGl*hO00g4cN8WKSqDL#xtozOV8!Pc#lZH%rP>(+I!iF8}PR=bYg^<(Iw zNlhdYzewOUl4$(c4}%yn+phe;p!`9D{+K8c#SAbp`U8!SFn^#%JhyCJzh2OUc#?Z^ z?|JU~yzhD5_q^xYH{|OpL@K^1mtFpSVPHl&FCtsvC($ceEFCZ@t|=8>WWv-R@t&6L!lZkVT9!yzqk>wMW$n^J+_rgSgvt~) zuwc;#c}ckpE2chn0YP3~zn^>#&(*fZB6ig2;SZY(qH0N^`)2r59YqMvZ;`;EimRd` z0^EkyWh+Nrd-9fy`U+5K`wXx}bX6wjs@m&(dTlDM1NKCU;1=t>Qs^23#%vM(|W=RRRt5t~^`V1+2U9J7z z>1~9TEoL;mqX-h+`o?`oIv6wtsHhJjnp~Yjfcw!!!RQHw9+SBL8l1A zj1uN)hItm$#y*(IEkvxpHx>{%{9?RDIJnsKadD6u_sRtZDV@ecT!eFRV-PhKXV#p* z{m5BDf^fF^b>xS4TK1Bn34!(*I_a3DDV#Z=J=K#+57$H;XU-{D=llC(0` z!Ua4r{duv;BqA4S_51(7%BL+#2|st3lI=Hjwk9u(cQ%wJE+qSZzw->u%Gl0h1;Kxz z9PjN?VAXTRGE7bb+uaa9QBQO$lUwd|w~ac>>QN&U{vIc}33ELIaf(y6GO$}ql6Q26 ziiH_#6{Y*piqUoS{z;6m!?ru|ZY+n7Z0cmbdE2(-Kf3bEkJu$Jte1hg?=wGB8um3OCb3B?`1252M4m|2d4tC8Rv53q<-CpNCx`)KR z=`P))#cob5C^ek0Pf_2iv0piOgO4vbF-bsIl5 z!k{Id9*jjNG@4!x9$K$Lw10lsiy*a*!(BS7@4xL=wL?Ge`!E|mB;_D@+EIUiE6v3O$gUF5Hcg-PX5_NYI5{555{fOz< l$Zu5b$Gi_9_&M))6rXy0BNE?gUuI?veBe8UaGn@7{sTUHQ0M>v diff --git a/schainpy/model/utils/jroutils_publish.pyc b/schainpy/model/utils/jroutils_publish.pyc index 0adaa0ab2d490d01c606e82552ed0bd30ffab0aa..3da4deb6b108bea62476cebb53223b2209b1fc41 100644 GIT binary patch literal 16997 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 literal 4379 zc$~dgOLODK5$*wBB1KBnb1ivYVeFD4XRD}94x3bJ|D>ST9uOc%g8r5jLM7%zle3>nji|zGLK#)+L-CHQRJG%L81BtE3a{*Ne)M1j79db ztmLU&&*JA0x=SSPm=SFs?_>5TEpxlq{rTBG7R?O6RH{e$6q@t}HwS}gtPgY&c;^S- zM#*^^yPiHsy@4Bqjy{b%H`M*a&1d52!8r2u=wM=kQF<^;BI!8snf?X^**gozs7l!UwJC13{fY+OhcxaajyYARR8}4WomQ~flq2S?iW!g-n&sEK&E#)Zhdx#USFZ{KCYBQf@91G6LO zL8o#XMmU{KH^CZ&f#G0<-=DdoRLgXb9!B9=(3g8Tib8Ghnl}n`Xk;DRdJBQP!HfO~ zt7CJrT2@_or96-pr+qBf+mXkMC@W&eazak+<1Tg#_;=eDh z{yMvAi>4n5RarC?*v%wI!a+Q20$Yr#YbvXkVVjgve8bs$p`w#n1*sHptb@QHs8T-3 zX>+-ltYKMnmasB9bx6@^WRAyajs!h}h@%>vI7*D9$#bn^cNARe;4z>Et}sn*PJ_^Q zT;ET0ni@fh=}zTdgA=}<{pEsI#uvtj@}XcgyUiM~n>p3qEQqA9 zjorb8zmEo)-o9VRJVtr7K>00M0ShEJ8N_ay^6mSw<@vX6(ogRiCpbPw=_G!D&ZgjF zRh867{Ir;)wp5)zVja-yq_OA0GaET}1UHtIB{c5tNk_>=mg%oI^g$GgJ8;#K4d)eL zfrp$2x8_x#%ShohtAchm=QSDEF!lv-*GkQoZs{#$dUcxBz<4{uCCPpbnlFnA3mRfh zgSM`vl)E=?781eNaQQ~kqCSZ^O?vuGljbW}^UoGt{DbDJKP3AX&D(T!x{$qujLn&? z(2g&xF>BIyLY?Th(C1{lGi*tStwQnftbSWxbP9#GC|p$3%OLaB3Ml=NS;f1syqXQ# zGN{p`TXwc-zJ}{)DOa%F#CUL%)D3*KV(ynb@!S0HqJPF_bN%z~ zBE{g%JgkL>~u9^#zbd|4wmU<(+@m z+=rc$N%%`_@KBhquG*?;ty(R$!OXW|ZIpJ^u61ACx7zBV+T(eAeyrM+HMMv1Qvi=t z5ARVygvn0c$&#rmN{Fm#vKIFS4BjN^w^j_vU3sG@)u=i1x}dI(B=y-C+R(6(Qte-( z0Z1fRIetyxF^UF}Z|_31U4)ta63r`mOTWz4c~KZ3m37sss;X75tyb1s%?H9of+ffC zBaeSCK7(mb(fk6Uw!mx<`?C3H-d0jRG-_EIba;u($Jwvpj{)SgEly}EeAcaYX}esne-AZwu+0Df diff --git a/schainpy/scripts/bltr_reader.xml b/schainpy/scripts/bltr_reader.xml index b7226fb..b5c33b5 100644 --- a/schainpy/scripts/bltr_reader.xml +++ b/schainpy/scripts/bltr_reader.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/schainpy/scripts/hf_write_pdata.py b/schainpy/scripts/hf_write_pdata.py index ea7631b..eebf9b1 100644 --- a/schainpy/scripts/hf_write_pdata.py +++ b/schainpy/scripts/hf_write_pdata.py @@ -83,7 +83,7 @@ opObj11.addParameter(name='n', value='6', format='float') opObj11 = procUnitConfObj1.addOperation(name='SpectraWriter', optype='other') opObj11.addParameter(name='path', value='/home/alex/Downloads/pdata_hf') -opObj11.addParameter(name='blocksPerFile', value='1', format='int') +opObj11.addParameter(name='blocksPerFile', value='1000', format='int') # # # # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='other') diff --git a/schainpy/scripts/param004/param_20160117_000039.png b/schainpy/scripts/param004/param_20160117_000039.png index 11570b8d784802cee2eb3ace0ef1519eb984b500..797af4aa1798f469e2f5c5b632ca511a7884936a 100644 GIT binary patch literal 56080 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%0ANcv#)*)L_!y1fyc}H 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