[ncl-talk] Time Vs Lat/Lon

Adam Phillips asphilli at ucar.edu
Thu Nov 1 16:16:22 MDT 2018


Kunal,
Again, the error message is telling you what the issue is.

Subscript out of range, error in subscript #0
at the line
time_min(gg,hh)  = (/ toint(time(arr_min(gg,hh))) /)

That is saying that you are trying to put a single value from the right
hand side of the equation into time_min(gg,hh), but that the first index of
the time_min array is smaller than the value (=gg) that you are specifying.
Add a printVarSummary(time_min) before the double do loop, and then print
out the gg value at every iteration to see what is going on. Please try to
debug your issues on your own before posting back to ncl-talk.
Adam


On Thu, Nov 1, 2018 at 3:23 PM Kunal Bali <kunal.bali9 at gmail.com> wrote:

> I am sorry for that sir. It was by mistake.
>
> Just one more question,
>
> The given file was in 0.5x0.6 resolution. I regrid the data into 0.015
> resolution. Also, I masked the data within Indian region. And then I run
> the same code for the updated file. then it starts giving error as
> Subscript out of range, error in subscript #0
> at the line
> time_min(gg,hh)  = (/ toint(time(arr_min(gg,hh))) /)
>
>
> the new regrinding str is
> #
> # gridID 1
> #
> gridtype  = lonlat
> gridsize  = 5273664
> xsize     = 2497
> ysize     = 2112
> xname     = lon
> xlongname = "longitude"
> xunits    = "degrees_east"
> yname     = lat
> ylongname = "latitude"
> yunits    = "degrees_north"
> xfirst    = 59
> xinc      = 0.015625
> yfirst    = 5.0078125
> yinc      = 0.015625
>
>
> ---
> Kunal Bali
>
>
>
>
>
>
> On Fri, Nov 2, 2018 at 2:32 AM Adam Phillips <asphilli at ucar.edu> wrote:
>
>> Kunal,
>> Please do not respond offline unless asked to do so. That way others can
>> assist.
>>
>> You stated that you got your script working but you doubt the results of
>> the plot you sent. There is no way for me to know if the plot is correct
>> either, as it is not my data. Did you check a particular grid point by eye
>> by printing out the values and seeing what time the min/max values shown in
>> the plot correspond to?  This is on  you to verify. It is also up to you
>> to check each step in your script, and that you understand what each line
>> is doing.  A simple test here run using your test data and your script
>> looks correct to my eye:
>>
>> print(arr(:,15,25)+" "+time)
>> (0) 59.5347 0
>> (1) 59.6354 1
>> (2) 59.6364 2
>> (3) 59.5533 3
>> (4) 59.3888 4
>> (5) 59.1312 5
>> (6) 60.0777 6
>> (7) 59.7301 7
>> (8) 59.4031 8
>> (9) 58.9967 9
>> (10) 58.7585 10
>> (11) 58.5871 11
>> (12) 58.4265 12
>> (13) 58.3271 13
>> (14) 58.3062 14
>> (15) 58.3219 15
>> (16) 58.3644 16
>> (17) 58.3926 17
>> (18) 58.4276 18
>> print(time_min(15,25)+"  "+time_max(15,25))
>> (0) 14  6
>>
>> Adam
>>
>> On Thu, Nov 1, 2018 at 1:30 PM Kunal Bali <kunal.bali9 at gmail.com> wrote:
>>
>>> Dear Phillips Sir,
>>> Thanks for all the suggestions.
>>> I tried your suggestion but still not sorted out.
>>> and
>>> according to the given link
>>> https://www.ncl.ucar.edu/Document/Language/error_messages.shtml#AssignMismatch
>>>
>>> it's a common error and can be remove using reassignment operator, or *delete
>>> <https://www.ncl.ucar.edu/Document/Functions/Built-in/delete.shtml> *
>>>  So, I tried this but still getting the same error.
>>>
>>> ---
>>> Kunal Bali
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Nov 2, 2018 at 12:20 AM Adam Phillips <asphilli at ucar.edu> wrote:
>>>
>>>> Hi Kunal,
>>>> The error message is telling you what the issue is.
>>>> Assignment type mismatch, right hand side can't be coerced to type of
>>>> left hand side.
>>>> Looking at the offending line: time_min(gg,hh)  = time(arr_min(gg,hh))
>>>> the error message is saying you are attempting to pass (say) a double
>>>> value from the right side into an array of type float on the left hand
>>>> side.
>>>>
>>>> To fix this sort of thing you can use the to* functions, so taking my
>>>> example above:
>>>> time_min(gg,hh)  = (/ tofloat(time(arr_min(gg,hh))) /)
>>>>
>>>> Note though that you will have to look at your own data and verify what
>>>> the situation is for each array.
>>>> Adam
>>>>
>>>> On Thu, Nov 1, 2018 at 12:06 PM Kunal Bali <kunal.bali9 at gmail.com>
>>>> wrote:
>>>>
>>>>> I tried as
>>>>>
>>>>>     arr_min = *dim_minind* ( arr(time|:, lat|:, lon|:),0 )
>>>>>     printVarSummary(arr_min)
>>>>>     printMinMax(arr_min,0)
>>>>>
>>>>>     arr_max = *dim_minind* ( arr(time|:, lat|:, lon|:),0 )
>>>>>     printVarSummary(arr_max)
>>>>>     printMinMax(arr_max,0)
>>>>>
>>>>>     time_min = arr_min    ; arr_min contains the indices that were the
>>>>> minimum at each lat/lon point
>>>>>     time_max = arr_max
>>>>>     printVarSummary(time_max)
>>>>>     do gg = 0,dimsizes(arr_min&lat)-1
>>>>>      do hh = 0,dimsizes(arr_min&lon)-1
>>>>>           time_min(gg,hh)  = time(arr_min(gg,hh))
>>>>>           time_max(gg,hh)  = time(arr_max(gg,hh))
>>>>>       end do
>>>>>     end do
>>>>>
>>>>> error comes at red line
>>>>>
>>>>> Assignment type mismatch, right hand side can't be coerced to type of
>>>>> left hand side
>>>>>
>>>>>
>>>>> ---
>>>>> Kunal Bali
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Nov 1, 2018 at 9:13 PM Adam Phillips <asphilli at ucar.edu>
>>>>> wrote:
>>>>>
>>>>>> Hi Kunal,
>>>>>> In NCL v6.5.0 you can specify -4 as the 2nd option in cd_calendar. It
>>>>>> returns results that are the same as if you specify 0, so try specifying 0.
>>>>>>
>>>>>> Again, you need to use dim_minind
>>>>>> <https://www.ncl.ucar.edu/Document/Functions/Contributed/dim_minind.shtml>
>>>>>> and dim_maxind
>>>>>> <https://www.ncl.ucar.edu/Document/Functions/Contributed/dim_maxind.shtml> to
>>>>>> return the index of the minimum (/maximum) value, and not dim_max/dim_min.
>>>>>> The latter two functions return the minimum and maximum values. You the
>>>>>> indices to plug them into your time array within the double do loop I sent
>>>>>> earlier.
>>>>>> Adam
>>>>>>
>>>>>> On Thu, Nov 1, 2018 at 12:31 AM Kunal Bali <kunal.bali9 at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I tried this but not working
>>>>>>>
>>>>>>>     arr    = a->BCSMASS
>>>>>>>     lat    = a->lat
>>>>>>>     lon    = a->lon
>>>>>>>
>>>>>>>     printVarSummary(arr)
>>>>>>>     timeT = cd_calendar(arr&time,-4)   [==> *getting a warning*:cd_calendar:
>>>>>>> Unknown option, defaulting to 0.]
>>>>>>>     time = timeT(:,3)
>>>>>>>
>>>>>>>     ;arr_min = dim_min( arr(lat|:, lon|:, time|:) )
>>>>>>>     ;printVarSummary(arr_min)
>>>>>>>     ;printMinMax(arr_min,0)
>>>>>>>
>>>>>>>     ;arr_max = dim_max( arr(lat|:, lon|:, time|:) )
>>>>>>>     ;printVarSummary(arr_max)
>>>>>>>     ;printMinMax(arr_max,0)
>>>>>>>
>>>>>>>     ;time_min = arr_min    ; arr_min contains the indices that were
>>>>>>> the minimum at each lat/lon point
>>>>>>>     ;time_max = arr_max
>>>>>>>     ;printVarSummary(time_max)
>>>>>>>     do gg = 0,dimsizes(arr_min&lat)-1
>>>>>>>      do hh = 0,dimsizes(arr_min&lon)-1
>>>>>>>           time_min(gg,hh) = time(arr_min(gg,hh))
>>>>>>>           time_max(gg,hh) = time(arr_max(gg,hh))
>>>>>>>       end do
>>>>>>>     end do
>>>>>>>
>>>>>>> ---
>>>>>>> Kunal Bali
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Nov 1, 2018 at 3:05 AM Adam Phillips <asphilli at ucar.edu>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Kunal,
>>>>>>>> Note that I recommended using dim_minind/dim_maxind, and not
>>>>>>>> minind/maxind. Looking at the file you attached, you would pass your
>>>>>>>> BCSMASS array into those two functions, and operate on the time (0)
>>>>>>>> dimension. As previously stated, that will return a 2D array dimensioned
>>>>>>>> lat x lon containing the desired indices. Then you would apply the double
>>>>>>>> do loop coding I sent to form arrays of the times themselves.  Again, the
>>>>>>>> time array in my example coding needs to be set to something that is easily
>>>>>>>> plotted, say the Hour. You can set up an hour array for your data like this:
>>>>>>>> a = addfile("hourmean.nc","r")
>>>>>>>> arr = a->BCSMASS
>>>>>>>> timeT = cd_calendar(arr&time,-4)
>>>>>>>> time = timeT(:,3)
>>>>>>>>
>>>>>>>> Adam
>>>>>>>>
>>>>>>>> On Tue, Oct 30, 2018 at 12:02 PM Kunal Bali <kunal.bali9 at gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Thanks for this informations.
>>>>>>>>>
>>>>>>>>> I tried to get min mad max by using the link which you mentioned,
>>>>>>>>> but the error comes with fatal:Argument type mismatch on argument
>>>>>>>>> (0) of (maxind) can not coerce
>>>>>>>>>
>>>>>>>>> I also tried the code given below but facing the same error here.
>>>>>>>>> (version-NCL 6.4.0)
>>>>>>>>>
>>>>>>>>> dims = *dimsizes* <https://www.ncl.ucar.edu/Document/Functions/Built-in/dimsizes.shtml>(X)
>>>>>>>>>   x1d = *ndtooned* <https://www.ncl.ucar.edu/Document/Functions/Built-in/ndtooned.shtml>(X)      ; convert 2D array to 1D for use in maxind
>>>>>>>>>   inds = *ind_resolve* <https://www.ncl.ucar.edu/Document/Functions/Built-in/ind_resolve.shtml>(*maxind* (x1d), dims)    ; convert 1D array back to 2D
>>>>>>>>>   ilat = inds(0,0)        ; select the latitude index where the X array is at its' maximum
>>>>>>>>>   ilon = inds(0,1)        ; select the longitude index where the X array is at its' maximum
>>>>>>>>>   lat_max = X&lat(ilat)   ; insert the latitude index into the lat coordinate variable
>>>>>>>>>   lon_max = X&lon(ilon)   ; insert the longitude index into the lon coordinate variable
>>>>>>>>>   *print* <https://www.ncl.ucar.edu/Document/Functions/Built-in/print.shtml>("Maximum value located at "+lat_max+", "+lon_max)
>>>>>>>>>
>>>>>>>>> I also attached one sample file, in case if you need it.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---
>>>>>>>>> Kunal Bali
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Oct 30, 2018 at 2:47 AM Adam Phillips <asphilli at ucar.edu>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Kunal,
>>>>>>>>>> If I understand correctly what you are after, you'd like to plot
>>>>>>>>>> the time (at each grid point) where the maximum (or minimum) value occurs.
>>>>>>>>>> This will likely take some trial and error on your part. Here's
>>>>>>>>>> what I think you need to do:
>>>>>>>>>> 1) Use dim_minind and dim_maxind to isolate the index where the
>>>>>>>>>> grid point value is at its min/max.
>>>>>>>>>>
>>>>>>>>>> https://www.ncl.ucar.edu/Document/Functions/Contributed/dim_maxind.shtml
>>>>>>>>>>
>>>>>>>>>> https://www.ncl.ucar.edu/Document/Functions/Contributed/dim_minind.shtml
>>>>>>>>>>
>>>>>>>>>> This will result in a 2-D array (dimensioned lat x lon)
>>>>>>>>>> containing the minimum indices, and the same type of array containing the
>>>>>>>>>> maximum indices.
>>>>>>>>>>
>>>>>>>>>> 2)  There might be a more elegant way to map the indexes onto the
>>>>>>>>>> correct times, but the following double do loop over the lat/lon dimensions
>>>>>>>>>> will work:
>>>>>>>>>>
>>>>>>>>>> ; time is an array of your times
>>>>>>>>>> time_min = arr_min    ; arr_min contains the indices that were
>>>>>>>>>> the minimum at each lat/lon point
>>>>>>>>>> time_max = arr_max
>>>>>>>>>> do gg = 0,dimsizes(arr_min&lat)-1
>>>>>>>>>>      do hh = 0,dimsizes(arr_min&lon)-1
>>>>>>>>>>           time_min(gg,hh) = time(arr_min(gg,hh))
>>>>>>>>>>           time_max(gg,hh) = time(arr_max(gg,hh))
>>>>>>>>>>      end do
>>>>>>>>>> end do
>>>>>>>>>>
>>>>>>>>>> You will want to make sure that your time array is in a format
>>>>>>>>>> that is conducive to being plotted. (18:30 doesn't work for instance, but
>>>>>>>>>> 1830 would.)
>>>>>>>>>> I think that's it. Try starting with the above suggestions and
>>>>>>>>>> see if you can get things to work. If you have further questions about this
>>>>>>>>>> subject please reply to the ncl-talk email list.
>>>>>>>>>> Adam
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Oct 29, 2018 at 6:57 AM Kunal Bali <kunal.bali9 at gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Dear NCL users,
>>>>>>>>>>>
>>>>>>>>>>> I have one file (2000-2017) with time, latitude, longitude and
>>>>>>>>>>> variable. The time is given in hours(00:30 to 18:30). I need to plot a
>>>>>>>>>>> spatial map of hours values at each grid cells, the contour map of hours
>>>>>>>>>>> values should correspond to the variable values. So that I can see which
>>>>>>>>>>> hour has high and low-value on the map. Some examples are given for time vs
>>>>>>>>>>> latitude and time vs longitude, I don't need that.  I need to plot time vs
>>>>>>>>>>> latitude longitude.
>>>>>>>>>>>
>>>>>>>>>>> I hope you got my point.
>>>>>>>>>>> Any information on that?
>>>>>>>>>>>
>>>>>>>>>>> Thank You
>>>>>>>>>>> ---
>>>>>>>>>>> Kunal Bali
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> ncl-talk mailing list
>>>>>>>>>>> ncl-talk at ucar.edu
>>>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Adam Phillips
>>>>>>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory,
>>>>>>>>>> NCAR
>>>>>>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>>>>>>>
>>>>>>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> ncl-talk mailing list
>>>>>>>>> ncl-talk at ucar.edu
>>>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Adam Phillips
>>>>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>>>>>
>>>>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> ncl-talk mailing list
>>>>>>> ncl-talk at ucar.edu
>>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Adam Phillips
>>>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>>>
>>>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>>>
>>>>> _______________________________________________
>>>>> ncl-talk mailing list
>>>>> ncl-talk at ucar.edu
>>>>> List instructions, subscriber options, unsubscribe:
>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>
>>>>
>>>>
>>>> --
>>>> Adam Phillips
>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>>
>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>
>>
>> --
>> Adam Phillips
>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>
>> <http://www.cgd.ucar.edu/staff/asphilli>
>>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>


-- 
Adam Phillips
Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
www.cgd.ucar.edu/staff/asphilli/   303-497-1726

<http://www.cgd.ucar.edu/staff/asphilli>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181101/93c836e4/attachment.html>


More information about the ncl-talk mailing list