Size: 215
Comment:
|
Size: 2224
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
== Read NetCDF files == Download a [[http://www.unidata.ucar.edu/software/netcdf/examples/files.html| sample file (CCM precipitation flux, air temperature, etc)]] |
|
Line 6: | Line 4: |
{{{#python | Find full PyNio documentation [[ http://www.pyngl.ucar.edu/Nio.shtml | here ]] |
Line 8: | Line 6: |
print Hello! | * Download a [[ http://www.unidata.ucar.edu/software/netcdf/examples/sresa1b_ncar_ccsm3_0_run1_200001.nc | sample file (CCM precipitation flux, air temperature, etc)]] * load python module and start ipython {{{ module load python/2.7-ve0 ipython }}} Ipython listing == Read NetCDF files == {{{#!python # load Nio module import Nio # open netcdf file f = Nio.open_file('sresa1b_ncar_ccsm3_0_run1_200001.nc', 'r') # 'r' stands for "read rights" # check contents print f # get dimensions dimNames = f.dimensions.keys() # get the size of dimension dimSize = f.dimensions['dimName'] # read single variable: pr = f.variables['pr'] print pr # read variables contents pr_data = pr[:] print pr_data # print slice of the variable data slice = pr_data[0,::-1,:] # close file f.close() }}} == Create NetCDF file == {{{#!python # create new file import Nio import numpy f = Nio.open_file('test.nc', 'w') # "w" stands for writing rights # create a dimension f.create_dimension('time',100) # create variable f.create_variable('temperature', 'i', ('time',)) # dimension 'time' must be created prior to this step # dimensions and variables can have same names f.create_variable('time', 'i', ('time',)) # Dimension types: # 'd': 64 bit float # 'f': 32 bit float # 'l': long # 'i': 32 bit integer # 'h': 16 bit integer # 'b': 8 bit integer # 'S1': character # Create an attribute f.variables['temperature'].units = "K" # Add scaling factor and an offset # when the variable will be read, it will need to be multiplied by the scale_factor first and the added to the offset value f.variables['temperature'].scale_factor = 0.1 f.variables['temperature'].add_offset = 273 # create variable contents and assign it to the NetCDF variable temp = numpy.arange(0,100,1, dtype = numpy.int32) f.variables['temperature'][:] = temp time = numpy.arange(1000,1100,1, dtype = numpy.int32) f.variables['time'][:] = time f.close() |
Line 11: | Line 95: |
Any netcdf file can be reopened later and new dimensions and variables can be added. |
PyNIO
Find full PyNio documentation here
Download a sample file (CCM precipitation flux, air temperature, etc)
- load python module and start ipython
module load python/2.7-ve0 ipython
Ipython listing
Read NetCDF files
1 # load Nio module
2 import Nio
3
4 # open netcdf file
5 f = Nio.open_file('sresa1b_ncar_ccsm3_0_run1_200001.nc', 'r') # 'r' stands for "read rights"
6
7 # check contents
8 print f
9
10 # get dimensions
11 dimNames = f.dimensions.keys()
12
13 # get the size of dimension
14 dimSize = f.dimensions['dimName']
15
16 # read single variable:
17 pr = f.variables['pr']
18 print pr
19
20 # read variables contents
21 pr_data = pr[:]
22 print pr_data
23
24 # print slice of the variable data
25 slice = pr_data[0,::-1,:]
26
27 # close file
28 f.close()
Create NetCDF file
1 # create new file
2 import Nio
3 import numpy
4
5 f = Nio.open_file('test.nc', 'w') # "w" stands for writing rights
6
7 # create a dimension
8 f.create_dimension('time',100)
9
10 # create variable
11 f.create_variable('temperature', 'i', ('time',)) # dimension 'time' must be created prior to this step
12
13 # dimensions and variables can have same names
14 f.create_variable('time', 'i', ('time',))
15
16 # Dimension types:
17 # 'd': 64 bit float
18 # 'f': 32 bit float
19 # 'l': long
20 # 'i': 32 bit integer
21 # 'h': 16 bit integer
22 # 'b': 8 bit integer
23 # 'S1': character
24
25 # Create an attribute
26 f.variables['temperature'].units = "K"
27
28 # Add scaling factor and an offset
29 # when the variable will be read, it will need to be multiplied by the scale_factor first and the added to the offset value
30 f.variables['temperature'].scale_factor = 0.1
31 f.variables['temperature'].add_offset = 273
32
33 # create variable contents and assign it to the NetCDF variable
34 temp = numpy.arange(0,100,1, dtype = numpy.int32)
35 f.variables['temperature'][:] = temp
36
37 time = numpy.arange(1000,1100,1, dtype = numpy.int32)
38 f.variables['time'][:] = time
39
40 f.close()
Any netcdf file can be reopened later and new dimensions and variables can be added.