In [1]:
import iris
import iris.tests.stock as stock


/data/local/sci/r28/lib/python2.7/site-packages/nose-1.1.2-py2.7.egg/nose/util.py:14: DeprecationWarning: The compiler package is deprecated and removed in Python 3.x.
  from compiler.consts import CO_GENERATOR
/data/local/sci/r28/lib/python2.7/site-packages/nose-1.1.2-py2.7.egg/nose/plugins/manager.py:405: UserWarning: Module IPython was already imported from /data/local/itpe/git/ipython/build/lib/IPython/__init__.pyc, but /net/home/h02/itpe/.local/lib/python2.7/site-packages is being added to sys.path
  import pkg_resources

In [2]:
cube = stock.realistic_4d()

In [3]:
sub_cubes = (cube[0, 0, ...], cube[1, 0, ...])

In [4]:
sub_cubes


Out[4]:
(<iris 'Cube' of air_potential_temperature / (K) (grid_latitude: 100; grid_longitude: 100)>,
 <iris 'Cube' of air_potential_temperature / (K) (grid_latitude: 100; grid_longitude: 100)>)

In [5]:
potential = iris.cube.CubeList(sub_cubes)
print potential.merge()


0: air_potential_temperature / (K)     (time: 2; grid_latitude: 100; grid_longitude: 100)

In [6]:
!rm merge_exercise.*.nc


rm: cannot remove `merge_exercise.*.nc': No such file or directory

In [7]:
potential[0].attributes['History'] = 'unknown'
iris.save(potential[0], 'merge_exercise.1.f1.nc')
iris.save(potential[1], 'merge_exercise.1.f2.nc')
potential[0].attributes.pop('History')


Out[7]:
'unknown'

In [9]:
cubes = iris.load('merge_exercise.1.*.nc')
print len(cubes)
#print cubes.describe_merge()
cubes[0].attributes.pop('History')
print cubes.merge()


2
0: air_potential_temperature / (K)     (time: 2; grid_latitude: 100; grid_longitude: 100)

In [10]:
task = 6
potential[1].coord('grid_latitude').bounds = None
potential[1].coord('grid_longitude').bounds = None
iris.save(potential[0], 'merge_exercise.6.f1.nc')
iris.save(potential[1], 'merge_exercise.6.f2.nc')
potential[1].coord('grid_latitude').bounds = potential[0].coord('grid_latitude').bounds
potential[1].coord('grid_longitude').bounds = potential[0].coord('grid_longitude').bounds

In [11]:
cubes = iris.load('merge_exercise.6.*.nc')
cubes[1].coord('grid_latitude').bounds = cubes[0].coord('grid_latitude').bounds
cubes[1].coord('grid_longitude').bounds = cubes[0].coord('grid_longitude').bounds
print len(cubes)
print cubes.merge()


2
0: air_potential_temperature / (K)     (time: 2; grid_latitude: 100; grid_longitude: 100)

In [12]:
c = potential[1].coord('time')
print c.units
c.convert_units('days since 1970-01-01 00:00:00')
iris.save(potential[0], 'merge_exercise.3.f1.nc')
iris.save(potential[1], 'merge_exercise.3.f2.nc')
c.convert_units('hours since 1970-01-01 00:00:00')


hours since 1970-01-01 00:00:00

In [13]:
import iris
reload(iris)


Out[13]:
<module 'iris' from '/data/local/itpe/git/iris/lib/iris/__init__.py'>

In [14]:
cubes = iris.load('merge_exercise.3.*.nc')
cubes[1].coord('time').convert_units(cubes[0].coord('time').units)
print len(cubes)
print cubes.merge()


2
0: air_potential_temperature / (K)     (time: 2; grid_latitude: 100; grid_longitude: 100)

In [15]:
potential[1].data = potential[1].data.astype('float64')
iris.save(potential[0], 'merge_exercise.4.f1.nc')
iris.save(potential[1], 'merge_exercise.4.f2.nc')
potential[1].data = potential[1].data.astype('float32')

In [16]:
cubes = iris.load('merge_exercise.4.*.nc')
for cube in cubes:
    cube.data = cube.data.astype('float64')
print len(cubes)
print cubes.merge()


2
0: air_potential_temperature / (K)     (time: 2; grid_latitude: 100; grid_longitude: 100)

In [17]:
!rm -rf merge_exercise.5.??.nc
potential[0].long_name = 'The first timestep'
potential[1].long_name = 'The second timestep'
iris.save(potential[0], 'merge_exercise.2.f1.nc')
iris.save(potential[1], 'merge_exercise.2.f2.nc')
potential[0].long_name = potential[1].long_name = None

In [18]:
cubes = iris.load('merge_exercise.2.*.nc')
for cube in cubes:
    cube.long_name = None
print len(cubes)
print cubes.merge()


2
0: air_potential_temperature / (K)     (time: 2; grid_latitude: 100; grid_longitude: 100)

In [19]:
iris.save(potential[0], 'merge_exercise.5.f1.nc')
iris.save(stock.realistic_4d()[1:2, 0, ...], 'merge_exercise.5.f2.nc')

In [21]:
cubes = iris.load('merge_exercise.5.??.nc')
print len(cubes)
cubes[1] = cubes[1][0, ...]
for cube in cubes:
    print cube.coord('time')
    cube.data
for coord1, coord2 in zip(cubes[0].coords(), cubes[1].coords()):
    print coord1 == coord2, coord1.name()
    if not coord1 == coord2:
        print `coord1`
        print `coord2`
        print '---'
#cubes.describe_merge()
print cubes.merge()


2
DimCoord([2009-09-09 17:10:00], standard_name=u'time', calendar=u'gregorian', var_name='time')
DimCoord([2009-09-09 17:20:00], standard_name=u'time', calendar=u'gregorian', var_name='time')
True grid_latitude
True grid_longitude
True atmosphere_hybrid_height_coordinate
True forecast_period
True model_level_number
True sigma
False time
DimCoord(array([ 347921.16666667]), standard_name=u'time', units=Unit('hours since 1970-01-01 00:00:00', calendar='gregorian'), var_name='time')
DimCoord(array([ 347921.33333333]), standard_name=u'time', units=Unit('hours since 1970-01-01 00:00:00', calendar='gregorian'), var_name='time')
---
True surface_altitude
True altitude
0: air_potential_temperature / (K)     (time: 2; grid_latitude: 100; grid_longitude: 100)

In [ ]: