def test_indice_percentile():
    # TX90p expects tasmax
    resources = [local_path(TESTDATA['cordex_tasmax_2006_nc'])]
    output = indices.calc_indice_percentile(
        resources, variable='tasmax',
        indices=['TX'], percentile=90, groupings='year',
        dir_output=tempfile.mkdtemp())

    assert os.path.basename(output[0]) == 'TX_EUR-44_MPI-M-MPI-ESM-LR_rcp45_r1i1p1_MPI-CSC-REMO2009_v1_mon_20060215-20061216.nc'

    ds = Dataset(output[0])
    # SU variable must be in result
    assert 'TX' in ds.variables
    # 1 year
    assert len(ds.variables['time']) == 1
def test_indice_percentile():
    # TX90p expects tasmax
    resources = [local_path(TESTDATA['cordex_tasmax_2006_nc'])]
    output = indices.calc_indice_percentile(
        resources, variable='tasmax',
        indices=['TX'], percentile=90, groupings='year',
        dir_output=tempfile.mkdtemp())

    assert os.path.basename(output[0]) == 'TX_EUR-44_MPI-M-MPI-ESM-LR_rcp45_r1i1p1_MPI-CSC-REMO2009_v1_mon_200602-200612.nc'  # noqa

    ds = Dataset(output[0])
    # SU variable must be in result
    assert 'TX' in ds.variables
    # 1 year
    assert len(ds.variables['time']) == 1
Exemple #3
0
    def execute(self):

        init_process_logger('log.txt')
        self.output_log.setValue('log.txt')

        ncs = self.getInputValues(identifier='resource')
        indices = self.indices.getValue()
        polygons = self.polygons.getValue()
        percentile = int(self.percentile.getValue())
        groupings = self.groupings.getValue()
        mosaic = self.mosaic.getValue()
        refperiod = self.refperiod.getValue()

        self.status.set(
            'starting: indices=%s, refperiod=%s, groupings=%s, num_files=%s' %
            (indices, refperiod, groupings, len(ncs)), 0)
        from flyingpigeon.indices import calc_indice_percentile
        results = calc_indice_percentile(
            resources=ncs,
            indices=indices,
            percentile=percentile,
            mosaic=mosaic,
            polygons=polygons,
            refperiod=refperiod,
            groupings=groupings,
            dir_output=path.curdir,
        )

        if not results:
            raise Exception("failed to produce results")
        self.status.set('num results %s' % len(results), 90)
        try:
            (fp_tarf, tarf) = mkstemp(dir=".", suffix='.tar')
            tar = tarfile.open(tarf, "w")
            for result in results:
                tar.add(result, arcname=os.path.basename(result))
            tar.close()
            logging.info('Tar file prepared')
        except Exception as e:
            msg = "Tar file preparation failed."
            logging.exception(msg)
            raise Exception(msg)

        self.output.setValue(tarf)
        self.status.set('done: indice=%s, num_files=%s' % (indices, len(ncs)),
                        100)
    def execute(self):
        ncs        = self.getInputValues(identifier='resource')
        indices    = self.indices.getValue()
        polygons   = self.polygons.getValue()
        percentile = int(self.percentile.getValue())
        groupings  = self.groupings.getValue()
        mosaik = self.mosaik.getValue()
        refperiod = self.refperiod.getValue()
       
        self.status.set('starting: indices=%s, refperiod=%s, groupings=%s, num_files=%s' % (indices, refperiod, groupings, len(ncs)), 0)
        from flyingpigeon.indices import calc_indice_percentile   
        results = calc_indice_percentile(
            resources = ncs,
            indices = indices,
            percentile = percentile,
            mosaik = mosaik,
            polygons = polygons,
            refperiod = refperiod,
            groupings = groupings,
            dir_output = path.curdir,
            )

        if not results:
            raise Exception("failed to produce results")
        
        self.status.set('num results %s' % len(results), 90)
        try: 
            (fp_tarf, tarf) = mkstemp(dir=".", suffix='.tar')
            tar = tarfile.open(tarf, "w")

            for result in results:
                tar.add( result , arcname=os.path.basename(result))
            tar.close()

            logging.info('Tar file prepared')
        except Exception as e:
            msg = "Tar file preparation failed."
            logging.exception(msg)
            raise Exception(msg)

        self.output.setValue( tarf )
        self.status.set('done: indice=%s, num_files=%s' % (indices, len(ncs)), 100)