def test_script_generator(self):
        user = models.User.objects.first()

        variables = {
            'v0': cwt.Variable('file:///test.nc', 'tas', name='v0'),
            'v1': cwt.Variable('file:///test.nc', 'tas', name='v1'),
        }

        domains = {
            'd0': cwt.Domain([cwt.Dimension('time', 0, 200)], name='d0')
        }

        gridder = cwt.Gridder(grid='gaussian~32')

        op = cwt.Process(identifier='CDAT.subset')
        op.domain = domains.values()[0]
        op.add_inputs(*variables.values())
        op.parameters['gridder'] = gridder
        op.parameters['axes'] = cwt.NamedParameter('axes', 'time')

        operations = {'subset': op}

        sg = wps_service.WPSScriptGenerator(variables, domains, operations,
                                            user)

        data = sg.generate()

        self.assertIsNotNone(data)
    def test_generate_grid_uniform(self, mock_uniform, mock_ones):
        mock_ones.return_value = mock.MagicMock()

        chunk = mock.MagicMock()

        chunk.getLatitude.return_value.id = 'lat'

        chunk.getLongitude.return_value.id = 'lon'

        grid = self.proc.generate_grid(cwt.Gridder(grid='uniform~4x5'), {
            'lat': (-45, 45),
            'lon': (0, 100)
        }, chunk)

        mock_uniform.assert_called_with(-88.0, 45, 4.0, 2.5, 72, 5.0)
    def test_generate_grid_uniform_error_parsing(self, mock_uniform,
                                                 mock_ones):
        mock_ones.return_value = mock.MagicMock()

        chunk = mock.MagicMock()

        chunk.getLatitude.return_value.id = 'lat'

        chunk.getLongitude.return_value.id = 'lon'

        with self.assertRaises(WPSError):
            grid = self.proc.generate_grid(cwt.Gridder(grid='uniform~abdx5'), {
                'lat': (-45, 45),
                'lon': (0, 100)
            }, chunk)
    def test_generate_grid(self, mock_gaussian, mock_ones):
        mock_ones.return_value = mock.MagicMock()

        chunk = mock.MagicMock()

        chunk.getLatitude.return_value.id = 'lat'

        chunk.getLongitude.return_value.id = 'lon'

        grid = self.proc.generate_grid(cwt.Gridder(grid='gaussian~32'), {
            'lat': (-45, 45),
            'lon': (0, 100)
        }, chunk)

        mock_ones.return_value.setAxisList.assert_called_once()
        mock_ones.return_value.assert_called_with(latitude=(-45, 45),
                                                  longitude=(0, 100))

        mock_gaussian.assert_called_with(32)
 def test_generate_grid_uniform_value_error(self, mock_uniform):
     with self.assertRaises(WPSError):
         grid = self.proc.generate_grid(cwt.Gridder(grid='uniform~32x64.0'),
                                        {}, mock.MagicMock())
 def test_generate_grid_value_error(self, mock_gaussian):
     with self.assertRaises(WPSError):
         grid = self.proc.generate_grid(cwt.Gridder(grid='gaussian~32.0'),
                                        {}, mock.MagicMock())
 def test_generate_grid_parse_error(self, mock_gaussian):
     with self.assertRaises(WPSError):
         grid = self.proc.generate_grid(
             cwt.Gridder(grid='something invalid'), {}, mock.MagicMock())
Ejemplo n.º 8
0
    cwt.Dimension('time', 20, 1060),
    cwt.Dimension('lat', -90, 0),
    cwt.Dimension('lon', 180, 270),
])

dataset2_domain1 = cwt.Domain([
    cwt.Dimension('time', 20, 400),
])

dataset2_domain2 = cwt.Domain([
    cwt.Dimension('time', 20, 400),
    cwt.Dimension('lat', -90, 0),
    cwt.Dimension('lon', 180, 270),
])

GAUSS_32 = cwt.Gridder(grid='gaussian~32')
GAUSS_16 = cwt.Gridder(grid='gaussian~16')

benchmark_retrieval = [
    ('CDAT.subset', dataset2, None, None, None, (484, 45, 72), 'subset'),
    ('CDAT.subset', dataset2, dataset2_domain1, None, None, (141, 45, 72), 'subset_domain1'),
    ('CDAT.subset', dataset2, dataset2_domain2, None, None, (141, 23, 19), 'subset_domain2'),
    ('CDAT.subset', dataset2, None, None, GAUSS_32, (484, 32, 64), 'subset_regrid'),
    ('CDAT.subset', dataset2, dataset2_domain1, None, GAUSS_32, (141, 32, 64), 'subset_domain1_regrid'),
    ('CDAT.subset', dataset2, dataset2_domain2, None, GAUSS_32, (141, 16, 17), 'subset_domain2_regrid'),
    ('CDAT.aggregate', dataset1, None, None, None, (72, 1, 32, 64), 'aggregate'),
    ('CDAT.aggregate', dataset1, dataset1_domain1, None, None, (34, 1, 32, 64), 'aggregate_domain1'),
    ('CDAT.aggregate', dataset1, dataset1_domain2, None, None, (34, 1, 16, 17), 'aggregate_domain2'),
    ('CDAT.aggregate', dataset1, None, None, GAUSS_16, (72, 1, 16, 32), 'aggregate_regrid'),
    ('CDAT.aggregate', dataset1, dataset1_domain1, None, GAUSS_16, (34, 1, 16, 32), 'aggregate_domain1_regrid'),
    ('CDAT.aggregate', dataset1, dataset1_domain2, None, GAUSS_16, (34, 1, 8, 9), 'aggregate_domain2_regrid'),
Ejemplo n.º 9
0
    def test_parameterize(self):
        expected = { 'tool': 'regrid2', 'method': 'linear', 'grid': 'T85' }

        gridder = cwt.Gridder()

        self.assertDictContainsSubset(expected, gridder.parameterize())
Ejemplo n.º 10
0
        v = infile[variable.var_name]

        if v.shape == shape:
            print 'VERIFIED {!r} matches {!r}'.format(v.shape, shape)
        else:
            print 'FAILED {!r} does not match {!r}'.format(v.shape, shape)


client = cwt.WPSClient(args.url, api_key=args.api_key, verify=False)

for x in client.processes():
    print x.identifier

domain = cwt.Domain(time=(50, 150), lat=(0, 90))

gridder = cwt.Gridder(grid='gaussian~32')

validate_output(test_operation(client, 'CDAT.aggregate', variables, domain),
                (801, 95, 384))

validate_output(test_operation(client, 'CDAT.subset', variables[:1], domain),
                (89, 95, 384))

domain2 = cwt.Domain(time=(45, 50))

validate_output(
    test_operation(client,
                   'CDAT.regrid',
                   variables[:1],
                   domain2,
                   gridder=gridder), (41, 32, 64))