Esempio n. 1
0
 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])
Esempio n. 2
0
 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))
Esempio n. 3
0
 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')))
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
 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'))
Esempio n. 7
0
 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'))
Esempio n. 8
0
 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])
Esempio n. 9
0
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)
Esempio n. 10
0
 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'))
Esempio n. 11
0
 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'))
Esempio n. 12
0
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)
Esempio n. 13
0
 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])
Esempio n. 14
0
 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')))
Esempio n. 15
0
 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))