Re: PyNIO: Assigning data to 3-d NetCDF variable [RESOLVED]

From: Gregory Deemer <gjdeemer_at_nyahnyahspammersnyahnyah>
Date: Mon Nov 18 2013 - 15:42:35 MST

Hi Oleksandr,

Thank you for your help today, I think we have reached a solution. Declaring the variable as double, and reassigning my _FillValue from np.float32 to np.double to match this new type was the trick. It is a bit puzzling though, as I know the data that was ingested came from a single-precision floating point flat binary file.

The logic in my value assignment statement:
> for i in range(0, Clime_hi.shape[0]):
> f_out.variables['hi'].assign_value(Clime_hi[i,:,:])

Was of the correct form and is now functioning.

Once again, thank you!
Greg

O
 n Nov 18, 2013, at 1:03 PM, Oleksandr Huziy wrote:
> The ESG site is not letting me in yet))
> See here: http://www.pyngl.ucar.edu/FAQ/#ReadNetCDF
> item 23.
>
> Cheers
>
>
> 2013/11/18 Gregory Deemer <gjdeemer@alaska.edu>
> Hi Oleksandr,
>
> The double data type did not work out.
>
> fatal:NetCDF: Not a valid data type or _FillValue type mismatch: error attempting to write variable (hi) to file
>
> Perhaps my _FillValue being -9999.0 is causing the type error mismatch? I have written data to a NetCDF using similar methods, but my _FillValue was a positive int in those cases.
>
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> Gregory J. Deemer
> Graduate Research Assistant
> Department of Atmospheric Sciences
> University of Alaska Fairbanks
> IARC 338K
> Office: (907) 474-5430
> Cell: (907) 750-1063
>
>
>
> On Mon, Nov 18, 2013 at 12:39 PM, Oleksandr Huziy <guziy.sasha@gmail.com> wrote:
> Gregory:
>
> I am trying to install nio now. Try to create the variable as double:
>
> # ICE THICKNESS
> f_out.create_variable('hi', 'd', ('time', 'y', 'x'))
>
>
> 2013/11/18 Gregory Deemer <gjdeemer@alaska.edu>
> Oleksandr,
>
> Thank you for the quick reply. I attempted the code examples that you suggested and PyNIO came back with errors.
>
> f_out.variables['hi'][i,:,:] = Clime_hi[i,:,:]
> self._obj[xsel] = value
> NIOError: type or dimensional mismatch writing to variable (hi)
>
>
> f_out.variables['hi'][:] = Clime_hi
> self._obj[xsel] = value
> NIOError: type or dimensional mismatch writing to variable (hi)
>
> I will try a few other permutations of your suggestion by replacing '=' with .assign_value()
>
> Thanks again,
> Greg
>
>
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> Gregory J. Deemer
> Graduate Research Assistant
> Department of Atmospheric Sciences
> University of Alaska Fairbanks
> IARC 338K
> Office: (907) 474-5430
> Cell: (907) 750-1063
>
>
>
> On Mon, Nov 18, 2013 at 12:14 PM, Oleksandr Huziy <guziy.sasha@gmail.com> wrote:
> Hi Gregory:
>
> Does it work like this?
>
> # Write values to file
> for i in range(0, Clime_hi.shape[0]):
> f_out.variables['hi'][i,:,:] = Clime_hi[i,:,:]
>
>
> or
>
> f_out.variables['hi'][:] = Clime_hi
>
>
>
>
> 2013/11/18 Gregory Deemer <gjdeemer@alaska.edu>
> Hello,
>
> I'm wanting to assign values to a 3-D variable consisting of time, y, x. The time dimension is unlimited but is assigned 366 values. I have seen some examples of how to approach this problem with other scripting languages where a loop is applied to write the 2-D slice per timestep, and that is the approach I have taken here, but I am receiving the error message:
>
> NIOError: type or dimensional mismatch writing to variable (hi)
>
> For reference, the shapes of pertinent variables in the code snippet to follow are:
>
> Clime_hi.shape = (366, 120, 360)
> time_dat.shape = (366,) # values spanning 0 - 365
> lat_datR.shape = (120, 360)
> lon_datR.shape = (120, 360)
>
>
>
> # Create new variable dimensions
> f_out.create_dimension('time', None)
> f_out.create_dimension('y', 120)
> f_out.create_dimension('x', 360)
>
> # TIME
> f_out.create_variable('time', 'd', ('time',))
> # Attributes of time
> setattr(f_out.variables['time'], 'standard_name', 'Valid Time')
> setattr(f_out.variables['time'], 'units', 'hours since 2001-01-01 00:00:00')
> setattr(f_out.variables['time'], 'time_origin', '2001-01-01 00:00:00')
> setattr(f_out.variables['time'], 'calendar', 'gregorian')
> setattr(f_out.variables['time'], 'axis', 'T')
> # Write values to file
> f_out.variables['time'].assign_value(time_dat)
>
> # LATITUDE
> f_out.create_variable('lat', 'd', ('y','x'))
> # Attributes of latitude
> setattr(f_out.variables['lat'], 'standard_name', 'latitude')
> setattr(f_out.variables['lat'], 'units', 'degrees_north')
> setattr(f_out.variables['lat'], 'axis', 'Y')
> # Write values to file
> f_out.variables['lat'].assign_value(lat_datR)
>
> # LONGITUDE
> f_out.create_variable('lon', 'd', ('y', 'x'))
> # Attributes of longitude
> setattr(f_out.variables['lon'], 'standard_name', 'longitude')
> setattr(f_out.variables['lon'], 'units', 'degrees_east')
> setattr(f_out.variables['lon'], 'axis', 'X')
> # Write values to file
> f_out.variables['lon'].assign_value(lon_datR)
>
> # ICE THICKNESS
> f_out.create_variable('hi', 'f', ('time', 'y', 'x'))
> # Create variable attributes
> setattr(f_out.variables['hi'], 'standard_name', 'sea_ice_thickness')
> setattr(f_out.variables['hi'], 'units', 'm')
> setattr(f_out.variables['hi'], '_FillValue', _FillandMiss)
> setattr(f_out.variables['hi'], 'missing_value', _FillandMiss)
> # Write values to file
> for i in range(0, Clime_hi.shape[0]):
> f_out.variables['hi'].assign_value(Clime_hi[i,:,:])
>
> Again, the error message that I am given once the loop as finished its iteration is this:
>
> for i in range(0, Clime_hi.shape[0]):
> NIOError: type or dimensional mismatch writing to variable (hi)
>
> Please let me know if more information is needed to solve this error.
>
> Thank you,
> Greg
>
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> Gregory J. Deemer
> Graduate Research Assistant
> Department of Atmospheric Sciences
> University of Alaska Fairbanks
> IARC 338K
> Office: (907) 474-5430
> Cell: (907) 750-1063
>
>
> _______________________________________________
> pyngl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/pyngl-talk
>
>
>
>
> --
> Sasha
>
>
>
>
> --
> Sasha
>
>
>
>
> --
> Sasha

_______________________________________________
pyngl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/pyngl-talk
Received on Mon Nov 18 15:42:48 2013

This archive was generated by hypermail 2.1.8 : Fri Nov 22 2013 - 09:37:03 MST