[ncl-talk] Sequences of values
Kiswendsida Hyacinthe GUIGMA
karongseba at gmail.com
Mon Mar 26 09:45:59 MDT 2018
Hi Rashed and everyone,Thank you for your suggestion.I also had the idea of using many loops. It works perfectly for no large data. But when it comes to apply it to a 3D data covering half of the Africa domain, it slows down the execution and ends up killing the process. That's why I was thinking that there exist an other way to do that using not as much iterations.
Best
-----------------------------
GUIGMA
On Saturday, 24 March 2018, 18:30:38 GMT, Rashed Mahmood <rashidcomsis at gmail.com> wrote:
Hi Guigma,
For 1 dimensional series you can use the following. however, you would need to adapt this to your 3D data sets through loops/ind function and need to do TESTING, this is a very time consuming process.
begin
; X1 = (/0,1,0,0,1,1,1,1,1,0,0,1,0,1,1,1,1,0,0,1,0/) ; orignal
X1 = (/0,1,0,0,1,1,1,1,1,0,0,1,0,1,1,1,1,0,0,1,0,1,1,0,0,1,0,1,0,1,1/) ; for testing
X2 = new(dimsizes(X1),integer)
do n=0,dimsizes(X1)-1
if(n.eq.0)
if(X1(n).eq.1.and.X1(n+1).eq.0)
X2(n) = 0
else
X2(n) = X1(n)
end if
end if
if(n.gt.0.and.n.lt.dimsizes(X1)-1)
if(X1(n).eq.1)
if(X1(n-1).eq.0.and.X1(n+1).eq.0)
X2(n) = 0
else
X2(n) = X1(n)
end if
else
X2(n) = X1(n)
end if
end if
if(n.eq.dimsizes(X1)-1)
if(X1(n).eq.1.and.X1(n-1).eq.1)
X2(n) = X1(n)
else
X2(n) = 0
end if
end if
end do
print(X1+" ... "+X2)
end
Note I have NOT tested it as much one should so I would let you to test and find out if that is what you are looking for.
Cheers,
Rashed
On Sat, Mar 24, 2018 at 6:44 AM, Kiswendsida Hyacinthe GUIGMA <karongseba at gmail.com> wrote:
Thank you for your reply and for your help. Actually, before to post my question, I tried to make a use of dim_numrun_n but it didn't solve my problem.
You misunderstood a bit my [1]. I said that I successfully did that... So it is OK for that.
For [2] , what the dim_numrun_n function allows is just to do a count. What me I'd rather like is to set to _FillValue (or to 0 if use of where function) all values that are not in a sequence of at least 04 days. As an example I would like to have something as follows:X1=(/0,1,0,0,1,1,1,1,1,0,0,1, 0,1,1,1,1,0,0,1,0,/) ==========> X2= (/0,0,0,0,1,1,1,1,1,0,0,0,0,1, 1,1,1,0,0,0,0,/).In other words it is to replace all "isolated" 1s by 0.
Kindest regards
-----------------------------
GUIGMA
On Friday, 23 March 2018, 22:17:11 GMT, Dennis Shea <shea at ucar.edu> wrote:
Sorry, I'm I am not looking at any code.
tcrit = 30.
f = addfile(...)
T = f->T ; (time,lat,lon)
[1] "setting values below the threshold to _FillValue" is simple.
https://www.ncl.ucar.edu/ Document/Functions/Built-in/ where.shtml
Tcrit = where(T.ge.tcrit, T, T at _FillValue)
copy_VarMeta(T, Tcrit)
===========
[2] You do not need to do [1]
Maybe you could use the following function:
=========
http://www.ncl.ucar.edu/ Document/Functions/Built-in/ dim_numrun_n.shtml
***Look at the examples***
=========
T10= where(T.ge.tcrit,1, 0)
T10 at long_name = "Exceed=1; No=0"
copy_VarCoords(T, T10)
printVarSummary(T10)
r0 = dim_numrun_n (T10, 0, 0) ; (ntim,nlat,mlon)
r1 = dim_numrun_n (T10, 1, 0)
copy_VarCoords(T, r0)
copy_VarCoords(T, r1)
;---Pick one grid point to see what is happening
LAT = ..
LON = ..
print(T(:,{LAT},{LON})+" "+Tcrit(:,{LAT},{LON})+" "+T10(:,{LAT},{LON}) \
+" "r0(:,{LAT},{LON})+" "+r1(:,{LAT},{LON})
On Fri, Mar 23, 2018 at 3:29 PM, Kiswendsida Hyacinthe GUIGMA <karongseba at gmail.com> wrote:
Dear NCL users,I have 3D (time,lat,lon) array of temperature from which I would like to keep only sequences (consecutive days) exceeding a certain threshold. This consist concretely in setting values below the threshold to _FillValue. The length of sequence is set to 4. So far, have been able to set to _FillValu only individual days that exceed the threshold. Then I would be pleased if you could provide me with a method to also set to _FillValue values that are not into sequences of at least 04 days.
Please find attached my data and my code.
Regards
-----------------------------
GUIGMA
______________________________ _________________
ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/ mailman/listinfo/ncl-talk
______________________________ _________________
ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/ mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180326/a815e12c/attachment.html>
More information about the ncl-talk
mailing list