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
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)