Ejemplo n.º 1
0
    def test_update_single_file(self):
        # Testing the update of single files

        outputs = [
            tempfile.NamedTemporaryFile(
                prefix=
                'eustace.outputformats.test.FIELD_SURFACE_eustace_PRODUCTIONUMBER_LABEL_XXXX',
                suffix='.nc',
                delete=False) for index in range(2)
        ]
        dataset = [Dataset(output.name, 'w', 'NETCDF4') for output in outputs]

        for files in dataset:
            files.comment = ''
            files.close()
        v = OutputVariable.from_template(t,
                                         'bob',
                                         'Bob\'s House',
                                         ancillary_variables='Bob\'s Shed')
        merger = FilesMerger(['a', 'b', 'c'], ['d', 'e', 'f'],
                             numpy.array([1, 2]), [v], [v], [v], [[1.]])
        merger.update_single_file([outputs[0].name], [outputs[1].name])

        new_outputs = [output.name.replace('_LABEL', '') for output in outputs]
        dataset = [Dataset(name, 'r', 'NETCDF4') for name in new_outputs]

        for files in dataset:
            self.assertEqual(files.ncattrs(), ['comment'])
            self.assertEqual(
                files.getncattr(files.ncattrs()[0]),
                u'input data preprocessed from LABEL retrievals.')
            files.close()

        for name in new_outputs:
            os.remove(name)
Ejemplo n.º 2
0
    def test_init(self):
        #Test the correcteness of the init procedure

        v = OutputVariable.from_template(t,
                                         'bob',
                                         'Bob\'s House',
                                         ancillary_variables='Bob\'s Shed')

        self.assertRaises(ValueError, FilesMerger, 1, ['a'], numpy.array([1]),
                          [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a'], 1, numpy.array([1]),
                          [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a'], ['a'], [1], [v], [v],
                          [v], [v])
        self.assertRaises(ValueError, FilesMerger, [1], ['a'],
                          numpy.array([1]), [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a'], [1],
                          numpy.array([1]), [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a'], ['a'], ['a'], [v],
                          [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a'], ['a'], ['a'], [v],
                          [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a'], ['a', 'b'],
                          numpy.array([1]), [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a'], ['a', 'b'],
                          numpy.array([1]), [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a', 'b'], ['a', 'b'],
                          numpy.array([1]), [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a'], ['a', 'b'],
                          numpy.array([1]), [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a', 'b'], ['a', 'b'],
                          numpy.array([1]), [v], [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a', 'b'], ['a', 'b'],
                          numpy.array([2]), 1, [v], [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a', 'b'], ['a', 'b'],
                          numpy.array([2]), [v], 1, [v], [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a', 'b'], ['a', 'b'],
                          numpy.array([2]), [v], [v], 1, [[1.]])
        self.assertRaises(ValueError, FilesMerger, ['a', 'b'], ['a', 'b'],
                          numpy.array([2]), [v], [v], [v], 1.)
        self.assertRaises(ValueError, FilesMerger, ['a', 'b'], ['a', 'b'],
                          numpy.array([2]), [v], [v], [v], [[True]])

        merger = FilesMerger(['a', 'b', 'c'], ['d', 'e', 'f'],
                             numpy.array([1, 2]), [v], [v], [v], [[1.]])
        self.assertEqual(merger.outputs_primary, ['a', 'b', 'c'])
        self.assertEqual(merger.outputs_ancillary, ['d', 'e', 'f'])
        self.assertEqual(merger.list_of_daily_sources[0], 1)
        self.assertEqual(merger.list_of_daily_sources[1], 2)
        self.assertEqual(merger.primary_fields, [v])
        self.assertEqual(merger.primary_uncertainties, [v])
        self.assertEqual(merger.ancillary_fields, [v])
        self.assertEqual(merger.list_of_correlation_indexes, [[1.]])
        self.assertEqual(merger.list_of_merged_main_outputs, [])
        self.assertEqual(merger.list_of_merged_ancillary_outputs, [])
Ejemplo n.º 3
0
from eustace.outputformats.definitions import SURFACEAIRMODEL_ANCILLARY_OCEAN_TAS_UNCERTAINTY_LOCALLYCORRELATED2
from eustace.outputformats.definitions import SURFACEAIRMODEL_ANCILLARY_OCEAN_TAS_UNCERTAINTY_SYSTEMATIC2
from eustace.outputformats.definitions import SURFACEAIRMODEL_ANCILLARY_OCEAN_TAS_UNCERTAINTY_PARAMETER0
from eustace.outputformats.definitions import SURFACEAIRMODEL_ANCILLARY_OCEAN_TAS_UNCERTAINTY_PARAMETER1
from eustace.outputformats.definitions import SURFACEAIRMODEL_ANCILLARY_OCEAN_TAS_UNCERTAINTY_PARAMETER2
from eustace.outputformats.definitions import SURFACEAIRMODEL_ANCILLARY_OCEAN_TAS_UNCERTAINTY_PARAMETER3
from eustace.outputformats.definitions import SURFACEAIRMODEL_ANCILLARY_OCEAN_TAS_UNCERTAINTY_PARAMETER4
from netCDF4 import Dataset
from shutil import copyfile

# Output variable template
t = OutputVariableTemplate(numpy.float32, -3200, units='mm')

# Output variable objects created fro testing purposes
f1 = OutputVariable.from_template(t,
                                  'field_1',
                                  'first field',
                                  ancillary_variables='Bob\'s Shed')
f2 = OutputVariable.from_template(t,
                                  'field_2',
                                  'second field',
                                  ancillary_variables='Bob\'s Shed')
u1 = OutputVariable.from_template(t, 'total_uncertainty_field_1',
                                  'first total uncertainty field')
u2 = OutputVariable.from_template(t, 'total_uncertainty_field_2',
                                  'second total uncertainty field')
a11 = OutputVariable.from_template(t, 'ancillary_1_for_field_1',
                                   'first ancillary variable for first field')
a12 = OutputVariable.from_template(
    t, 'ancillary_1_for_field_2', 'second ancillary variable for first field')
a21 = OutputVariable.from_template(
    t, 'ancillary_2_for_field_1', 'first ancillary variable for second field')