[ncl-talk] NetCDF output file from NCL not opening in GrADS

S Br sbr.climate at gmail.com
Fri Jul 7 08:59:58 MDT 2017


Hi Adam,
I tried to modify the code as below but I get some error for the line
"fo->lat = fn->lat(0:0)"

Variable: x
Type: double
Total Size: 8000 bytes
            1000 values
Number of Dimensions: 1
Dimensions and sizes: [time | 1000]
Coordinates:
            time: [   0.. 999]
Number Of Attributes: 4
  lon :   0
  lat :   0
  _FillValue : -999000000
  missing_value : -999000000

Variable: xBPF
Type: double
Total Size: 8000 bytes
            1000 values
Number of Dimensions: 1
Dimensions and sizes: [time | 1000]
Coordinates:
            time: [   0.. 999]
Number Of Attributes: 5
  _FillValue : -999000000
  lon :   0
  lat :   0
  missing_value : -999000000
  wgt_runave_op_ncl : wgt_runave_n
fatal:(fn) not reference to a valid file
fatal:["Execute.c":8575]:Execute: Error occurred at or near line 31 in file
bandpass.ncl

*The script is as below:*
begin

   fn  = "tas_aave_Asia.nc" ; define filename
   in  = addfile(fn,"r")                                 ; open netcdf file
    x  = in->tasmask(:,0,0)                          ; get data
   printVarSummary(x)                                    ; x(time,lat,lon)

; ***********************************************
; create the filter weights and apply
; ***********************************************

  ihp     = 2                             ; band pass
  sigma   = 1.0                           ; Lanczos sigma

  nWgt    = 201                           ; loose 100 each end
  fca     = 1./100.                       ; start freq
  fcb     = 1./30.                        ; last  freq
  wgt     = filwgts_lanczos (nWgt, ihp, fca, fcb, sigma )
  xBPF    = wgt_runave_n_Wrap ( x, wgt, 0, 0 )      ; 30-100 days
  printVarSummary(xBPF)

; ***********************************************
; create new date array for use on the plot
; ***********************************************
  filo = "tas_aave_Asia_bandpass30-100.nc"
  system ("/bin/rm "+filo) ; remove any pre-existing file
  fo = addfile(filo , "c") ; open output file
  fo->lat = fn->lat(0:0)
  fo->tasmask = xBPF                    ; write ud to a file
end



On Fri, Jul 7, 2017 at 3:33 PM, Adam Phillips <asphilli at ucar.edu> wrote:

