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())
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'),
def test_parameterize(self): expected = { 'tool': 'regrid2', 'method': 'linear', 'grid': 'T85' } gridder = cwt.Gridder() self.assertDictContainsSubset(expected, gridder.parameterize())
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))