# HG changeset patch # User climate # Date 1623142684 0 # Node ID ee42b7a33dc7245f1531067102b6cb220784e619 # Parent 9ee8db6ffba318e405fcf24a63b9b6a9661647ce "planemo upload for repository https://github.com/NordicESMhub/galaxy-tools/tree/master/tools/essential_climate_variables commit 9a008dba390aef21d4ab61240641bf455f5bb036" diff -r 9ee8db6ffba3 -r ee42b7a33dc7 ecv_retrieve.py --- a/ecv_retrieve.py Sun Jul 07 10:06:53 2019 -0400 +++ b/ecv_retrieve.py Tue Jun 08 08:58:04 2021 +0000 @@ -14,27 +14,28 @@ class ECV (): def __init__(self, archive, variable, product_type, year, month, time_aggregation, area, format, output, - verbose=False + climate_reference_period=None, verbose=False ): self.archive = archive self.variable = variable.split(',') + self.climate_reference_period = climate_reference_period if product_type == '': self.product_type = 'climatology' else: self.product_type = product_type - if year == '': - self.year = '2019' + if year != '' and year is not None: + self.year = year.split(',') else: - self.year = year.split(',') - if month == '': + self.year = None + if month == '' or month is None: self.month = '01' else: self.month = month.split(',') if time_aggregation == '': - self.time_aggregation = '1_month' + self.time_aggregation = '1_month_mean' else: self.time_aggregation = time_aggregation - if area == '': + if area == '' or area is None: self.area = 'global' else: self.area = area @@ -47,6 +48,7 @@ self.outputfile = "donwload." + self.format else: self.outputfile = output + self.verbose = verbose if verbose: print("archive: ", self.archive) print("variable: ", self.variable) @@ -56,17 +58,58 @@ def retrieve(self): - self.cdsapi.retrieve( - self.archive, { - 'variable': self.variable, - 'year': self.year, - 'month': self.month, - 'origin': 'era5', - 'area': self.area, - 'format': self.format, - 'product_type': self.product_type, - 'time_aggregation': self.time_aggregation, - }, + if self.verbose: + print(self.archive) + print('variable', self.variable) + print('year', self.year) + print('month', self.month) + print('origin', 'era5') + print('area', self.area) + print('format', self.format) + print('product_type', self.product_type) + print('time_aggregation', self.time_aggregation) + print('climate_reference_period', + self.climate_reference_period) + print(self.outputfile) + if self.climate_reference_period is None: + self.cdsapi.retrieve( + self.archive, { + 'variable': self.variable, + 'year': self.year, + 'month': self.month, + 'origin': 'era5', + 'area': self.area, + 'format': self.format, + 'product_type': self.product_type, + 'time_aggregation': self.time_aggregation, + }, + self.outputfile) + elif self.year is None: + self.cdsapi.retrieve( + self.archive, { + 'variable': self.variable, + 'climate_reference_period': + self.climate_reference_period, + 'month': self.month, + 'origin': 'era5', + 'format': self.format, + 'product_type': self.product_type, + 'time_aggregation': self.time_aggregation, + }, + self.outputfile) + else: + self.cdsapi.retrieve( + self.archive, { + 'variable': self.variable, + 'climate_reference_period': + self.climate_reference_period, + 'year': self.year, + 'month': self.month, + 'origin': 'era5', + 'format': self.format, + 'product_type': self.product_type, + 'time_aggregation': self.time_aggregation, + }, self.outputfile) def checktar(self): @@ -92,10 +135,10 @@ current_pwd = os.environ['HOME'] if 'GALAXY_COPERNICUS_CDSAPIRC_KEY' in os.environ and \ not os.path.isfile('.cdsapirc'): + print('GALAXY_COPERNICUS_CDSAPIRC_KEY ') with open(".cdsapirc", "w+") as apikey: apikey.write("url: https://cds.climate.copernicus.eu/api/v2\n") - apikey.write( - "key: " + os.environ['GALAXY_COPERNICUS_CDSAPIRC_KEY']) + apikey.write("key: " + os.environ['GALAXY_COPERNICUS_CDSAPIRC_KEY']) remove_apikey = True parser.add_argument( @@ -127,6 +170,10 @@ help='Desired sub-area to extract (North/West/South/East)' ) parser.add_argument( + '--climate_reference_period', + help='Climate reference period (default is 1981-2010)' + ) + parser.add_argument( '--format', help='Output file format (GRIB or netCDF or tgz)' ) @@ -142,7 +189,7 @@ p = ECV(args.archive, args.variable, args.product_type, args.year, args.month, args.time_aggregation, args.area, - args.format, args.output, args.verbose) + args.format, args.output, args.climate_reference_period, args.verbose) p.retrieve() p.checktar() # remove api key file if it was created diff -r 9ee8db6ffba3 -r ee42b7a33dc7 essential_climate_variables.xml --- a/essential_climate_variables.xml Sun Jul 07 10:06:53 2019 -0400 +++ b/essential_climate_variables.xml Tue Jun 08 08:58:04 2021 +0000 @@ -1,25 +1,33 @@ - + for assessing climate variability python - cdsapi - cdo + cdsapi + cdo Climatology + + + + + + @@ -85,10 +99,15 @@ - + + + + + + @@ -129,11 +148,13 @@ - + + + - - + + @@ -205,7 +226,7 @@ the corresponding anomalies. -- ECV Factsheets: https://gcos.wmo.int/en/essential-climate-variables/ecv-factsheets +- ECV: https://gcos.wmo.int/en/essential-climate-variables - Copernicus Climate Data Store documentation on Essential Climate Variables: https://cds.climate.copernicus.eu/cdsapp#!/dataset/ecv-for-climate-change?tab=overview @@ -229,4 +250,13 @@ 10.1002/qj.828 10.1002/qj.2949 + + topic_3855 + topic_3318 + + + operation_2422 + operation_3357 + operation_0335 +