> One correction to Dennis' script:
> use wgt_runave_n_Wrap instead of wgt_runave_n
>
> After applying the above, you should not need to do this, but note that
> you can exactly copy variables from one file to another like so:
> fn  = "tas_aave_Asia.nc" ; define filename
> in  = addfile(fn,"r")
> x  = in->tasmask(:,0:0,0:0)
> .........
> fo = addfile(filo , "c") ; open output file
> fo->lat = fn->lat(0:0)     ; (0:0) needed in your case as you are
> subsetting tasmask when reading it in
>
>
> On Fri, Jul 7, 2017 at 8:19 AM, S Br <sbr.climate at gmail.com> wrote:
>
>> Hi Dennis,
>> Thanks for modifying the code. Now, it easily read the time, lat and lon
>> coordinate. However, still it couldn't generate the dimension and variables
>> correctly in the output file. It would be nice, if NCL could generate the
>> the variables and dimension similar to the input file.
>>
>> *Output file:*
>>
>> ncdump -h tas_aave_Asia_bandpass30-100.nc
>> netcdf tas_aave_Asia_bandpass30-100 {
>> dimensions:
>> ncl0 = 1000 ;
>> ncl1 = 1 ;
>> ncl2 = 1 ;
>> variables:
>> double tasmask(ncl0, ncl1, ncl2) ;
>> tasmask:_FillValue = -999000000. ;
>> }
>>
>>
>> *The variables and dimension in the input file is as given below.*
>>
>> dimensions:
>> lon = 1 ;
>> lat = 1 ;
>> time = UNLIMITED ; // (1000 currently)
>> variables:
>> double lon(lon) ;
>> lon:standard_name = "longitude" ;
>> lon:long_name = "longitude" ;
>> lon:units = "degrees_east" ;
>> lon:axis = "X" ;
>> double lat(lat) ;
>> lat:standard_name = "latitude" ;
>> lat:long_name = "latitude" ;
>> lat:units = "degrees_north" ;
>> lat:axis = "Y" ;
>> double time(time) ;
>> time:standard_name = "time" ;
>> time:long_name = "Time" ;
>> time:units = "years since 850-1-1 00:00:00" ;
>> time:calendar = "standard" ;
>> time:axis = "T" ;
>> double tasmask(time, lat, lon) ;
>> tasmask:_FillValue = -999000000. ;
>> tasmask:missing_value = -999000000. ;
>>
>>
>> Thanks.
>> SB
>>
>>
>> On Fri, Jul 7, 2017 at 2:20 PM, Dennis Shea <shea at ucar.edu> wrote:
>>
>>>    fn  = "tas_aave_Asia.nc" ; define filename
>>>    in  = addfile(fn,"r")                                 ; open netcdf
>>> file
>>>     x  = in->tasmask(:,0:0,0:0)                   ; get data; avoid
>>> elimination of degenerate dimension
>>>     printVarSummary(x)                             ; x(time,lat,lon)
>>> ; ***********************************************
>>> ; create the filter weights and apply
>>> ; ***********************************************
>>>
>>>   ihp     = 2                             ; band pass
>>>   sigma   = 1.0                           ; Lanczos sigma
>>>
>>>   nWgt    = 201                           ; loose 100 each end
>>>   fca     = 1./100.                       ; start freq
>>>   fcb     = 1./30.                        ; last  freq
>>>   wgt     = filwgts_lanczos (nWgt, ihp, fca, fcb, sigma )
>>>   xBPF    = wgt_runave_n ( x, wgt, 0, 0 )      ; 30-100 days
>>>   printVarSummary(xBPF)
>>>
>>> ***********************************************
>>> ; create new date array for use on the plot
>>> ; ***********************************************
>>>   filo = "tas_aave_Asia_bandpass30-100.nc"
>>>   system ("/bin/rm "+filo) ; remove any pre-existing file
>>>   fo = addfile(filo , "c") ; open output file
>>> *;;**filedimdef*
>>> <http://www.ncl.ucar.edu/Document/Functions/Built-in/filedimdef.shtml>
>>> (fo,"time",-1,True)       ; make 'time' unlimited
>>>   fo->tasmax = xBPF                      ; write ud to a file
>>>
>>> On Fri, Jul 7, 2017 at 6:04 AM, gibies george <gibiesgeorge at gmail.com>
>>> wrote:
>>>
>>>> But where is your original coordinate?
>>>>
>>>> On Jul 7, 2017 4:01 PM, "S Br" <sbr.climate at gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>> Thanks for your reply. Now I reshaped the variable and put an
>>>>> arbitrary lat/lon value. Still, I couldn't open the file in GrADS.
>>>>>
>>>>> I have checked the output file, it correctly reading the dimension but
>>>>> may be wrong with variables.
>>>>>
>>>>> ncdump -h tas_aave_Asia_bandpass30-100.nc
>>>>> netcdf tas_aave_Asia_bandpass30-100 {
>>>>> dimensions:
>>>>> time = UNLIMITED ; // (1000 currently)
>>>>> lat = 1 ;
>>>>> lon = 1 ;
>>>>> variables:
>>>>> double tasmaskn(time, lat, lon) ;
>>>>> tasmaskn:_FillValue = -999000000. ;
>>>>> int lat(lat) ;
>>>>> int lon(lon) ;
>>>>> }
>>>>>
>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>
>>>>> ; ***********************************************
>>>>> ; create new date array for use on the plot
>>>>> ; ***********************************************
>>>>>   filo = "tas_aave_Asia_bandpass30-100.nc"
>>>>>   system ("/bin/rm "+filo) ; remove any pre-existing file
>>>>>   fo = addfile(filo , "c") ; open output file
>>>>>   filedimdef(fo,"time",-1,True)       ; make 'time' unlimited
>>>>>   tasmask=xBPF
>>>>>   ntime = 1000
>>>>>   nlat = 1
>>>>>   nlon = 1
>>>>>   tasmaskn = reshape(tasmask,(/ntime,nlat,nlon/))
>>>>>   printVarSummary(tasmaskn)
>>>>>   tasmaskn!0="time"
>>>>>   tasmaskn!1="lat"
>>>>>   tasmaskn&lat=nlat
>>>>>   tasmaskn!2="lon"
>>>>>   tasmaskn&lon=nlon
>>>>>   fo->tasmaskn = tasmaskn ; write ud to a file
>>>>> end
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Jul 7, 2017 at 8:45 AM, gibies george <gibiesgeorge at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> The first step I told is to reshape "tasmask" using reshape function.
>>>>>>
>>>>>> Secondly what I told is to put some arbitrary lat-lon coordinate
>>>>>> value.
>>>>>>
>>>>>> On 6 July 2017 at 16:29, S Br <sbr.climate at gmail.com> wrote:
>>>>>>
>>>>>>> Hi Gibies,
>>>>>>> Thanks for your reply. I have added as you suggested. I get some
>>>>>>> error in the code. Do you think, I have done correctly.
>>>>>>>
>>>>>>> ; ***********************************************
>>>>>>> ; create new date array for use on the plot
>>>>>>> ; ***********************************************
>>>>>>>   filo = "tas_aave_Asia_bandpass30-100.nc"
>>>>>>>   system ("/bin/rm "+filo) ; remove any pre-existing file
>>>>>>>   fo = addfile(filo , "c") ; open output file
>>>>>>>   filedimdef(fo,"time",-1,True)       ; make 'time' unlimited
>>>>>>>   tasmask=xBPF
>>>>>>>   tasmask!0="time"
>>>>>>>   tasmask!1="lat"
>>>>>>>   tasmask&lat=*"lat" *
>>>>>>>   tasmask!2="lon"
>>>>>>>   tasmask&lon=*"lon"*
>>>>>>>   fo->tasmask = tasmask ; write ud to a file
>>>>>>> end
>>>>>>>
>>>>>>> I get the error as,
>>>>>>>
>>>>>>> fatal:Variable (tasmask) has (1) dimensions can not write to
>>>>>>> dimension (1)
>>>>>>> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 38
>>>>>>> in file bandpass.ncl
>>>>>>>
>>>>>>> Thanks.
>>>>>>> SB
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Jul 6, 2017 at 10:13 AM, gibies george <
>>>>>>> gibiesgeorge at gmail.com> wrote:
>>>>>>>
>>>>>>>> I have seen those mails from Dr. Dennis and Dr. Adam.
>>>>>>>>
>>>>>>>> You can use reshape function to add additional coordinate to a
>>>>>>>> variable. Define some single value coordinate for latitude and longitude.
>>>>>>>>
>>>>>>>> varname!0 ="time"
>>>>>>>> varname!1 = "lat"
>>>>>>>> varname&lat = .......
>>>>>>>> varname!2 = "lon"
>>>>>>>> varname&lon = ......
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Jul 6, 2017 2:08 PM, "S Br" <sbr.climate at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hi Gibies,
>>>>>>>>> NCL also provided the same solution as you have mentioned.
>>>>>>>>> Could you please tell me how can I add single value coordinates
>>>>>>>>> (time, lat, lon) to the variable.
>>>>>>>>> Hope, you can write me the command for me.
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>> SB
>>>>>>>>>
>>>>>>>>> On Wed, Jul 5, 2017 at 5:58 PM, gibies george <
>>>>>>>>> gibiesgeorge at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Yes, you can add single value coordinates (time lat lon) to the
>>>>>>>>>> variable before saving it to nc file.
>>>>>>>>>>
>>>>>>>>>> On Jul 5, 2017 9:58 PM, "S Br" <sbr.climate at gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Is it possible to do something inside the NCL script so that it
>>>>>>>>>>> can be opened by GrADS.
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Jul 5, 2017 at 5:25 PM, gibies george <
>>>>>>>>>>> gibiesgeorge at gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> This is because grads required standard file coordinates
>>>>>>>>>>>> structure. Time lat lon etc.
>>>>>>>>>>>>
>>>>>>>>>>>> On Jul 5, 2017 9:43 PM, "S Br" <sbr.climate at gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>> I have applied bandpass filter to my one dimentional NetCDF
>>>>>>>>>>>>> file. I have written the output to a NetCDF file but this output file is
>>>>>>>>>>>>> not opening in GrADS. I get the following error.
>>>>>>>>>>>>>
>>>>>>>>>>>>> ga-> sdfopen tas_aave_Asia_bandpass30-100.nc
>>>>>>>>>>>>> Scanning self-describing file:  tas_aave_Asia_bandpass30-100.
>>>>>>>>>>>>> nc
>>>>>>>>>>>>> gadsdf: SDF file has no discernable X coordinate.
>>>>>>>>>>>>>   To open this file with GrADS, use a descriptor file with an
>>>>>>>>>>>>> XDEF entry.
>>>>>>>>>>>>>   Documentation is at http://cola.gmu.edu/grads/gado
>>>>>>>>>>>>> c/SDFdescriptorfile.html
>>>>>>>>>>>>>
>>>>>>>>>>>>> Could you please suggest if I am doing somewhere wrong in my
>>>>>>>>>>>>> NCL script . The input file is perfectly fine with GrADS.
>>>>>>>>>>>>>
>>>>>>>>>>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
>>>>>>>>>>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
>>>>>>>>>>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>>>>>>>>>>>>> begin
>>>>>>>>>>>>>
>>>>>>>>>>>>>    fn  = "tas_aave_Asia.nc" ; define filename
>>>>>>>>>>>>>    in  = addfile(fn,"r")                                 ;
>>>>>>>>>>>>> open netcdf file
>>>>>>>>>>>>>     x  = in->tasmask(:,0,0)
>>>>>>>>>>>>>     ; get data
>>>>>>>>>>>>>
>>>>>>>>>>>>> ; ***********************************************
>>>>>>>>>>>>> ; create the filter weights and apply
>>>>>>>>>>>>> ; ***********************************************
>>>>>>>>>>>>>
>>>>>>>>>>>>>   ihp     = 2                             ; band pass
>>>>>>>>>>>>>   sigma   = 1.0                           ; Lanczos sigma
>>>>>>>>>>>>>
>>>>>>>>>>>>>   nWgt    = 201                           ; loose 100 each end
>>>>>>>>>>>>>   fca     = 1./100.                       ; start freq
>>>>>>>>>>>>>   fcb     = 1./30.                        ; last  freq
>>>>>>>>>>>>>   wgt     = filwgts_lanczos (nWgt, ihp, fca, fcb, sigma )
>>>>>>>>>>>>>   xBPF    = wgt_runave ( x, wgt, 0 )      ; 30-100 days
>>>>>>>>>>>>>
>>>>>>>>>>>>>    copy_VarMeta(x,xBPF)
>>>>>>>>>>>>>    dNames= getvardims(xBPF)
>>>>>>>>>>>>>    dSIZES=dimsizes(xBPF)
>>>>>>>>>>>>>    print (dNames)
>>>>>>>>>>>>>    print (dSIZES)
>>>>>>>>>>>>>
>>>>>>>>>>>>> ; ***********************************************
>>>>>>>>>>>>> ; create new date array for use on the plot
>>>>>>>>>>>>> ; ***********************************************
>>>>>>>>>>>>>   filo = "tas_aave_Asia_bandpass30-100.nc"
>>>>>>>>>>>>>   system ("/bin/rm "+filo) ; remove any pre-existing file
>>>>>>>>>>>>>   fo = addfile(filo , "c") ; open output file
>>>>>>>>>>>>>   tasmax=xBPF(:)
>>>>>>>>>>>>>   fo->tasmax = tasmax ; write ud to a file
>>>>>>>>>>>>> end
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>> SB
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> 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
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> 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 <(303)%20497-1726>
>
> <http://www.cgd.ucar.edu/staff/asphilli>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170707/0d17b00f/attachment.html 


More information about the ncl-talk mailing list