[ncl-talk] NetCDF output file from NCL not opening in GrADS
S Br
sbr.climate at gmail.com
Fri Jul 7 10:32:30 MDT 2017
Hi Adams,
Many thanks. Finally, the script worked well and now I could open the
output file in GrADS.
My final script is given below.
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,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_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->tasmask = xBPF ; write ud to a file
end
Regards
SB
On Fri, Jul 7, 2017 at 4:41 PM, Adam Phillips <asphilli at ucar.edu> wrote:
> That line should be:
> fo->lat = in->lat(0:0)
> (Note that the error message said that fn is not a valid file, alerting
> you to the fact that fn is not a reference to a file.)
>
> Again, you shouldn't need to add that line. I just put that in there to
> show you that you can easily write a variable from one file to the next.
>
> On Fri, Jul 7, 2017 at 8:59 AM, S Br <sbr.climate at gmail.com> wrote:
>
>> 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>
>>>
>>
>>
>
>
> --
> 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/461a223c/attachment.html
More information about the ncl-talk
mailing list