def test_GIVEN_gridded_and_ungridded_datagroups_WHEN_read_datagroups_THEN_raises_TypeError(self): datagroup_1 = {'variables': ['var1'], 'filenames': ['filename1.nc'], 'product': None} datagroup_2 = {'variables': ['var3'], 'filenames': ['filename2.nc'], 'product': 'cis'} var1 = make_from_cube(make_square_5x3_2d_cube()) var2 = make_regular_2d_ungridded_data() get_data_func = MagicMock(side_effect=[var1, var2]) get_var_func = MagicMock(side_effect=lambda f: {'filename1.nc': ['var1'], 'filename2.nc': ['var3']}[f]) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) with self.assertRaises(TypeError): reader.read_datagroups([datagroup_1, datagroup_2])
def test_GIVEN_gridded_datagroups_WHEN_read_datagroups_THEN_data_returned_in_list( self): datagroup_1 = { 'variables': ['var1', 'var2'], 'filenames': ['filename1.nc'], 'product': None } datagroup_2 = { 'variables': ['var3'], 'filenames': ['filename2.nc'], 'product': 'cis' } var1 = make_from_cube(make_square_5x3_2d_cube()) var2 = make_from_cube(make_square_5x3_2d_cube()) var3 = make_from_cube(make_square_5x3_2d_cube()) get_data_func = MagicMock(side_effect=[var1, var2, var3]) get_var_func = MagicMock(side_effect=lambda f: { 'filename1.nc': ['var1', 'var2'], 'filename2.nc': ['var3'] }[f]) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) data = reader.read_datagroups([datagroup_1, datagroup_2]) assert_that(len(data), is_(3)) assert_that(data[0], is_(var1)) assert_that(data[1], is_(var2)) assert_that(data[2], is_(var3))
def test_GIVEN_multiple_datagroups_WHEN_read_datagroups_THEN_get_data_called_correctly( self): datagroup_1 = { 'variables': ['var1', 'var2'], 'filenames': ['filename1.nc'], 'product': None } datagroup_2 = { 'variables': ['var3', 'var4'], 'filenames': ['filename2.nc'], 'product': 'cis' } get_data_func = MagicMock( return_value=make_regular_2d_ungridded_data()) get_var_func = MagicMock(side_effect=lambda f: { 'filename1.nc': ['var1', 'var2'], 'filename2.nc': ['var3', 'var4'] }[f]) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) data = reader.read_datagroups([datagroup_1, datagroup_2]) assert_that(get_data_func.call_count, is_(4)) assert_that(get_data_func.call_args_list[0][0], is_((['filename1.nc'], 'var1', None))) assert_that(get_data_func.call_args_list[1][0], is_((['filename1.nc'], 'var2', None))) assert_that(get_data_func.call_args_list[2][0], is_((['filename2.nc'], 'var3', 'cis'))) assert_that(get_data_func.call_args_list[3][0], is_((['filename2.nc'], 'var4', 'cis')))
def stats_cmd(main_arguments): """ Main routine for handling calls to the statistics command. :param main_arguments: The command line arguments (minus the stats command) """ from cis.stats import StatsAnalyzer from cis.data_io.gridded_data import GriddedDataList data_reader = DataReader() data_list = data_reader.read_datagroups(main_arguments.datagroups) analyzer = StatsAnalyzer(*data_list) results = analyzer.analyze() header = "RESULTS OF STATISTICAL COMPARISON:" note = "Compared all points which have non-missing values in both variables" header_length = max(len(header), len(note)) print(header_length * '=') print(header) print(header_length * '-') print(note) print(header_length * '=') for result in results: print(result.pprint()) if main_arguments.output: cubes = GriddedDataList([result.as_cube() for result in results]) variables = [] filenames = [] for datagroup in main_arguments.datagroups: variables.extend(datagroup['variables']) filenames.extend(datagroup['filenames']) history = "Statistical comparison performed using CIS version " + __version__ + \ "\n variables: " + str(variables) + \ "\n from files: " + str(set(filenames)) cubes.add_history(history) cubes.save_data(main_arguments.output)
def stats_cmd(main_arguments): """ Main routine for handling calls to the statistics command. :param main_arguments: The command line arguments (minus the stats command) """ from cis.stats import StatsAnalyzer from cis.data_io.gridded_data import GriddedDataList data_reader = DataReader() data_list = data_reader.read_datagroups(main_arguments.datagroups) analyzer = StatsAnalyzer(*data_list) results = analyzer.analyze() header = "RESULTS OF STATISTICAL COMPARISON:" note = "Compared all points which have non-missing values in both variables" header_length = max(len(header), len(note)) print(header_length * '=') print(header) print(header_length * '-') print(note) print(header_length * '=') for result in results: print(result.pprint()) if main_arguments.output: cubes = GriddedDataList([result.as_cube() for result in results]) variables = [] filenames = [] for datagroup in main_arguments.datagroups: variables.extend(datagroup['variables']) filenames.extend(datagroup['filenames']) history = "Statistical comparison performed using CIS version " + __version__ + \ "\n variables: " + str(variables) + \ "\n from files: " + str(set(filenames)) cubes.add_history(history) cubes.save_data(main_arguments.output)
def test_GIVEN_aliases_WHEN_read_datagroups_THEN_output_data_has_aliases(self): datagroup = {'variables': ['var1'], 'filenames': ['filename1.nc'], 'product': None, 'aliases': ['alias1']} get_data_func = MagicMock(return_value=make_from_cube(make_square_5x3_2d_cube())) get_var_func = MagicMock(return_value=['var1']) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) data = reader.read_datagroups([datagroup]) assert_that(data[0].alias, is_('alias1'))
def test_GIVEN_aliases_missing_WHEN_read_datagroups_THEN_read_OK_aliases_default_to_var_names(self): datagroup = {'variables': ['var1'], 'filenames': ['filename1.nc'], 'product': None} var1 = make_from_cube(make_square_5x3_2d_cube()) get_data_func = MagicMock(side_effect=[var1]) get_var_func = MagicMock(side_effect=['var1']) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) data = reader.read_datagroups([datagroup]) assert_that(data[0].var_name, is_('dummy'))
def test_GIVEN_not_enough_aliases_WHEN_read_datagroups_THEN_raises_ValueError(self): datagroup = {'variables': ['var1', 'var2'], 'filenames': ['filename1.nc'], 'product': None, 'aliases': ['alias1']} var1 = make_from_cube(make_square_5x3_2d_cube()) var2 = make_from_cube(make_square_5x3_2d_cube()) get_data_func = MagicMock(side_effect=[var1, var2]) get_var_func = MagicMock(side_effect=['var1', 'var2']) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) with self.assertRaises(ValueError): data = reader.read_datagroups([datagroup])
def evaluate_cmd(main_arguments): """ Main routine for handling calls to the evaluation command :param main_arguments: The command line arguments (minus the eval command) """ from cis.evaluate import Calculator data_reader = DataReader() data_list = data_reader.read_datagroups(main_arguments.datagroups) calculator = Calculator() result = calculator.evaluate(data_list, main_arguments.expr, main_arguments.output_var, main_arguments.units, main_arguments.attributes) result.save_data(main_arguments.output)
def test_GIVEN_aliases_missing_WHEN_read_datagroups_THEN_read_OK_aliases_default_to_var_names( self): datagroup = { 'variables': ['var1'], 'filenames': ['filename1.nc'], 'product': None } var1 = make_from_cube(make_square_5x3_2d_cube()) get_data_func = MagicMock(side_effect=[var1]) get_var_func = MagicMock(side_effect=['var1']) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) data = reader.read_datagroups([datagroup]) assert_that(data[0].var_name, is_('dummy'))
def test_GIVEN_aliases_WHEN_read_datagroups_THEN_output_data_has_aliases( self): datagroup = { 'variables': ['var1'], 'filenames': ['filename1.nc'], 'product': None, 'aliases': ['alias1'] } get_data_func = MagicMock( return_value=make_from_cube(make_square_5x3_2d_cube())) get_var_func = MagicMock(return_value=['var1']) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) data = reader.read_datagroups([datagroup]) assert_that(data[0].alias, is_('alias1'))
def evaluate_cmd(main_arguments): """ Main routine for handling calls to the evaluation command :param main_arguments: The command line arguments (minus the eval command) """ from cis.evaluate import Calculator data_reader = DataReader() data_list = data_reader.read_datagroups(main_arguments.datagroups) calculator = Calculator() result = calculator.evaluate(data_list, main_arguments.expr, main_arguments.output_var, main_arguments.units, main_arguments.attributes) result.save_data(main_arguments.output)
def test_GIVEN_not_enough_aliases_WHEN_read_datagroups_THEN_raises_ValueError( self): datagroup = { 'variables': ['var1', 'var2'], 'filenames': ['filename1.nc'], 'product': None, 'aliases': ['alias1'] } var1 = make_from_cube(make_square_5x3_2d_cube()) var2 = make_from_cube(make_square_5x3_2d_cube()) get_data_func = MagicMock(side_effect=[var1, var2]) get_var_func = MagicMock(side_effect=['var1', 'var2']) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) with self.assertRaises(ValueError): data = reader.read_datagroups([datagroup])
def test_GIVEN_multiple_datagroups_WHEN_read_datagroups_THEN_get_data_called_correctly(self): datagroup_1 = {'variables': ['var1', 'var2'], 'filenames': ['filename1.nc'], 'product': None} datagroup_2 = {'variables': ['var3', 'var4'], 'filenames': ['filename2.nc'], 'product': 'cis'} get_data_func = MagicMock(return_value=make_regular_2d_ungridded_data()) get_var_func = MagicMock(side_effect=lambda f: {'filename1.nc': ['var1', 'var2'], 'filename2.nc': ['var3', 'var4']}[f]) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) data = reader.read_datagroups([datagroup_1, datagroup_2]) assert_that(get_data_func.call_count, is_(4)) assert_that(get_data_func.call_args_list[0][0], is_((['filename1.nc'], 'var1', None))) assert_that(get_data_func.call_args_list[1][0], is_((['filename1.nc'], 'var2', None))) assert_that(get_data_func.call_args_list[2][0], is_((['filename2.nc'], 'var3', 'cis'))) assert_that(get_data_func.call_args_list[3][0], is_((['filename2.nc'], 'var4', 'cis')))
def test_GIVEN_gridded_datagroups_WHEN_read_datagroups_THEN_data_returned_in_list(self): datagroup_1 = {'variables': ['var1', 'var2'], 'filenames': ['filename1.nc'], 'product': None} datagroup_2 = {'variables': ['var3'], 'filenames': ['filename2.nc'], 'product': 'cis'} var1 = make_from_cube(make_square_5x3_2d_cube()) var2 = make_from_cube(make_square_5x3_2d_cube()) var3 = make_from_cube(make_square_5x3_2d_cube()) get_data_func = MagicMock(side_effect=[var1, var2, var3]) get_var_func = MagicMock(side_effect=lambda f: {'filename1.nc': ['var1', 'var2'], 'filename2.nc': ['var3']}[f]) reader = DataReader(get_data_func=get_data_func, get_variables_func=get_var_func) data = reader.read_datagroups([datagroup_1, datagroup_2]) assert_that(isinstance(data, GriddedDataList)) assert_that(len(data), is_(3)) assert_that(data[0], is_(var1)) assert_that(data[1], is_(var2)) assert_that(data[2], is_(var3))