Are you sure this works, if i understand correctly, here you are assigning
a 2d array to a 3d var, it should have complained.... Or it is writing all
the time to the first time slice of the hi variable... check the output
with ncview for other time steps...
for i in range(0, Clime_hi.shape[0]):
>>>>> f_out.variables['hi'].assign_value(Clime_hi[i,:,:])
>>>>>
>>>> If it is OK, then I am very surprised))
Cheers
-- Oleksandr (Sasha) 2013/11/18 Gregory Deemer <gjdeemer@alaska.edu> > 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 > > > -- Sasha
_______________________________________________
pyngl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/pyngl-talk
Received on Mon Nov 18 15:53:18 2013
This archive was generated by hypermail 2.1.8 : Fri Nov 22 2013 - 09:37:03 MST