[
https://issues.apache.org/jira/browse/CLIMATE-758?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15170665#comment-15170665
]
Michael Anderson commented on CLIMATE-758:
------------------------------------------
The last piece of the puzzle.
The values for the lons are set in the test case as: longitudes =
range(200,205) and those are the values written to the file.
However, when the Dataset object is created, it calls normalize_lat_lon_values
which says:
Ensure that lat/lon values are within [-180, 180)/[-90, 90) as well as sorted.
If the values are off the grid they are shifted into the expected range.
So the test case ends up trying to compare what was written to the file vs. the
normalized values.
file values [ 200. 201. 202. 203. 204.]
normalized values [-160. -159. -158. -157. -156.]
> Fix failing tests in test_local.py
> ----------------------------------
>
> Key: CLIMATE-758
> URL: https://issues.apache.org/jira/browse/CLIMATE-758
> Project: Apache Open Climate Workbench
> Issue Type: Sub-task
> Components: tests
> Reporter: Lewis John McGibbney
> Fix For: 1.1
>
>
> {code}
> ======================================================================
> ERROR: Test adding a custom name to a dataset
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/usr/local/climate/ocw/tests/test_local.py", line 69, in
> test_custom_dataset_name
> ds = local.load_file(self.file_path, 'value', name='foo')
> File "/usr/local/climate/ocw/data_source/local.py", line 283, in load_file
> units=variable_unit, name=name, origin=origin)
> File "/usr/local/climate/ocw/dataset.py", line 71, in __init__
> self._validate_inputs(lats, lons, times, values)
> File "/usr/local/climate/ocw/dataset.py", line 206, in _validate_inputs
> raise ValueError(err_msg)
> ValueError: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> -------------------- >> begin captured logging << --------------------
> ocw.dataset: ERROR: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> --------------------- >> end captured logging << ---------------------
> ======================================================================
> ERROR: test_dataset_origin (ocw.tests.test_local.test_load_file)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/usr/local/climate/ocw/tests/test_local.py", line 73, in
> test_dataset_origin
> ds = local.load_file(self.file_path, 'value', elevation_index=1)
> File "/usr/local/climate/ocw/data_source/local.py", line 283, in load_file
> units=variable_unit, name=name, origin=origin)
> File "/usr/local/climate/ocw/dataset.py", line 71, in __init__
> self._validate_inputs(lats, lons, times, values)
> File "/usr/local/climate/ocw/dataset.py", line 206, in _validate_inputs
> raise ValueError(err_msg)
> ValueError: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> -------------------- >> begin captured logging << --------------------
> ocw.dataset: ERROR: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> --------------------- >> end captured logging << ---------------------
> ======================================================================
> ERROR: To test load_file function for latitudes
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/usr/local/climate/ocw/tests/test_local.py", line 48, in
> test_function_load_file_lats
> self.assertItemsEqual(local.load_file(self.file_path, "value").lats,
> self.latitudes)
> File "/usr/local/climate/ocw/data_source/local.py", line 283, in load_file
> units=variable_unit, name=name, origin=origin)
> File "/usr/local/climate/ocw/dataset.py", line 71, in __init__
> self._validate_inputs(lats, lons, times, values)
> File "/usr/local/climate/ocw/dataset.py", line 206, in _validate_inputs
> raise ValueError(err_msg)
> ValueError: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> -------------------- >> begin captured logging << --------------------
> ocw.dataset: ERROR: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> --------------------- >> end captured logging << ---------------------
> ======================================================================
> ERROR: To test load_file function for longitudes
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/usr/local/climate/ocw/tests/test_local.py", line 53, in
> test_function_load_file_lons
> self.assertItemsEqual(local.load_file(self.file_path, "value").lons,
> self.longitudes)
> File "/usr/local/climate/ocw/data_source/local.py", line 283, in load_file
> units=variable_unit, name=name, origin=origin)
> File "/usr/local/climate/ocw/dataset.py", line 71, in __init__
> self._validate_inputs(lats, lons, times, values)
> File "/usr/local/climate/ocw/dataset.py", line 206, in _validate_inputs
> raise ValueError(err_msg)
> ValueError: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> -------------------- >> begin captured logging << --------------------
> ocw.dataset: ERROR: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> --------------------- >> end captured logging << ---------------------
> ======================================================================
> ERROR: To test load_file function for times
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/usr/local/climate/ocw/tests/test_local.py", line 59, in
> test_function_load_file_times
> self.assertItemsEqual(local.load_file(self.file_path, "value").times,
> newTimes)
> File "/usr/local/climate/ocw/data_source/local.py", line 283, in load_file
> units=variable_unit, name=name, origin=origin)
> File "/usr/local/climate/ocw/dataset.py", line 71, in __init__
> self._validate_inputs(lats, lons, times, values)
> File "/usr/local/climate/ocw/dataset.py", line 206, in _validate_inputs
> raise ValueError(err_msg)
> ValueError: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> -------------------- >> begin captured logging << --------------------
> ocw.dataset: ERROR: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> --------------------- >> end captured logging << ---------------------
> ======================================================================
> ERROR: To test load_file function for values
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "/usr/local/climate/ocw/tests/test_local.py", line 65, in
> test_function_load_file_values
> self.assertTrue(numpy.allclose(local.load_file(self.file_path,
> "value").values, new_values))
> File "/usr/local/climate/ocw/data_source/local.py", line 283, in load_file
> units=variable_unit, name=name, origin=origin)
> File "/usr/local/climate/ocw/dataset.py", line 71, in __init__
> self._validate_inputs(lats, lons, times, values)
> File "/usr/local/climate/ocw/dataset.py", line 206, in _validate_inputs
> raise ValueError(err_msg)
> ValueError: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> -------------------- >> begin captured logging << --------------------
> ocw.dataset: ERROR: Value Array must be of shape (times, lats, lons).
> Expected shape (3, 5, 5) but received (2, 5, 5)
> --------------------- >> end captured logging << ---------------------
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)