[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