[ncl-talk] Possible bug with SPEI function? -website typos

Alan Brammer abrammer at albany.edu
Mon Feb 22 09:43:59 MST 2016


Benita, 

I see now that basically all these points apply to whoever wrote the examples and not to you.  

All examples on that page need to be edited.  I’m guessing someone did a find/replace on an older version of this function and didn’t check thoroughly.  

Also mistake on my part mixed up the order of these.  
 spei(prc, t, lat,len(k), False, 0)



Alan. 




> On 22 Feb 2016, at 11:31, Alan Brammer <abrammer at albany.edu> wrote:
> 
> 
> Hi Benita, 
> 
> Multiple things.
>  https://www.ncl.ucar.edu/Document/Functions/Built-in/spei.shtml <https://www.ncl.ucar.edu/Document/Functions/Built-in/spei.shtml>
> At the top of the page.  " Available in version 6.3.1 <https://www.ncl.ucar.edu/prev_releases.shtml#6.3.1> and later. "
>  So you can’t use the function yet, latest released version is 6.3.0.  Which you’re using. 
> 
> 
> Secondly, 
> You can’t have variables and functions named the same thing.   When the function spei() is included, trying to define an array named spei is going to create problems.  
> 
> Line 16 won’t work in any language I know of.  Rename your variable so it doesn’t clash with the function name. 
> 
> 
> Third. 
> Again from the top link, spei() will expect 6 arguments and you only passed 4.  
> 
> Fourth.
> The specific error you’re getting is because NCL is trying to subscript the spei variable using False as you passed on line 16.  False isn’t a valid subscript. 
> 
> Fifth.
> Included edited lines below which should work once 6.3.1 is released.   Though you will need to read in some temperature data as well. Read the functions documentation. 
> 
> 
> ;;;;   Will need 6.3.1  
> 
>    f= addfile("pr_Amon_ensemble_historical_190001-200512.nc", "r")
>    prc    = f->pr                   ; pr(time,lat,lon)
>    printVarSummary(prc)
> 
>    prc_dimnames = getvardims(prc)
>  time = lat= prc&$prc_dimnames(0)$		;; get dimension coordinates without knowing dimension names
>   lat= prc&$prc_dimnames(1)$
>   lon= prc&$prc_dimnames(2)$
>  
>   dimp   = dimsizes(prc)              ; # monthly precipitation values
>    ntim   = dimp(0)
>    nlat   = dimp(1)
>    mlon   = dimp(2)
> 
> 
>    len    = (/ 6, 12, 24 /)
>    klen   =  dimsizes(len)
>    spei_data    =  new((/klen,ntim,nlat,mlon/) ,float,prc at _FillValue)
> 
> 
>   t =  ….  ; spei needs a temperature variable same size as prc
> 
>  do k=0,klen-1
>       spei_data(k,:,:,:) = spei(prc, t, len(k),lat, False, 0)
>   end do
> 
> 
> 
> Good luck, 
> Alan
> 
> 
> 
>> On 22 Feb 2016, at 11:11, Tam, Benita (EC/EC) <benita.tam at canada.ca <mailto:benita.tam at canada.ca>> wrote:
>> 
>> Hi,
>>  
>> I am trying to calculate SPEI using the SPEI function in NCL with gridded data, but when I run the script, I get an error message saying that the subscripts must be one dimensional. This is expected for data for one location, but not for gridded data. My sample script is attached (it’s basically the same as the example provided with the function).
>>  
>> NCL version: 6.3.0
>> Script (see attached)
>> Error message: fatal:Illegal subscript. Subscripts must be scalar or one dimensional vectors
>> Url for netcdf data: http://ccds-dscc.ec.gc.ca/files/cmip5/pr/pr_Amon_ensemble_historical_190001-200512.nc <http://ccds-dscc.ec.gc.ca/files/cmip5/pr/pr_Amon_ensemble_historical_190001-200512.nc>
>>  
>> Thanks,
>> Benita
>>  
>>  
>> <test_prc.ncl>_______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu <mailto:ncl-talk at ucar.edu>
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk <http://mailman.ucar.edu/mailman/listinfo/ncl-talk>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20160222/a26e2080/attachment.html 


More information about the ncl-talk mailing list