Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions docs/iris/example_code/Oceanography/load_nemo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
"""
Load a time series of data from the NEMO model
==============================================

This example demonstrates how to load multiple files containing data output by
the NEMO model and combine them into a time series in a single cube. The
different time dimensions in these files can prevent Iris from concatenating
them without the intervention shown here.
"""
from __future__ import unicode_literals

import iris

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I003 isort expected 1 blank line in imports, found 0

import iris.plot as iplt
import iris.quickplot as qplt
import matplotlib.pyplot as plt
from iris.util import promote_aux_coord_to_dim_coord


def main():
# Load the three files of sample NEMO data.
fname = iris.sample_data_path('NEMO/nemo_1m_*.nc')
cubes = iris.load(fname)

# Some attributes are unique to each file and must be blanked
# to allow concatenation.
differing_attrs = ['file_name', 'name', 'timeStamp', 'TimeStamp']
for cube in cubes:
for attribute in differing_attrs:
cube.attributes[attribute] = ''

# The cubes still cannot be concatenated because their time dimension is
# time_counter rather than time. time needs to be promoted to allow
# concatenation.
for cube in cubes:
promote_aux_coord_to_dim_coord(cube, 'time')

# The cubes can now be concatenated into a single time series.
cube = cubes.concatenate_cube()

# Generate a time series plot of a single point
plt.figure()
y_point_index = 100
x_point_index = 100
qplt.plot(cube[:, y_point_index, x_point_index], 'o-')

# Include the point's position in the plot's title
lat_point = cube.coord('latitude').points[y_point_index, x_point_index]
lat_string = '{:.3f}\u00B0 {}'.format(abs(lat_point),
'N' if lat_point > 0. else 'S')
lon_point = cube.coord('longitude').points[y_point_index, x_point_index]
lon_string = '{:.3f}\u00B0 {}'.format(abs(lon_point),
'E' if lon_point > 0. else 'W')
plt.title('{} at {} {}'.format(cube.long_name.capitalize(),
lat_string, lon_string))
iplt.show()


if __name__ == '__main__':
main()
41 changes: 41 additions & 0 deletions docs/iris/example_tests/test_load_nemo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# (C) British Crown Copyright 2019, Met Office
#
# This file is part of Iris.
#
# Iris is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Iris is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Iris. If not, see <http://www.gnu.org/licenses/>.

from __future__ import (absolute_import, division, print_function)
from six.moves import (filter, input, map, range, zip) # noqa

# Import Iris tests first so that some things can be initialised before
# importing anything else.
import iris.tests as tests

from .extest_util import (add_examples_to_path,
show_replaced_by_check_graphic,
fail_any_deprecation_warnings)


class TestLoadNemo(tests.GraphicsTest):
"""Test the load_nemo example code."""
def test_load_nemo(self):
with fail_any_deprecation_warnings():
with add_examples_to_path():
import load_nemo
with show_replaced_by_check_graphic(self):
load_nemo.main()


if __name__ == '__main__':
tests.main()
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added a gallery example showing how to concatenate NEMO ocean model data.
3 changes: 3 additions & 0 deletions lib/iris/tests/results/imagerepo.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@
"https://scitools.github.io/test-iris-imagehash/images/v4/eae942146540b869961f8de694589da69543cc9af1014afbc3fd596b84fe19a7.png",
"https://scitools.github.io/test-iris-imagehash/images/v4/eafd9e12a5a061e9925ec716de489e9685078ec981b229e70ddb79219cc3768d.png"
],
"example_tests.test_load_nemo.TestLoadNemo.test_load_nemo.0": [
"https://scitools.github.io/test-iris-imagehash/images/v4/a3ff34e87f0049496d17c4d9c04fc225d256971392d39f1696df0f16cec00f36.png"
],
"example_tests.test_orca_projection.TestOrcaProjection.test_orca_projection.0": [
"https://scitools.github.io/test-iris-imagehash/images/v4/fb11731a94cea4ee64b35e91d1d2304e9e5ac7397b20e1fe12852487e666ce46.png",
"https://scitools.github.io/test-iris-imagehash/images/v4/bb11721a87cce5e4cce79e81d19b3b5e1e1cd3783168e07835853485e65e2e1e.png"
Expand Down