def test_iris_project_constraint(constr, negate, data, points):
    """Test iris constraint for projects."""
    input_data = [{
        'project': 'ONE',
        'dataset': 'a',
    }, {
        'project': 'TWO',
        'dataset': 'b',
    }, {
        'project': 'THREE',
        'dataset': 'c',
    }, {
        'project': 'ONE',
        'dataset': 'e',
    }]
    dataset_coord = iris.coords.AuxCoord(['a', 'b', 'c', 'd', 'e'],
                                         long_name='dataset')
    cube = iris.cube.Cube(np.arange(5.0) + 2.0,
                          aux_coords_and_dims=[(dataset_coord, 0)])
    new_cube = iris.cube.Cube(data,
                              aux_coords_and_dims=[
                                  (iris.coords.AuxCoord(points,
                                                        long_name='dataset'),
                                   0)
                              ])
    constraint = ih.iris_project_constraint(constr, input_data, negate=negate)
    assert cube.extract(constraint) == new_cube
Ejemplo n.º 2
0
def get_external_cubes(cfg):
    """Get external cubes for psi, ECS and lambda."""
    cubes = iris.cube.CubeList()
    for filename in ('psi.nc', 'ecs.nc', 'lambda.nc'):
        filepath = io.get_ancestor_file(cfg, filename)
        cube = iris.load_cube(filepath)
        cube = cube.extract(
            ih.iris_project_constraint(['OBS'], cfg, negate=True))
        cubes.append(cube)
    cubes = ih.intersect_dataset_coordinates(cubes)
    return (cubes[0], cubes[1], cubes[2])
Ejemplo n.º 3
0
def test_iris_project_constraint(mock_logger, constr, negate, data, points):
    """Test iris constraint for projects."""
    cfg = {
        'input_data': {
            'p1': {
                'project': 'ONE',
                'dataset': 'a',
            },
            'p2': {
                'project': 'TWO',
                'dataset': 'b',
            },
            'p3': {
                'project': 'THREE',
                'dataset': 'c',
            },
            'p4': {
                'project': 'ONE',
                'dataset': 'e',
            },
        },
        'does_not_matter': 'oh no',
    }
    dataset_coord = iris.coords.AuxCoord(['a', 'b', 'c', 'd', 'e'],
                                         long_name='dataset')
    cube = iris.cube.Cube(np.arange(5.0) + 2.0,
                          aux_coords_and_dims=[(dataset_coord, 0)])
    new_cube = iris.cube.Cube(data,
                              aux_coords_and_dims=[
                                  (iris.coords.AuxCoord(points,
                                                        long_name='dataset'),
                                   0)
                              ])
    constraint = ih.iris_project_constraint(constr, cfg, negate=negate)
    assert cube.extract(constraint) == new_cube
    mock_logger.warning.assert_not_called()
    mock_logger.reset_mock()
    cfg['input_data']['p5'] = {'project': 'ONE', 'ohhh': 1}
    constraint = ih.iris_project_constraint(constr, cfg, negate=negate)
    assert cube.extract(constraint) == new_cube
    mock_logger.warning.assert_called_once()