You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@climate.apache.org by hu...@apache.org on 2016/01/21 22:52:01 UTC
[3/7] climate git commit: CLIMATE-720 - Revise file structure
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/configuration_files/NARCCAP_paper/Fig12_winter.yaml
----------------------------------------------------------------------
diff --git a/RCMES/configuration_files/NARCCAP_paper/Fig12_winter.yaml b/RCMES/configuration_files/NARCCAP_paper/Fig12_winter.yaml
new file mode 100644
index 0000000..f1f0b1e
--- /dev/null
+++ b/RCMES/configuration_files/NARCCAP_paper/Fig12_winter.yaml
@@ -0,0 +1,75 @@
+workdir: ./
+output_netcdf_filename: narccap_prec_DJF_mean_1980-2003.nc
+
+# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
+time:
+ maximum_overlap_period: False
+ start_time: 1980-01-01
+ end_time: 2003-12-31
+ temporal_resolution: monthly
+ month_start: 12
+ month_end: 2
+ average_each_year: True
+
+space:
+ min_lat: 23.75
+ max_lat: 49.75
+ min_lon: -125.75
+ max_lon: -66.75
+
+regrid:
+ regrid_on_reference: False
+ regrid_dlat: 0.50
+ regrid_dlon: 0.50
+
+datasets:
+ reference:
+ data_source: rcmed
+ data_name: CRU
+ dataset_id: 10
+ parameter_id: 37
+
+ targets:
+ data_source: local
+ path: ../data/prec*ncep.monavg.nc
+ variable: prec
+
+number_of_metrics_and_plots: 1
+
+metrics1: Portrait_diagram_subregion_interannual_variability
+
+plots1:
+ file_name: Fig12_winter
+
+use_subregions: True
+
+subregions:
+#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
+ R01:
+ [42.75, 49.75, -123.75, -120.25]
+ R02:
+ [42.75, 49.75, -119.75, -112.75]
+ R03:
+ [37.25, 42.25, -123.75, -117.75]
+ R04:
+ [32.25, 37.25, -122.75, -114.75]
+ R05:
+ [31.25, 37.25, -113.75, -108.25]
+ R06:
+ [31.25, 37.25, -108.25, -99.75]
+ R07:
+ [37.25, 43.25, -110.25, -103.75]
+ R08:
+ [45.25, 49.25, -99.75, -90.25]
+ R09:
+ [34.75, 45.25, -99.75, -90.25]
+ R10:
+ [29.75, 34.75, -95.75, -84.75]
+ R11:
+ [38.25, 44.75, -89.75, -80.25]
+ R12:
+ [38.25, 44.75, -79.75, -70.25]
+ R13:
+ [30.75, 38.25, -83.75, -75.25]
+ R14:
+ [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/configuration_files/NARCCAP_paper/Fig14_and_Fig15.yaml
----------------------------------------------------------------------
diff --git a/RCMES/configuration_files/NARCCAP_paper/Fig14_and_Fig15.yaml b/RCMES/configuration_files/NARCCAP_paper/Fig14_and_Fig15.yaml
new file mode 100644
index 0000000..5e01ce0
--- /dev/null
+++ b/RCMES/configuration_files/NARCCAP_paper/Fig14_and_Fig15.yaml
@@ -0,0 +1,82 @@
+workdir: ./
+output_netcdf_filename: narccap_rsds_monthly_1984-2003.nc
+
+# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
+time:
+ maximum_overlap_period: False
+ start_time: 1984-01-01
+ end_time: 2003-12-31
+ temporal_resolution: monthly
+ month_start: 1
+ month_end: 12
+ average_each_year: False
+
+space:
+ min_lat: 23.75
+ max_lat: 49.75
+ min_lon: -125.75
+ max_lon: -66.75
+
+regrid:
+ regrid_on_reference: False
+ regrid_dlat: 0.50
+ regrid_dlon: 0.50
+
+datasets:
+ reference:
+ data_source: local
+ data_name: SRB
+ path: ../data/srb_rel3.0_shortwave_from_1983_to_2007.nc
+ variable: sw_sfc_dn
+
+
+ targets:
+ data_source: local
+ path: ../data/rsds*ncep.monavg.nc
+ variable: rsds
+
+number_of_metrics_and_plots: 2
+
+metrics1: Map_plot_bias_of_multiyear_climatology
+
+plots1:
+ file_name: Fig14
+ subplots_array: !!python/tuple [4,2]
+
+metrics2: Taylor_diagram_spatial_pattern_of_multiyear_climatology
+
+plots2:
+ file_name: Fig15
+
+use_subregions: False
+
+subregions:
+#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
+ R01:
+ [42.75, 49.75, -123.75, -120.25]
+ R02:
+ [42.75, 49.75, -119.75, -112.75]
+ R03:
+ [37.25, 42.25, -123.75, -117.75]
+ R04:
+ [32.25, 37.25, -122.75, -114.75]
+ R05:
+ [31.25, 37.25, -113.75, -108.25]
+ R06:
+ [31.25, 37.25, -108.25, -99.75]
+ R07:
+ [37.25, 43.25, -110.25, -103.75]
+ R08:
+ [45.25, 49.25, -99.75, -90.25]
+ R09:
+ [34.75, 45.25, -99.75, -90.25]
+ R10:
+ [29.75, 34.75, -95.75, -84.75]
+ R11:
+ [38.25, 44.75, -89.75, -80.25]
+ R12:
+ [38.25, 44.75, -79.75, -70.25]
+ R13:
+ [30.75, 38.25, -83.75, -75.25]
+ R14:
+ [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/configuration_files/NARCCAP_paper/Fig16_summer.yaml
----------------------------------------------------------------------
diff --git a/RCMES/configuration_files/NARCCAP_paper/Fig16_summer.yaml b/RCMES/configuration_files/NARCCAP_paper/Fig16_summer.yaml
new file mode 100644
index 0000000..db33eff
--- /dev/null
+++ b/RCMES/configuration_files/NARCCAP_paper/Fig16_summer.yaml
@@ -0,0 +1,75 @@
+workdir: ./
+output_netcdf_filename: narccap_rsds_JJA_mean_1980-2003.nc
+
+# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
+time:
+ maximum_overlap_period: False
+ start_time: 1984-01-01
+ end_time: 2003-12-31
+ temporal_resolution: monthly
+ month_start: 6
+ month_end: 8
+ average_each_year: True
+
+space:
+ min_lat: 23.75
+ max_lat: 49.75
+ min_lon: -125.75
+ max_lon: -66.75
+
+regrid:
+ regrid_on_reference: False
+ regrid_dlat: 0.50
+ regrid_dlon: 0.50
+
+datasets:
+ reference:
+ data_source: local
+ data_name: SRB
+ path: ../data/srb_rel3.0_shortwave_from_1983_to_2007.nc
+ variable: sw_sfc_dn
+
+ targets:
+ data_source: local
+ path: ../data/rsds*ncep.monavg.nc
+ variable: rsds
+
+number_of_metrics_and_plots: 1
+
+metrics1: Portrait_diagram_subregion_interannual_variability
+
+plots1:
+ file_name: Fig16_summer
+
+use_subregions: True
+
+subregions:
+#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
+ R01:
+ [42.75, 49.75, -123.75, -120.25]
+ R02:
+ [42.75, 49.75, -119.75, -112.75]
+ R03:
+ [37.25, 42.25, -123.75, -117.75]
+ R04:
+ [32.25, 37.25, -122.75, -114.75]
+ R05:
+ [31.25, 37.25, -113.75, -108.25]
+ R06:
+ [31.25, 37.25, -108.25, -99.75]
+ R07:
+ [37.25, 43.25, -110.25, -103.75]
+ R08:
+ [45.25, 49.25, -99.75, -90.25]
+ R09:
+ [34.75, 45.25, -99.75, -90.25]
+ R10:
+ [29.75, 34.75, -95.75, -84.75]
+ R11:
+ [38.25, 44.75, -89.75, -80.25]
+ R12:
+ [38.25, 44.75, -79.75, -70.25]
+ R13:
+ [30.75, 38.25, -83.75, -75.25]
+ R14:
+ [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/configuration_files/NARCCAP_paper/Fig16_winter.yaml
----------------------------------------------------------------------
diff --git a/RCMES/configuration_files/NARCCAP_paper/Fig16_winter.yaml b/RCMES/configuration_files/NARCCAP_paper/Fig16_winter.yaml
new file mode 100644
index 0000000..e25a4b2
--- /dev/null
+++ b/RCMES/configuration_files/NARCCAP_paper/Fig16_winter.yaml
@@ -0,0 +1,75 @@
+workdir: ./
+output_netcdf_filename: narccap_rsds_DJF_mean_1980-2003.nc
+
+# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
+time:
+ maximum_overlap_period: False
+ start_time: 1984-01-01
+ end_time: 2003-12-31
+ temporal_resolution: monthly
+ month_start: 12
+ month_end: 2
+ average_each_year: True
+
+space:
+ min_lat: 23.75
+ max_lat: 49.75
+ min_lon: -125.75
+ max_lon: -66.75
+
+regrid:
+ regrid_on_reference: False
+ regrid_dlat: 0.50
+ regrid_dlon: 0.50
+
+datasets:
+ reference:
+ data_source: local
+ data_name: SRB
+ path: ../data/srb_rel3.0_shortwave_from_1983_to_2007.nc
+ variable: sw_sfc_dn
+
+ targets:
+ data_source: local
+ path: ../data/rsds*ncep.monavg.nc
+ variable: rsds
+
+number_of_metrics_and_plots: 1
+
+metrics1: Portrait_diagram_subregion_interannual_variability
+
+plots1:
+ file_name: Fig16_winter
+
+use_subregions: True
+
+subregions:
+#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
+ R01:
+ [42.75, 49.75, -123.75, -120.25]
+ R02:
+ [42.75, 49.75, -119.75, -112.75]
+ R03:
+ [37.25, 42.25, -123.75, -117.75]
+ R04:
+ [32.25, 37.25, -122.75, -114.75]
+ R05:
+ [31.25, 37.25, -113.75, -108.25]
+ R06:
+ [31.25, 37.25, -108.25, -99.75]
+ R07:
+ [37.25, 43.25, -110.25, -103.75]
+ R08:
+ [45.25, 49.25, -99.75, -90.25]
+ R09:
+ [34.75, 45.25, -99.75, -90.25]
+ R10:
+ [29.75, 34.75, -95.75, -84.75]
+ R11:
+ [38.25, 44.75, -89.75, -80.25]
+ R12:
+ [38.25, 44.75, -79.75, -70.25]
+ R13:
+ [30.75, 38.25, -83.75, -75.25]
+ R14:
+ [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/configuration_files/NARCCAP_paper/Fig5_and_Fig6.yaml
----------------------------------------------------------------------
diff --git a/RCMES/configuration_files/NARCCAP_paper/Fig5_and_Fig6.yaml b/RCMES/configuration_files/NARCCAP_paper/Fig5_and_Fig6.yaml
new file mode 100644
index 0000000..ef7cc9c
--- /dev/null
+++ b/RCMES/configuration_files/NARCCAP_paper/Fig5_and_Fig6.yaml
@@ -0,0 +1,50 @@
+workdir: ./
+output_netcdf_filename: narccap_tas_annual_mean_1980-2003.nc
+
+# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
+time:
+ maximum_overlap_period: False
+ start_time: 1980-01-01
+ end_time: 2003-12-31
+ temporal_resolution: monthly
+ month_start: 1
+ month_end: 12
+ average_each_year: True
+
+space:
+ min_lat: 23.75
+ max_lat: 49.75
+ min_lon: -125.75
+ max_lon: -66.75
+
+regrid:
+ regrid_on_reference: False
+ regrid_dlat: 0.50
+ regrid_dlon: 0.50
+
+datasets:
+ reference:
+ data_source: rcmed
+ data_name: CRU
+ dataset_id: 10
+ parameter_id: 38
+
+ targets:
+ data_source: local
+ path: ../data/temp.*ncep.monavg.nc
+ variable: temp
+
+number_of_metrics_and_plots: 2
+
+metrics1: Map_plot_bias_of_multiyear_climatology
+
+plots1:
+ file_name: Fig5
+ subplots_array: !!python/tuple [4,2]
+
+metrics2: Taylor_diagram_spatial_pattern_of_multiyear_climatology
+
+plots2:
+ file_name: Fig6
+
+use_subregions: False
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/configuration_files/NARCCAP_paper/Fig7_summer.yaml
----------------------------------------------------------------------
diff --git a/RCMES/configuration_files/NARCCAP_paper/Fig7_summer.yaml b/RCMES/configuration_files/NARCCAP_paper/Fig7_summer.yaml
new file mode 100644
index 0000000..ddbce3b
--- /dev/null
+++ b/RCMES/configuration_files/NARCCAP_paper/Fig7_summer.yaml
@@ -0,0 +1,75 @@
+workdir: ./
+output_netcdf_filename: narccap_tas_JJA_mean_1980-2003.nc
+
+# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
+time:
+ maximum_overlap_period: False
+ start_time: 1980-01-01
+ end_time: 2003-12-31
+ temporal_resolution: monthly
+ month_start: 6
+ month_end: 8
+ average_each_year: True
+
+space:
+ min_lat: 23.75
+ max_lat: 49.75
+ min_lon: -125.75
+ max_lon: -66.75
+
+regrid:
+ regrid_on_reference: False
+ regrid_dlat: 0.50
+ regrid_dlon: 0.50
+
+datasets:
+ reference:
+ data_source: rcmed
+ data_name: CRU
+ dataset_id: 10
+ parameter_id: 38
+
+ targets:
+ data_source: local
+ path: ../data/temp*ncep.monavg.nc
+ variable: temp
+
+number_of_metrics_and_plots: 1
+
+metrics1: Portrait_diagram_subregion_interannual_variability
+
+plots1:
+ file_name: Fig7_summer
+
+use_subregions: True
+
+subregions:
+#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
+ R01:
+ [42.75, 49.75, -123.75, -120.25]
+ R02:
+ [42.75, 49.75, -119.75, -112.75]
+ R03:
+ [37.25, 42.25, -123.75, -117.75]
+ R04:
+ [32.25, 37.25, -122.75, -114.75]
+ R05:
+ [31.25, 37.25, -113.75, -108.25]
+ R06:
+ [31.25, 37.25, -108.25, -99.75]
+ R07:
+ [37.25, 43.25, -110.25, -103.75]
+ R08:
+ [45.25, 49.25, -99.75, -90.25]
+ R09:
+ [34.75, 45.25, -99.75, -90.25]
+ R10:
+ [29.75, 34.75, -95.75, -84.75]
+ R11:
+ [38.25, 44.75, -89.75, -80.25]
+ R12:
+ [38.25, 44.75, -79.75, -70.25]
+ R13:
+ [30.75, 38.25, -83.75, -75.25]
+ R14:
+ [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/configuration_files/NARCCAP_paper/Fig7_winter.yaml
----------------------------------------------------------------------
diff --git a/RCMES/configuration_files/NARCCAP_paper/Fig7_winter.yaml b/RCMES/configuration_files/NARCCAP_paper/Fig7_winter.yaml
new file mode 100644
index 0000000..38add9b
--- /dev/null
+++ b/RCMES/configuration_files/NARCCAP_paper/Fig7_winter.yaml
@@ -0,0 +1,75 @@
+workdir: ./
+output_netcdf_filename: narccap_tas_DJF_mean_1980-2003.nc
+
+# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
+time:
+ maximum_overlap_period: False
+ start_time: 1980-01-01
+ end_time: 2003-12-31
+ temporal_resolution: monthly
+ month_start: 12
+ month_end: 2
+ average_each_year: True
+
+space:
+ min_lat: 23.75
+ max_lat: 49.75
+ min_lon: -125.75
+ max_lon: -66.75
+
+regrid:
+ regrid_on_reference: False
+ regrid_dlat: 0.50
+ regrid_dlon: 0.50
+
+datasets:
+ reference:
+ data_source: rcmed
+ data_name: CRU
+ dataset_id: 10
+ parameter_id: 38
+
+ targets:
+ data_source: local
+ path: ../data/temp*ncep.monavg.nc
+ variable: temp
+
+number_of_metrics_and_plots: 1
+
+metrics1: Portrait_diagram_subregion_interannual_variability
+
+plots1:
+ file_name: Fig7_winter
+
+use_subregions: True
+
+subregions:
+#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
+ R01:
+ [42.75, 49.75, -123.75, -120.25]
+ R02:
+ [42.75, 49.75, -119.75, -112.75]
+ R03:
+ [37.25, 42.25, -123.75, -117.75]
+ R04:
+ [32.25, 37.25, -122.75, -114.75]
+ R05:
+ [31.25, 37.25, -113.75, -108.25]
+ R06:
+ [31.25, 37.25, -108.25, -99.75]
+ R07:
+ [37.25, 43.25, -110.25, -103.75]
+ R08:
+ [45.25, 49.25, -99.75, -90.25]
+ R09:
+ [34.75, 45.25, -99.75, -90.25]
+ R10:
+ [29.75, 34.75, -95.75, -84.75]
+ R11:
+ [38.25, 44.75, -89.75, -80.25]
+ R12:
+ [38.25, 44.75, -79.75, -70.25]
+ R13:
+ [30.75, 38.25, -83.75, -75.25]
+ R14:
+ [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/configuration_files/NARCCAP_paper/Fig8_and_Fig9.yaml
----------------------------------------------------------------------
diff --git a/RCMES/configuration_files/NARCCAP_paper/Fig8_and_Fig9.yaml b/RCMES/configuration_files/NARCCAP_paper/Fig8_and_Fig9.yaml
new file mode 100644
index 0000000..d25ecb6
--- /dev/null
+++ b/RCMES/configuration_files/NARCCAP_paper/Fig8_and_Fig9.yaml
@@ -0,0 +1,50 @@
+workdir: ./
+output_netcdf_filename: narccap_prec_annual_mean_1980-2003.nc
+
+# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
+time:
+ maximum_overlap_period: False
+ start_time: 1980-01-01
+ end_time: 2003-12-31
+ temporal_resolution: monthly
+ month_start: 1
+ month_end: 12
+ average_each_year: True
+
+space:
+ min_lat: 23.75
+ max_lat: 49.75
+ min_lon: -125.75
+ max_lon: -66.75
+
+regrid:
+ regrid_on_reference: False
+ regrid_dlat: 0.50
+ regrid_dlon: 0.50
+
+datasets:
+ reference:
+ data_source: rcmed
+ data_name: CRU
+ dataset_id: 10
+ parameter_id: 37
+
+ targets:
+ data_source: local
+ path: ../data/prec.*ncep.monavg.nc
+ variable: prec
+
+number_of_metrics_and_plots: 2
+
+metrics1: Map_plot_bias_of_multiyear_climatology
+
+plots1:
+ file_name: Fig8
+ subplots_array: !!python/tuple [4,2]
+
+metrics2: Taylor_diagram_spatial_pattern_of_multiyear_climatology
+
+plots2:
+ file_name: Fig9
+
+use_subregions: False
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/metrics_and_plots.py
----------------------------------------------------------------------
diff --git a/RCMES/metrics_and_plots.py b/RCMES/metrics_and_plots.py
new file mode 100644
index 0000000..6e00b0f
--- /dev/null
+++ b/RCMES/metrics_and_plots.py
@@ -0,0 +1,243 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#Apache OCW lib immports
+import ocw.dataset as ds
+import ocw.data_source.local as local
+import ocw.plotter as plotter
+import ocw.utils as utils
+from ocw.evaluation import Evaluation
+import ocw.metrics as metrics
+
+# Python libraries
+import numpy as np
+import numpy.ma as ma
+import matplotlib.pyplot as plt
+from mpl_toolkits.basemap import Basemap
+from matplotlib import rcParams
+from matplotlib.patches import Polygon
+import string
+
+def Map_plot_bias_of_multiyear_climatology(obs_dataset, obs_name, model_datasets, model_names,
+ file_name, row, column, map_projection=None):
+ '''Draw maps of observed multi-year climatology and biases of models"'''
+
+ # calculate climatology of observation data
+ obs_clim = utils.calc_temporal_mean(obs_dataset)
+ # determine the metrics
+ map_of_bias = metrics.TemporalMeanBias()
+
+ # create the Evaluation object
+ bias_evaluation = Evaluation(obs_dataset, # Reference dataset for the evaluation
+ model_datasets, # list of target datasets for the evaluation
+ [map_of_bias, map_of_bias])
+ # run the evaluation (bias calculation)
+ bias_evaluation.run()
+
+ rcm_bias = bias_evaluation.results[0]
+
+ fig = plt.figure()
+
+ lat_min = obs_dataset.lats.min()
+ lat_max = obs_dataset.lats.max()
+ lon_min = obs_dataset.lons.min()
+ lon_max = obs_dataset.lons.max()
+
+ string_list = list(string.ascii_lowercase)
+ ax = fig.add_subplot(row,column,1)
+ if map_projection == 'npstere':
+ m = Basemap(ax=ax, projection ='npstere', boundinglat=lat_min, lon_0=0,
+ resolution = 'l', fix_aspect=False)
+ else:
+ m = Basemap(ax=ax, projection ='cyl', llcrnrlat = lat_min, urcrnrlat = lat_max,
+ llcrnrlon = lon_min, urcrnrlon = lon_max, resolution = 'l', fix_aspect=False)
+ lons, lats = np.meshgrid(obs_dataset.lons, obs_dataset.lats)
+
+ x,y = m(lons, lats)
+
+ m.drawcoastlines(linewidth=1)
+ m.drawcountries(linewidth=1)
+ m.drawstates(linewidth=0.5, color='w')
+ max = m.contourf(x,y,obs_clim,levels = plotter._nice_intervals(obs_dataset.values, 10), extend='both',cmap='rainbow')
+ ax.annotate('(a) \n' + obs_name,xy=(lon_min, lat_min))
+ cax = fig.add_axes([0.02, 1.-float(1./row), 0.01, 1./row*0.6])
+ plt.colorbar(max, cax = cax)
+ clevs = plotter._nice_intervals(rcm_bias, 11)
+ for imodel in np.arange(len(model_datasets)):
+
+ ax = fig.add_subplot(row, column,2+imodel)
+ if map_projection == 'npstere':
+ m = Basemap(ax=ax, projection ='npstere', boundinglat=lat_min, lon_0=0,
+ resolution = 'l', fix_aspect=False)
+ else:
+ m = Basemap(ax=ax, projection ='cyl', llcrnrlat = lat_min, urcrnrlat = lat_max,
+ llcrnrlon = lon_min, urcrnrlon = lon_max, resolution = 'l', fix_aspect=False)
+ m.drawcoastlines(linewidth=1)
+ m.drawcountries(linewidth=1)
+ m.drawstates(linewidth=0.5, color='w')
+ max = m.contourf(x,y,rcm_bias[imodel,:],levels = clevs, extend='both', cmap='RdBu_r')
+ ax.annotate('('+string_list[imodel+1]+') \n '+model_names[imodel],xy=(lon_min, lat_min))
+
+ cax = fig.add_axes([0.91, 0.1, 0.015, 0.8])
+ plt.colorbar(max, cax = cax)
+
+ plt.subplots_adjust(hspace=0.01,wspace=0.05)
+
+ fig.savefig(file_name,dpi=600,bbox_inches='tight')
+
+def Taylor_diagram_spatial_pattern_of_multiyear_climatology(obs_dataset, obs_name, model_datasets, model_names,
+ file_name):
+
+ # calculate climatological mean fields
+ obs_clim_dataset = ds.Dataset(obs_dataset.lats, obs_dataset.lons, obs_dataset.times, utils.calc_temporal_mean(obs_dataset))
+ model_clim_datasets = []
+ for dataset in model_datasets:
+ model_clim_datasets.append(ds.Dataset(dataset.lats, dataset.lons, dataset.times, utils.calc_temporal_mean(dataset)))
+
+ # Metrics (spatial standard deviation and pattern correlation)
+ # determine the metrics
+ taylor_diagram = metrics.SpatialPatternTaylorDiagram()
+
+ # create the Evaluation object
+ taylor_evaluation = Evaluation(obs_clim_dataset, # Climatological mean of reference dataset for the evaluation
+ model_clim_datasets, # list of climatological means from model datasets for the evaluation
+ [taylor_diagram])
+
+ # run the evaluation (bias calculation)
+ taylor_evaluation.run()
+
+ taylor_data = taylor_evaluation.results[0]
+
+ plotter.draw_taylor_diagram(taylor_data, model_names, obs_name, file_name, pos='upper right',frameon=False)
+
+def Time_series_subregion(obs_subregion_mean, obs_name, model_subregion_mean, model_names, seasonal_cycle,
+ file_name, row, column, x_tick=['']):
+
+ nmodel, nt, nregion = model_subregion_mean.shape
+
+ if seasonal_cycle:
+ obs_data = ma.mean(obs_subregion_mean.reshape([1,nt/12,12,nregion]), axis=1)
+ model_data = ma.mean(model_subregion_mean.reshape([nmodel,nt/12,12,nregion]), axis=1)
+ nt = 12
+ else:
+ obs_data = obs_subregion_mean
+ model_data = model_subregion_mean
+
+ x_axis = np.arange(nt)
+ x_tick_values = x_axis
+
+ fig = plt.figure()
+ rcParams['xtick.labelsize'] = 6
+ rcParams['ytick.labelsize'] = 6
+
+ for iregion in np.arange(nregion):
+ ax = fig.add_subplot(row, column, iregion+1)
+ x_tick_labels = ['']
+ if iregion+1 > column*(row-1):
+ x_tick_labels = x_tick
+ else:
+ x_tick_labels=['']
+ ax.plot(x_axis, obs_data[0, :, iregion], color='r', lw=2, label=obs_name)
+ for imodel in np.arange(nmodel):
+ ax.plot(x_axis, model_data[imodel, :, iregion], lw=0.5, label = model_names[imodel])
+ ax.set_xlim([-0.5,nt-0.5])
+ ax.set_xticks(x_tick_values)
+ ax.set_xticklabels(x_tick_labels)
+ ax.set_title('Region %02d' % (iregion+1), fontsize=8)
+
+ ax.legend(bbox_to_anchor=(-0.2, row/2), loc='center' , prop={'size':7}, frameon=False)
+
+ fig.subplots_adjust(hspace=0.7, wspace=0.5)
+ fig.savefig(file_name, dpi=600, bbox_inches='tight')
+
+def Portrait_diagram_subregion(obs_subregion_mean, obs_name, model_subregion_mean, model_names, seasonal_cycle,
+ file_name, normalize=True):
+
+ nmodel, nt, nregion = model_subregion_mean.shape
+
+ if seasonal_cycle:
+ obs_data = ma.mean(obs_subregion_mean.reshape([1,nt/12,12,nregion]), axis=1)
+ model_data = ma.mean(model_subregion_mean.reshape([nmodel,nt/12,12,nregion]), axis=1)
+ nt = 12
+ else:
+ obs_data = obs_subregion_mean
+ model_data = model_subregion_mean
+
+ subregion_metrics = ma.zeros([4, nregion, nmodel])
+
+ for imodel in np.arange(nmodel):
+ for iregion in np.arange(nregion):
+ # First metric: bias
+ subregion_metrics[0, iregion, imodel] = metrics.calc_bias(model_data[imodel, :, iregion], obs_data[0, :, iregion], average_over_time = True)
+ # Second metric: standard deviation
+ subregion_metrics[1, iregion, imodel] = metrics.calc_stddev_ratio(model_data[imodel, :, iregion], obs_data[0, :, iregion])
+ # Third metric: RMSE
+ subregion_metrics[2, iregion, imodel] = metrics.calc_rmse(model_data[imodel, :, iregion], obs_data[0, :, iregion])
+ # Fourth metric: correlation
+ subregion_metrics[3, iregion, imodel] = metrics.calc_correlation(model_data[imodel, :, iregion], obs_data[0, :, iregion])
+
+ if normalize:
+ for iregion in np.arange(nregion):
+ subregion_metrics[0, iregion, : ] = subregion_metrics[0, iregion, : ]/ma.std(obs_data[0, :, iregion])*100.
+ subregion_metrics[1, iregion, : ] = subregion_metrics[1, iregion, : ]*100.
+ subregion_metrics[2, iregion, : ] = subregion_metrics[2, iregion, : ]/ma.std(obs_data[0, :, iregion])*100.
+
+ region_names = ['R%02d' % i for i in np.arange(nregion)+1]
+
+ for imetric, metric in enumerate(['bias','std','RMSE','corr']):
+ plotter.draw_portrait_diagram(subregion_metrics[imetric, :, :], region_names, model_names, file_name+'_'+metric,
+ xlabel='model',ylabel='region')
+
+def Map_plot_subregion(subregions, ref_dataset, directory):
+
+ lons, lats = np.meshgrid(ref_dataset.lons, ref_dataset.lats)
+ fig = plt.figure()
+ ax = fig.add_subplot(111)
+ m = Basemap(ax=ax, projection='cyl',llcrnrlat = lats.min(), urcrnrlat = lats.max(),
+ llcrnrlon = lons.min(), urcrnrlon = lons.max(), resolution = 'l')
+ m.drawcoastlines(linewidth=0.75)
+ m.drawcountries(linewidth=0.75)
+ m.etopo()
+ x, y = m(lons, lats)
+ #subregion_array = ma.masked_equal(subregion_array, 0)
+ #max=m.contourf(x, y, subregion_array, alpha=0.7, cmap='Accent')
+ for subregion in subregions:
+ draw_screen_poly(subregion[1], m, 'w')
+ plt.annotate(subregion[0],xy=(0.5*(subregion[1][2]+subregion[1][3]), 0.5*(subregion[1][0]+subregion[1][1])), ha='center',va='center', fontsize=8)
+ fig.savefig(directory+'map_subregion', bbox_inches='tight')
+
+def draw_screen_poly(boundary_array, m, linecolor='k'):
+
+ ''' Draw a polygon on a map
+
+ :param boundary_array: [lat_north, lat_south, lon_east, lon_west]
+ :param m : Basemap object
+ '''
+
+ lats = [boundary_array[0], boundary_array[0], boundary_array[1], boundary_array[1]]
+ lons = [boundary_array[3], boundary_array[2], boundary_array[2], boundary_array[3]]
+ x, y = m( lons, lats )
+ xy = zip(x,y)
+ poly = Polygon( xy, facecolor='none',edgecolor=linecolor )
+ plt.gca().add_patch(poly)
+
+
+
+
+
+
+
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/run_RCMES.py
----------------------------------------------------------------------
diff --git a/RCMES/run_RCMES.py b/RCMES/run_RCMES.py
new file mode 100644
index 0000000..1054446
--- /dev/null
+++ b/RCMES/run_RCMES.py
@@ -0,0 +1,246 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#Apache OCW lib immports
+import ocw.dataset_processor as dsp
+import ocw.data_source.local as local
+import ocw.data_source.rcmed as rcmed
+import ocw.plotter as plotter
+import ocw.utils as utils
+from ocw.dataset import Bounds
+
+import matplotlib.pyplot as plt
+from matplotlib import rcParams
+import numpy as np
+import numpy.ma as ma
+import yaml
+from glob import glob
+import operator
+from dateutil import parser
+from datetime import datetime
+import os
+import sys
+
+from metrics_and_plots import *
+
+import ssl
+if hasattr(ssl, '_create_unverified_context'):
+ ssl._create_default_https_context = ssl._create_unverified_context
+
+config_file = str(sys.argv[1])
+
+print 'Reading the configuration file ', config_file
+config = yaml.load(open(config_file))
+time_info = config['time']
+temporal_resolution = time_info['temporal_resolution']
+
+start_time = datetime.strptime(time_info['start_time'].strftime('%Y%m%d'),'%Y%m%d')
+end_time = datetime.strptime(time_info['end_time'].strftime('%Y%m%d'),'%Y%m%d')
+
+space_info = config['space']
+min_lat = space_info['min_lat']
+max_lat = space_info['max_lat']
+min_lon = space_info['min_lon']
+max_lon = space_info['max_lon']
+
+""" Step 1: Load the reference data """
+ref_data_info = config['datasets']['reference']
+print 'Loading observation dataset:\n',ref_data_info
+ref_name = ref_data_info['data_name']
+if ref_data_info['data_source'] == 'local':
+ ref_dataset = local.load_file(ref_data_info['path'],
+ ref_data_info['variable'], name=ref_name)
+elif ref_data_info['data_source'] == 'rcmed':
+ ref_dataset = rcmed.parameter_dataset(ref_data_info['dataset_id'],
+ ref_data_info['parameter_id'],
+ min_lat, max_lat, min_lon, max_lon,
+ start_time, end_time)
+else:
+ print ' '
+ # TO DO: support ESGF
+
+ref_dataset = dsp.normalize_dataset_datetimes(ref_dataset, temporal_resolution)
+if 'multiplying_factor' in ref_data_info.keys():
+ ref_dataset.values = ref_dataset.values*ref_data_info['multiplying_factor']
+
+""" Step 2: Load model NetCDF Files into OCW Dataset Objects """
+model_data_info = config['datasets']['targets']
+print 'Loading model datasets:\n',model_data_info
+if model_data_info['data_source'] == 'local':
+ model_datasets, model_names = local.load_multiple_files(file_path = model_data_info['path'],
+ variable_name =model_data_info['variable'])
+else:
+ print ' '
+ # TO DO: support RCMED and ESGF
+for idata,dataset in enumerate(model_datasets):
+ model_datasets[idata] = dsp.normalize_dataset_datetimes(dataset, temporal_resolution)
+
+""" Step 3: Subset the data for temporal and spatial domain """
+# Create a Bounds object to use for subsetting
+if time_info['maximum_overlap_period']:
+ start_time, end_time = utils.get_temporal_overlap([ref_dataset]+model_datasets)
+ print 'Maximum overlap period'
+ print 'start_time:', start_time
+ print 'end_time:', end_time
+
+if temporal_resolution == 'monthly' and end_time.day !=1:
+ end_time = end_time.replace(day=1)
+if ref_data_info['data_source'] == 'rcmed':
+ min_lat = np.max([min_lat, ref_dataset.lats.min()])
+ max_lat = np.min([max_lat, ref_dataset.lats.max()])
+ min_lon = np.max([min_lon, ref_dataset.lons.min()])
+ max_lon = np.min([max_lon, ref_dataset.lons.max()])
+bounds = Bounds(min_lat, max_lat, min_lon, max_lon, start_time, end_time)
+
+if ref_dataset.lats.ndim !=2 and ref_dataset.lons.ndim !=2:
+ ref_dataset = dsp.subset(bounds,ref_dataset)
+else:
+ ref_dataset = dsp.temporal_slice(bounds.start, bounds.end, ref_dataset)
+for idata,dataset in enumerate(model_datasets):
+ if dataset.lats.ndim !=2 and dataset.lons.ndim !=2:
+ model_datasets[idata] = dsp.subset(bounds,dataset)
+ else:
+ model_datasets[idata] = dsp.temporal_slice(bounds.start, bounds.end, dataset)
+
+# Temporaly subset both observation and model datasets for the user specified season
+month_start = time_info['month_start']
+month_end = time_info['month_end']
+average_each_year = time_info['average_each_year']
+
+ref_dataset = dsp.temporal_subset(month_start, month_end,ref_dataset,average_each_year)
+for idata,dataset in enumerate(model_datasets):
+ model_datasets[idata] = dsp.temporal_subset(month_start, month_end,dataset,average_each_year)
+
+# generate grid points for regridding
+if config['regrid']['regrid_on_reference']:
+ new_lat = ref_dataset.lats
+ new_lon = ref_dataset.lons
+else:
+ delta_lat = config['regrid']['regrid_dlat']
+ delta_lon = config['regrid']['regrid_dlon']
+ nlat = (max_lat - min_lat)/delta_lat+1
+ nlon = (max_lon - min_lon)/delta_lon+1
+ new_lat = np.linspace(min_lat, max_lat, nlat)
+ new_lon = np.linspace(min_lon, max_lon, nlon)
+
+# number of models
+nmodel = len(model_datasets)
+print 'Dataset loading completed'
+print 'Observation data:', ref_name
+print 'Number of model datasets:',nmodel
+for model_name in model_names:
+ print model_name
+
+""" Step 4: Spatial regriding of the reference datasets """
+print 'Regridding datasets: ', config['regrid']
+if not config['regrid']['regrid_on_reference']:
+ ref_dataset = dsp.spatial_regrid(ref_dataset, new_lat, new_lon)
+ print 'Reference dataset has been regridded'
+for idata,dataset in enumerate(model_datasets):
+ model_datasets[idata] = dsp.spatial_regrid(dataset, new_lat, new_lon)
+ print model_names[idata]+' has been regridded'
+
+print 'Propagating missing data information'
+ref_dataset = dsp.mask_missing_data([ref_dataset]+model_datasets)[0]
+model_datasets = dsp.mask_missing_data([ref_dataset]+model_datasets)[1:]
+
+""" Step 5: Checking and converting variable units """
+print 'Checking and converting variable units'
+ref_dataset = dsp.variable_unit_conversion(ref_dataset)
+for idata,dataset in enumerate(model_datasets):
+ model_datasets[idata] = dsp.variable_unit_conversion(dataset)
+
+
+print 'Generating multi-model ensemble'
+if len(model_datasets) >= 2.:
+ model_datasets.append(dsp.ensemble(model_datasets))
+ model_names.append('ENS')
+
+""" Step 6: Generate subregion average and standard deviation """
+if config['use_subregions']:
+ # sort the subregion by region names and make a list
+ subregions= sorted(config['subregions'].items(),key=operator.itemgetter(0))
+
+ # number of subregions
+ nsubregion = len(subregions)
+
+ print 'Calculating spatial averages and standard deviations of ',str(nsubregion),' subregions'
+
+ ref_subregion_mean, ref_subregion_std, subregion_array = utils.calc_subregion_area_mean_and_std([ref_dataset], subregions)
+ model_subregion_mean, model_subregion_std, subregion_array = utils.calc_subregion_area_mean_and_std(model_datasets, subregions)
+
+""" Step 7: Write a netCDF file """
+workdir = config['workdir']
+if workdir[-1] != '/':
+ workdir = workdir+'/'
+print 'Writing a netcdf file: ',workdir+config['output_netcdf_filename']
+if not os.path.exists(workdir):
+ os.system("mkdir "+workdir)
+
+if config['use_subregions']:
+ dsp.write_netcdf_multiple_datasets_with_subregions(ref_dataset, ref_name, model_datasets, model_names,
+ path=workdir+config['output_netcdf_filename'],
+ subregions=subregions, subregion_array = subregion_array,
+ ref_subregion_mean=ref_subregion_mean, ref_subregion_std=ref_subregion_std,
+ model_subregion_mean=model_subregion_mean, model_subregion_std=model_subregion_std)
+else:
+ dsp.write_netcdf_multiple_datasets_with_subregions(ref_dataset, ref_name, model_datasets, model_names,
+ path=workdir+config['output_netcdf_filename'])
+
+""" Step 8: Calculate metrics and draw plots """
+nmetrics = config['number_of_metrics_and_plots']
+if config['use_subregions']:
+ Map_plot_subregion(subregions, ref_dataset, workdir)
+
+if nmetrics > 0:
+ print 'Calculating metrics and generating plots'
+ for imetric in np.arange(nmetrics)+1:
+ metrics_name = config['metrics'+'%1d' %imetric]
+ plot_info = config['plots'+'%1d' %imetric]
+ file_name = workdir+plot_info['file_name']
+
+ print 'metrics '+str(imetric)+'/'+str(nmetrics)+': ', metrics_name
+ if metrics_name == 'Map_plot_bias_of_multiyear_climatology':
+ row, column = plot_info['subplots_array']
+ if 'map_projection' in plot_info.keys():
+ Map_plot_bias_of_multiyear_climatology(ref_dataset, ref_name, model_datasets, model_names,
+ file_name, row, column, map_projection=plot_info['map_projection'])
+ else:
+ Map_plot_bias_of_multiyear_climatology(ref_dataset, ref_name, model_datasets, model_names,
+ file_name, row, column)
+ elif metrics_name == 'Taylor_diagram_spatial_pattern_of_multiyear_climatology':
+ Taylor_diagram_spatial_pattern_of_multiyear_climatology(ref_dataset, ref_name, model_datasets, model_names,
+ file_name)
+ elif config['use_subregions']:
+ if metrics_name == 'Timeseries_plot_subregion_interannual_variability' and average_each_year:
+ row, column = plot_info['subplots_array']
+ Time_series_subregion(ref_subregion_mean, ref_name, model_subregion_mean, model_names, False,
+ file_name, row, column, x_tick=['Y'+str(i+1) for i in np.arange(model_subregion_mean.shape[1])])
+ if metrics_name == 'Timeseries_plot_subregion_annual_cycle' and not average_each_year and month_start==1 and month_end==12:
+ row, column = plot_info['subplots_array']
+ Time_series_subregion(ref_subregion_mean, ref_name, model_subregion_mean, model_names, True,
+ file_name, row, column, x_tick=['J','F','M','A','M','J','J','A','S','O','N','D'])
+ if metrics_name == 'Portrait_diagram_subregion_interannual_variability' and average_each_year:
+ Portrait_diagram_subregion(ref_subregion_mean, ref_name, model_subregion_mean, model_names, False,
+ file_name)
+ if metrics_name == 'Portrait_diagram_subregion_annual_cycle' and not average_each_year and month_start==1 and month_end==12:
+ Portrait_diagram_subregion(ref_subregion_mean, ref_name, model_subregion_mean, model_names, True,
+ file_name)
+ else:
+ print 'please check the currently supported metrics'
+
+
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/statistical_downscaling/MPI_tas_JJA.yaml
----------------------------------------------------------------------
diff --git a/RCMES/statistical_downscaling/MPI_tas_JJA.yaml b/RCMES/statistical_downscaling/MPI_tas_JJA.yaml
new file mode 100644
index 0000000..17a12a7
--- /dev/null
+++ b/RCMES/statistical_downscaling/MPI_tas_JJA.yaml
@@ -0,0 +1,29 @@
+case_name: MPI_tas_JJA
+
+# downscaling method (1: delta addition, 2: Delta correction, 3: quantile mapping, 4: asynchronous regression)
+downscaling_option: 4
+
+# longitude (-180 ~ 180) and latitude (-90 ~ 90) of the grid point to downscale model output [in degrees]
+location:
+ name: HoChiMinh_City
+ grid_lat: 10.75
+ grid_lon: 106.67
+
+# Season (for December - February, month_start=12 & month_end =2; for June - August, month_start=6 & month_end = 8)
+month_index: !!python/tuple [6,7,8]
+
+# reference (observation) data
+reference:
+ data_source: local
+ data_name: CRU
+ path: ./data/observation/tas_cru_monthly_1981-2010.nc
+ variable: tas
+
+model:
+ data_name: MPI
+ variable: tas
+ present:
+ path: ./data/model_present/tas_Amon_MPI_decadal1980_198101-201012.nc
+ future:
+ scenario_name: RCP8.5_2041-70
+ path: ./data/model_rcp85/tas_Amon_MPI_rcp85_204101-207012.nc
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/statistical_downscaling/run_statistical_downscaling.py
----------------------------------------------------------------------
diff --git a/RCMES/statistical_downscaling/run_statistical_downscaling.py b/RCMES/statistical_downscaling/run_statistical_downscaling.py
new file mode 100644
index 0000000..60c6ac2
--- /dev/null
+++ b/RCMES/statistical_downscaling/run_statistical_downscaling.py
@@ -0,0 +1,231 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import datetime
+import yaml
+import os
+import sys
+import xlwt
+
+import numpy as np
+import numpy.ma as ma
+
+import ocw.data_source.local as local
+import ocw.dataset as ds
+import ocw.dataset_processor as dsp
+import ocw.statistical_downscaling as down
+import ocw.plotter as plotter
+
+import ssl
+
+def spatial_aggregation(target_dataset, lon_min, lon_max, lat_min, lat_max):
+ """ Spatially subset a dataset within the given longitude and latitude boundaryd_lon-grid_space, grid_lon+grid_space
+ :param target_dataset: Dataset object that needs spatial subsetting
+ :type target_dataset: Open Climate Workbench Dataset Object
+ :param lon_min: minimum longitude (western boundary)
+ :type lon_min: float
+ :param lon_max: maximum longitude (eastern boundary)
+ :type lon_min: float
+ :param lat_min: minimum latitude (southern boundary)
+ :type lat_min: float
+ :param lat_min: maximum latitude (northern boundary)
+ :type lat_min: float
+ :returns: A new spatially subset Dataset
+ :rtype: Open Climate Workbench Dataset Object
+ """
+
+ if target_dataset.lons.ndim == 1 and target_dataset.lats.ndim == 1:
+ new_lon, new_lat = np.meshgrid(target_dataset.lons, target_dataset.lats)
+ elif target_dataset.lons.ndim == 2 and target_dataset.lats.ndim == 2:
+ new_lon = target_datasets.lons
+ new_lat = target_datasets.lats
+
+ y_index, x_index = np.where((new_lon >= lon_min) & (new_lon <= lon_max) & (new_lat >= lat_min) & (new_lat <= lat_max))[0:2]
+
+ #new_dataset = ds.Dataset(target_dataset.lats[y_index.min():y_index.max()+1],
+ # target_dataset.lons[x_index.min():x_index.max()+1],
+ # target_dataset.times,
+ # target_dataset.values[:,y_index.min():y_index.max()+1,x_index.min():x_index.max()+1],
+ # target_dataset.variable,
+ # target_dataset.name)
+ return target_dataset.values[:,y_index.min():y_index.max()+1,x_index.min():x_index.max()+1]
+
+def extract_data_at_nearest_grid_point(target_dataset, longitude, latitude):
+ """ Spatially subset a dataset within the given longitude and latitude boundaryd_lon-grid_space, grid_lon+grid_space
+ :param target_dataset: Dataset object that needs spatial subsetting
+ :type target_dataset: Open Climate Workbench Dataset Object
+ :type longitude: float
+ :param longitude: longitude
+ :type latitude: float
+ :param latitude: latitude
+ :returns: A new spatially subset Dataset
+ :rtype: Open Climate Workbench Dataset Object
+ """
+
+ if target_dataset.lons.ndim == 1 and target_dataset.lats.ndim == 1:
+ new_lon, new_lat = np.meshgrid(target_dataset.lons, target_dataset.lats)
+ elif target_dataset.lons.ndim == 2 and target_dataset.lats.ndim == 2:
+ new_lon = target_datasets.lons
+ new_lat = target_datasets.lats
+ distance = (new_lon - longitude)**2. + (new_lat - latitude)**2.
+ y_index, x_index = np.where(distance == np.min(distance))[0:2]
+
+ return target_dataset.values[:,y_index[0], x_index[0]]
+
+if hasattr(ssl, '_create_unverified_context'):
+ ssl._create_default_https_context = ssl._create_unverified_context
+
+config_file = str(sys.argv[1])
+
+print 'Reading the configuration file ', config_file
+
+config = yaml.load(open(config_file))
+
+case_name = config['case_name']
+
+downscale_option_names = [' ','delta_addition','delta_correction','quantile_mapping','asynchronous_regression']
+DOWNSCALE_OPTION = config['downscaling_option']
+
+location = config['location']
+grid_lat = location['grid_lat']
+grid_lon = location['grid_lon']
+
+month_index = config['month_index']
+month_start = month_index[0]
+month_end = month_index[-1]
+
+ref_info = config['reference']
+model_info = config['model']
+
+# Filename for the output data/plot (without file extension)
+OUTPUT = "%s_%s_%s_%s_%s" %(location['name'], ref_info['variable'], model_info['data_name'], ref_info['data_name'],model_info['future']['scenario_name'])
+
+print("Processing "+ ref_info['data_name'] + " data")
+""" Step 1: Load Local NetCDF Files into OCW Dataset Objects """
+
+print("Loading %s into an OCW Dataset Object" % (ref_info['path'],))
+ref_dataset = local.load_file(ref_info['path'], ref_info['variable'])
+print(ref_info['data_name'] +" values shape: (times, lats, lons) - %s \n" % (ref_dataset.values.shape,))
+
+print("Loading %s into an OCW Dataset Object" % (model_info['present']['path'],))
+model_dataset_present = local.load_file(model_info['present']['path'], model_info['variable'])
+print(model_info['data_name'] +" values shape: (times, lats, lons) - %s \n" % (model_dataset_present.values.shape,))
+dy = model_dataset_present.spatial_resolution()[0]
+dx = model_dataset_present.spatial_resolution()[1]
+
+model_dataset_future = local.load_file(model_info['future']['path'], model_info['variable'])
+print(model_info['future']['scenario_name']+':'+model_info['data_name'] +" values shape: (times, lats, lons) - %s \n" % (model_dataset_future.values.shape,))
+
+""" Step 2: Temporal subsetting """
+print("Temporal subsetting for the selected month(s)")
+ref_temporal_subset = dsp.temporal_subset(month_start, month_end, ref_dataset)
+model_temporal_subset_present = dsp.temporal_subset(month_start, month_end, model_dataset_present)
+model_temporal_subset_future = dsp.temporal_subset(month_start, month_end, model_dataset_future)
+
+""" Step 3: Spatial aggregation of observational data into the model grid """
+print("Spatial aggregation of observational data near latitude %0.2f and longitude %0.2f " % (grid_lat, grid_lon))
+# There are two options to aggregate observational data near a model grid point
+#ref_subset = spatial_aggregation(ref_temporal_subset, grid_lon-0.5*dx, grid_lon+0.5*dx, grid_lat-0.5*dy, grid_lat+0.5*dy)
+#model_subset_present = spatial_aggregation(model_temporal_subset_present, grid_lon-0.5*dx, grid_lon+0.5*dx, grid_lat-0.5*dy, grid_lat+0.5*dy)
+#model_subset_future = spatial_aggregation(model_temporal_subset_future, grid_lon-0.5*dx, grid_lon+0.5*dx, grid_lat-0.5*dy, grid_lat+0.5*dy)
+ref_subset = extract_data_at_nearest_grid_point(ref_temporal_subset, grid_lon, grid_lat)
+model_subset_present = extract_data_at_nearest_grid_point(model_temporal_subset_present, grid_lon, grid_lat)
+model_subset_future = extract_data_at_nearest_grid_point(model_temporal_subset_future, grid_lon, grid_lat)
+
+
+""" Step 4: Create a statistical downscaling object and downscaling model output """
+# You can add other methods
+print("Creating a statistical downscaling object")
+
+downscale = down.Downscaling(ref_subset, model_subset_present, model_subset_future)
+
+print(downscale_option_names[DOWNSCALE_OPTION]+": Downscaling model output")
+
+if DOWNSCALE_OPTION == 1:
+ downscaled_model_present, downscaled_model_future = downscale.Delta_addition()
+elif DOWNSCALE_OPTION == 2:
+ downscaled_model_present, downscaled_model_future = downscale.Delta_correction()
+elif DOWNSCALE_OPTION == 3:
+ downscaled_model_present, downscaled_model_future = downscale.Quantile_mapping()
+elif DOWNSCALE_OPTION == 4:
+ downscaled_model_present, downscaled_model_future = downscale.Asynchronous_regression()
+else:
+ sys.exit("DOWNSCALE_OPTION must be an integer between 1 and 4")
+
+
+""" Step 5: Create plots and spreadsheet """
+print("Plotting results")
+if not os.path.exists(case_name):
+ os.system("mkdir "+case_name)
+os.chdir(os.getcwd()+"/"+case_name)
+
+plotter.draw_marker_on_map(grid_lat, grid_lon, fname='downscaling_location', location_name=config['location']['name'])
+
+plotter.draw_histogram([ref_subset.ravel(), model_subset_present.ravel(), model_subset_future.ravel()],
+ data_names = [ref_info['data_name'], model_info['data_name'], model_info['future']['scenario_name']],
+ fname=OUTPUT+'_original')
+
+plotter.draw_histogram([ref_subset.ravel(), downscaled_model_present, downscaled_model_future],
+ data_names = [ref_info['data_name'], model_info['data_name'], model_info['future']['scenario_name']],
+ fname=OUTPUT+'_downscaled_using_'+downscale_option_names[DOWNSCALE_OPTION])
+
+print("Generating spreadsheet")
+
+workbook = xlwt.Workbook()
+sheet = workbook.add_sheet(downscale_option_names[config['downscaling_option']])
+
+sheet.write(0, 0, config['location']['name'])
+sheet.write(0, 2, 'longitude')
+sheet.write(0, 4, 'latitude')
+sheet.write(0, 6, 'month')
+
+
+sheet.write(0, 3, grid_lon)
+sheet.write(0, 5, grid_lat)
+
+
+
+for imonth,month in enumerate(month_index):
+ sheet.write(0, 7+imonth, month)
+
+sheet.write(3, 1, 'observation')
+sheet.write(4, 1, ref_info['data_name'])
+for idata, data in enumerate(ref_subset.ravel()[~ref_subset.ravel().mask]):
+ sheet.write(5+idata,1,data.item())
+
+sheet.write(3, 2, 'original')
+sheet.write(4, 2, model_info['data_name'])
+for idata, data in enumerate(model_subset_present.ravel()):
+ sheet.write(5+idata,2,data.item())
+
+sheet.write(3, 3, 'original')
+sheet.write(4, 3, model_info['future']['scenario_name'])
+for idata, data in enumerate(model_subset_future.ravel()):
+ sheet.write(5+idata,3,data.item())
+
+sheet.write(3, 4, 'downscaled')
+sheet.write(4, 4, model_info['data_name'])
+for idata, data in enumerate(downscaled_model_present):
+ sheet.write(5+idata,4,data.item())
+
+sheet.write(3, 5, 'downscaled')
+sheet.write(4, 5, model_info['future']['scenario_name'])
+for idata, data in enumerate(downscaled_model_future):
+ sheet.write(5+idata,5,data.item())
+
+workbook.save(OUTPUT+'.xls')
+
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/RCMES/test/test.py
----------------------------------------------------------------------
diff --git a/RCMES/test/test.py b/RCMES/test/test.py
new file mode 100644
index 0000000..beab16f
--- /dev/null
+++ b/RCMES/test/test.py
@@ -0,0 +1,179 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import datetime
+import urllib
+from os import path
+
+import numpy as np
+
+import ocw.data_source.local as local
+import ocw.data_source.rcmed as rcmed
+from ocw.dataset import Bounds as Bounds
+import ocw.dataset_processor as dsp
+import ocw.evaluation as evaluation
+import ocw.metrics as metrics
+import ocw.plotter as plotter
+import ssl
+
+if hasattr(ssl, '_create_unverified_context'):
+ ssl._create_default_https_context = ssl._create_unverified_context
+
+# File URL leader
+FILE_LEADER = "http://zipper.jpl.nasa.gov/dist/"
+# This way we can easily adjust the time span of the retrievals
+YEARS = 3
+# Two Local Model Files
+MODEL = "AFRICA_KNMI-RACMO2.2b_CTL_ERAINT_MM_50km_1989-2008_tasmax.nc"
+# Filename for the output image/plot (without file extension)
+OUTPUT_PLOT = "cru_31_tmax_knmi_africa_bias_full"
+
+# Download necessary NetCDF file if not present
+if path.exists(MODEL):
+ pass
+else:
+ urllib.urlretrieve(FILE_LEADER + MODEL, MODEL)
+
+""" Step 1: Load Local NetCDF File into OCW Dataset Objects """
+print("Loading %s into an OCW Dataset Object" % (MODEL,))
+knmi_dataset = local.load_file(MODEL, "tasmax")
+print("KNMI_Dataset.values shape: (times, lats, lons) - %s \n" % (knmi_dataset.values.shape,))
+
+""" Step 2: Fetch an OCW Dataset Object from the data_source.rcmed module """
+print("Working with the rcmed interface to get CRU3.1 Daily-Max Temp")
+metadata = rcmed.get_parameters_metadata()
+
+cru_31 = [m for m in metadata if m['parameter_id'] == "39"][0]
+
+""" The RCMED API uses the following function to query, subset and return the
+raw data from the database:
+
+rcmed.parameter_dataset(dataset_id, parameter_id, min_lat, max_lat, min_lon,
+ max_lon, start_time, end_time)
+
+The first two required params are in the cru_31 variable we defined earlier
+"""
+# Must cast to int since the rcmed api requires ints
+dataset_id = int(cru_31['dataset_id'])
+parameter_id = int(cru_31['parameter_id'])
+
+print("We are going to use the Model to constrain the Spatial Domain")
+# The spatial_boundaries() function returns the spatial extent of the dataset
+print("The KNMI_Dataset spatial bounds (min_lat, max_lat, min_lon, max_lon) are: \n"
+ "%s\n" % (knmi_dataset.spatial_boundaries(), ))
+print("The KNMI_Dataset spatial resolution (lat_resolution, lon_resolution) is: \n"
+ "%s\n\n" % (knmi_dataset.spatial_resolution(), ))
+min_lat, max_lat, min_lon, max_lon = knmi_dataset.spatial_boundaries()
+
+print("Calculating the Maximum Overlap in Time for the datasets")
+
+cru_start = datetime.datetime.strptime(cru_31['start_date'], "%Y-%m-%d")
+cru_end = datetime.datetime.strptime(cru_31['end_date'], "%Y-%m-%d")
+knmi_start, knmi_end = knmi_dataset.time_range()
+# Grab the Max Start Time
+start_time = max([cru_start, knmi_start])
+# Grab the Min End Time
+end_time = min([cru_end, knmi_end])
+print("Overlap computed to be: %s to %s" % (start_time.strftime("%Y-%m-%d"),
+ end_time.strftime("%Y-%m-%d")))
+print("We are going to grab the first %s year(s) of data" % YEARS)
+end_time = datetime.datetime(start_time.year + YEARS, start_time.month, start_time.day)
+print("Final Overlap is: %s to %s" % (start_time.strftime("%Y-%m-%d"),
+ end_time.strftime("%Y-%m-%d")))
+
+print("Fetching data from RCMED...")
+cru31_dataset = rcmed.parameter_dataset(dataset_id,
+ parameter_id,
+ min_lat,
+ max_lat,
+ min_lon,
+ max_lon,
+ start_time,
+ end_time)
+
+""" Step 3: Resample Datasets so they are the same shape """
+print("CRU31_Dataset.values shape: (times, lats, lons) - %s" % (cru31_dataset.values.shape,))
+print("KNMI_Dataset.values shape: (times, lats, lons) - %s" % (knmi_dataset.values.shape,))
+print("Our two datasets have a mis-match in time. We will subset on time to %s years\n" % YEARS)
+
+# Create a Bounds object to use for subsetting
+new_bounds = Bounds(min_lat, max_lat, min_lon, max_lon, start_time, end_time)
+knmi_dataset = dsp.subset(new_bounds, knmi_dataset)
+
+print("CRU31_Dataset.values shape: (times, lats, lons) - %s" % (cru31_dataset.values.shape,))
+print("KNMI_Dataset.values shape: (times, lats, lons) - %s \n" % (knmi_dataset.values.shape,))
+
+print("Temporally Rebinning the Datasets to a Single Timestep")
+# To run FULL temporal Rebinning use a timedelta > 366 days. I used 999 in this example
+knmi_dataset = dsp.temporal_rebin(knmi_dataset, datetime.timedelta(days=999))
+cru31_dataset = dsp.temporal_rebin(cru31_dataset, datetime.timedelta(days=999))
+
+print("KNMI_Dataset.values shape: %s" % (knmi_dataset.values.shape,))
+print("CRU31_Dataset.values shape: %s \n\n" % (cru31_dataset.values.shape,))
+
+""" Spatially Regrid the Dataset Objects to a 1/2 degree grid """
+# Using the bounds we will create a new set of lats and lons on 0.5 degree step
+new_lons = np.arange(min_lon, max_lon, 0.5)
+new_lats = np.arange(min_lat, max_lat, 0.5)
+
+# Spatially regrid datasets using the new_lats, new_lons numpy arrays
+print("Spatially Regridding the KNMI_Dataset...")
+knmi_dataset = dsp.spatial_regrid(knmi_dataset, new_lats, new_lons)
+print("Spatially Regridding the CRU31_Dataset...")
+cru31_dataset = dsp.spatial_regrid(cru31_dataset, new_lats, new_lons)
+print("Final shape of the KNMI_Dataset:%s" % (knmi_dataset.values.shape, ))
+print("Final shape of the CRU31_Dataset:%s" % (cru31_dataset.values.shape, ))
+
+""" Step 4: Build a Metric to use for Evaluation - Bias for this example """
+# You can build your own metrics, but OCW also ships with some common metrics
+print("Setting up a Bias metric to use for evaluation")
+bias = metrics.Bias()
+
+""" Step 5: Create an Evaluation Object using Datasets and our Metric """
+# The Evaluation Class Signature is:
+# Evaluation(reference, targets, metrics, subregions=None)
+# Evaluation can take in multiple targets and metrics, so we need to convert
+# our examples into Python lists. Evaluation will iterate over the lists
+print("Making the Evaluation definition")
+bias_evaluation = evaluation.Evaluation(knmi_dataset, [cru31_dataset], [bias])
+print("Executing the Evaluation using the object's run() method")
+bias_evaluation.run()
+
+""" Step 6: Make a Plot from the Evaluation.results """
+# The Evaluation.results are a set of nested lists to support many different
+# possible Evaluation scenarios.
+#
+# The Evaluation results docs say:
+# The shape of results is (num_metrics, num_target_datasets) if no subregion
+# Accessing the actual results when we have used 1 metric and 1 dataset is
+# done this way:
+print("Accessing the Results of the Evaluation run")
+results = bias_evaluation.results[0][0,:]
+
+# From the bias output I want to make a Contour Map of the region
+print("Generating a contour map using ocw.plotter.draw_contour_map()")
+
+lats = new_lats
+lons = new_lons
+fname = OUTPUT_PLOT
+gridshape = (1, 1) # Using a 1 x 1 since we have a single Bias for the full time range
+plot_title = "TASMAX Bias of KNMI Compared to CRU 3.1 (%s - %s)" % (start_time.strftime("%Y/%d/%m"), end_time.strftime("%Y/%d/%m"))
+sub_titles = ["Full Temporal Range"]
+
+plotter.draw_contour_map(results, lats, lons, fname,
+ gridshape=gridshape, ptitle=plot_title,
+ subtitles=sub_titles)
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig10_and_Fig11.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig10_and_Fig11.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig10_and_Fig11.yaml
deleted file mode 100644
index 0650e61..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig10_and_Fig11.yaml
+++ /dev/null
@@ -1,81 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_prec_monthly_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1980-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 1
- month_end: 12
- average_each_year: False
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: rcmed
- data_name: CRU
- dataset_id: 10
- parameter_id: 37
-
- targets:
- data_source: local
- path: ../data/prec*ncep.monavg.nc
- variable: prec
-
-number_of_metrics_and_plots: 2
-
-metrics1: Timeseries_plot_subregion_annual_cycle
-
-plots1:
- file_name: Fig10
- subplots_array: !!python/tuple [7,2]
-
-metrics2: Portrait_diagram_subregion_annual_cycle
-
-plots2:
- file_name: Fig11
-
-use_subregions: True
-
-subregions:
-#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
- R01:
- [42.75, 49.75, -123.75, -120.25]
- R02:
- [42.75, 49.75, -119.75, -112.75]
- R03:
- [37.25, 42.25, -123.75, -117.75]
- R04:
- [32.25, 37.25, -122.75, -114.75]
- R05:
- [31.25, 37.25, -113.75, -108.25]
- R06:
- [31.25, 37.25, -108.25, -99.75]
- R07:
- [37.25, 43.25, -110.25, -103.75]
- R08:
- [45.25, 49.25, -99.75, -90.25]
- R09:
- [34.75, 45.25, -99.75, -90.25]
- R10:
- [29.75, 34.75, -95.75, -84.75]
- R11:
- [38.25, 44.75, -89.75, -80.25]
- R12:
- [38.25, 44.75, -79.75, -70.25]
- R13:
- [30.75, 38.25, -83.75, -75.25]
- R14:
- [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig12_summer.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig12_summer.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig12_summer.yaml
deleted file mode 100644
index f11c136..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig12_summer.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_prec_JJA_mean_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1980-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 6
- month_end: 8
- average_each_year: True
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: rcmed
- data_name: CRU
- dataset_id: 10
- parameter_id: 37
-
- targets:
- data_source: local
- path: ../data/prec*ncep.monavg.nc
- variable: prec
-
-number_of_metrics_and_plots: 1
-
-metrics1: Portrait_diagram_subregion_interannual_variability
-
-plots1:
- file_name: Fig12_summer
-
-use_subregions: True
-
-subregions:
-#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
- R01:
- [42.75, 49.75, -123.75, -120.25]
- R02:
- [42.75, 49.75, -119.75, -112.75]
- R03:
- [37.25, 42.25, -123.75, -117.75]
- R04:
- [32.25, 37.25, -122.75, -114.75]
- R05:
- [31.25, 37.25, -113.75, -108.25]
- R06:
- [31.25, 37.25, -108.25, -99.75]
- R07:
- [37.25, 43.25, -110.25, -103.75]
- R08:
- [45.25, 49.25, -99.75, -90.25]
- R09:
- [34.75, 45.25, -99.75, -90.25]
- R10:
- [29.75, 34.75, -95.75, -84.75]
- R11:
- [38.25, 44.75, -89.75, -80.25]
- R12:
- [38.25, 44.75, -79.75, -70.25]
- R13:
- [30.75, 38.25, -83.75, -75.25]
- R14:
- [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig12_winter.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig12_winter.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig12_winter.yaml
deleted file mode 100644
index f1f0b1e..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig12_winter.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_prec_DJF_mean_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1980-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 12
- month_end: 2
- average_each_year: True
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: rcmed
- data_name: CRU
- dataset_id: 10
- parameter_id: 37
-
- targets:
- data_source: local
- path: ../data/prec*ncep.monavg.nc
- variable: prec
-
-number_of_metrics_and_plots: 1
-
-metrics1: Portrait_diagram_subregion_interannual_variability
-
-plots1:
- file_name: Fig12_winter
-
-use_subregions: True
-
-subregions:
-#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
- R01:
- [42.75, 49.75, -123.75, -120.25]
- R02:
- [42.75, 49.75, -119.75, -112.75]
- R03:
- [37.25, 42.25, -123.75, -117.75]
- R04:
- [32.25, 37.25, -122.75, -114.75]
- R05:
- [31.25, 37.25, -113.75, -108.25]
- R06:
- [31.25, 37.25, -108.25, -99.75]
- R07:
- [37.25, 43.25, -110.25, -103.75]
- R08:
- [45.25, 49.25, -99.75, -90.25]
- R09:
- [34.75, 45.25, -99.75, -90.25]
- R10:
- [29.75, 34.75, -95.75, -84.75]
- R11:
- [38.25, 44.75, -89.75, -80.25]
- R12:
- [38.25, 44.75, -79.75, -70.25]
- R13:
- [30.75, 38.25, -83.75, -75.25]
- R14:
- [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig14_and_Fig15.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig14_and_Fig15.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig14_and_Fig15.yaml
deleted file mode 100644
index 5e01ce0..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig14_and_Fig15.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_rsds_monthly_1984-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1984-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 1
- month_end: 12
- average_each_year: False
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: local
- data_name: SRB
- path: ../data/srb_rel3.0_shortwave_from_1983_to_2007.nc
- variable: sw_sfc_dn
-
-
- targets:
- data_source: local
- path: ../data/rsds*ncep.monavg.nc
- variable: rsds
-
-number_of_metrics_and_plots: 2
-
-metrics1: Map_plot_bias_of_multiyear_climatology
-
-plots1:
- file_name: Fig14
- subplots_array: !!python/tuple [4,2]
-
-metrics2: Taylor_diagram_spatial_pattern_of_multiyear_climatology
-
-plots2:
- file_name: Fig15
-
-use_subregions: False
-
-subregions:
-#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
- R01:
- [42.75, 49.75, -123.75, -120.25]
- R02:
- [42.75, 49.75, -119.75, -112.75]
- R03:
- [37.25, 42.25, -123.75, -117.75]
- R04:
- [32.25, 37.25, -122.75, -114.75]
- R05:
- [31.25, 37.25, -113.75, -108.25]
- R06:
- [31.25, 37.25, -108.25, -99.75]
- R07:
- [37.25, 43.25, -110.25, -103.75]
- R08:
- [45.25, 49.25, -99.75, -90.25]
- R09:
- [34.75, 45.25, -99.75, -90.25]
- R10:
- [29.75, 34.75, -95.75, -84.75]
- R11:
- [38.25, 44.75, -89.75, -80.25]
- R12:
- [38.25, 44.75, -79.75, -70.25]
- R13:
- [30.75, 38.25, -83.75, -75.25]
- R14:
- [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig16_summer.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig16_summer.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig16_summer.yaml
deleted file mode 100644
index db33eff..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig16_summer.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_rsds_JJA_mean_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1984-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 6
- month_end: 8
- average_each_year: True
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: local
- data_name: SRB
- path: ../data/srb_rel3.0_shortwave_from_1983_to_2007.nc
- variable: sw_sfc_dn
-
- targets:
- data_source: local
- path: ../data/rsds*ncep.monavg.nc
- variable: rsds
-
-number_of_metrics_and_plots: 1
-
-metrics1: Portrait_diagram_subregion_interannual_variability
-
-plots1:
- file_name: Fig16_summer
-
-use_subregions: True
-
-subregions:
-#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
- R01:
- [42.75, 49.75, -123.75, -120.25]
- R02:
- [42.75, 49.75, -119.75, -112.75]
- R03:
- [37.25, 42.25, -123.75, -117.75]
- R04:
- [32.25, 37.25, -122.75, -114.75]
- R05:
- [31.25, 37.25, -113.75, -108.25]
- R06:
- [31.25, 37.25, -108.25, -99.75]
- R07:
- [37.25, 43.25, -110.25, -103.75]
- R08:
- [45.25, 49.25, -99.75, -90.25]
- R09:
- [34.75, 45.25, -99.75, -90.25]
- R10:
- [29.75, 34.75, -95.75, -84.75]
- R11:
- [38.25, 44.75, -89.75, -80.25]
- R12:
- [38.25, 44.75, -79.75, -70.25]
- R13:
- [30.75, 38.25, -83.75, -75.25]
- R14:
- [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig16_winter.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig16_winter.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig16_winter.yaml
deleted file mode 100644
index e25a4b2..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig16_winter.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_rsds_DJF_mean_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1984-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 12
- month_end: 2
- average_each_year: True
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: local
- data_name: SRB
- path: ../data/srb_rel3.0_shortwave_from_1983_to_2007.nc
- variable: sw_sfc_dn
-
- targets:
- data_source: local
- path: ../data/rsds*ncep.monavg.nc
- variable: rsds
-
-number_of_metrics_and_plots: 1
-
-metrics1: Portrait_diagram_subregion_interannual_variability
-
-plots1:
- file_name: Fig16_winter
-
-use_subregions: True
-
-subregions:
-#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
- R01:
- [42.75, 49.75, -123.75, -120.25]
- R02:
- [42.75, 49.75, -119.75, -112.75]
- R03:
- [37.25, 42.25, -123.75, -117.75]
- R04:
- [32.25, 37.25, -122.75, -114.75]
- R05:
- [31.25, 37.25, -113.75, -108.25]
- R06:
- [31.25, 37.25, -108.25, -99.75]
- R07:
- [37.25, 43.25, -110.25, -103.75]
- R08:
- [45.25, 49.25, -99.75, -90.25]
- R09:
- [34.75, 45.25, -99.75, -90.25]
- R10:
- [29.75, 34.75, -95.75, -84.75]
- R11:
- [38.25, 44.75, -89.75, -80.25]
- R12:
- [38.25, 44.75, -79.75, -70.25]
- R13:
- [30.75, 38.25, -83.75, -75.25]
- R14:
- [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig5_and_Fig6.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig5_and_Fig6.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig5_and_Fig6.yaml
deleted file mode 100644
index ef7cc9c..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig5_and_Fig6.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_tas_annual_mean_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1980-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 1
- month_end: 12
- average_each_year: True
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: rcmed
- data_name: CRU
- dataset_id: 10
- parameter_id: 38
-
- targets:
- data_source: local
- path: ../data/temp.*ncep.monavg.nc
- variable: temp
-
-number_of_metrics_and_plots: 2
-
-metrics1: Map_plot_bias_of_multiyear_climatology
-
-plots1:
- file_name: Fig5
- subplots_array: !!python/tuple [4,2]
-
-metrics2: Taylor_diagram_spatial_pattern_of_multiyear_climatology
-
-plots2:
- file_name: Fig6
-
-use_subregions: False
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig7_summer.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig7_summer.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig7_summer.yaml
deleted file mode 100644
index ddbce3b..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig7_summer.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_tas_JJA_mean_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1980-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 6
- month_end: 8
- average_each_year: True
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: rcmed
- data_name: CRU
- dataset_id: 10
- parameter_id: 38
-
- targets:
- data_source: local
- path: ../data/temp*ncep.monavg.nc
- variable: temp
-
-number_of_metrics_and_plots: 1
-
-metrics1: Portrait_diagram_subregion_interannual_variability
-
-plots1:
- file_name: Fig7_summer
-
-use_subregions: True
-
-subregions:
-#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
- R01:
- [42.75, 49.75, -123.75, -120.25]
- R02:
- [42.75, 49.75, -119.75, -112.75]
- R03:
- [37.25, 42.25, -123.75, -117.75]
- R04:
- [32.25, 37.25, -122.75, -114.75]
- R05:
- [31.25, 37.25, -113.75, -108.25]
- R06:
- [31.25, 37.25, -108.25, -99.75]
- R07:
- [37.25, 43.25, -110.25, -103.75]
- R08:
- [45.25, 49.25, -99.75, -90.25]
- R09:
- [34.75, 45.25, -99.75, -90.25]
- R10:
- [29.75, 34.75, -95.75, -84.75]
- R11:
- [38.25, 44.75, -89.75, -80.25]
- R12:
- [38.25, 44.75, -79.75, -70.25]
- R13:
- [30.75, 38.25, -83.75, -75.25]
- R14:
- [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig7_winter.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig7_winter.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig7_winter.yaml
deleted file mode 100644
index 38add9b..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig7_winter.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_tas_DJF_mean_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1980-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 12
- month_end: 2
- average_each_year: True
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: rcmed
- data_name: CRU
- dataset_id: 10
- parameter_id: 38
-
- targets:
- data_source: local
- path: ../data/temp*ncep.monavg.nc
- variable: temp
-
-number_of_metrics_and_plots: 1
-
-metrics1: Portrait_diagram_subregion_interannual_variability
-
-plots1:
- file_name: Fig7_winter
-
-use_subregions: True
-
-subregions:
-#subregion name (R01, R02, R03,....) followed by an array of boundaries [south, north, west, east]
- R01:
- [42.75, 49.75, -123.75, -120.25]
- R02:
- [42.75, 49.75, -119.75, -112.75]
- R03:
- [37.25, 42.25, -123.75, -117.75]
- R04:
- [32.25, 37.25, -122.75, -114.75]
- R05:
- [31.25, 37.25, -113.75, -108.25]
- R06:
- [31.25, 37.25, -108.25, -99.75]
- R07:
- [37.25, 43.25, -110.25, -103.75]
- R08:
- [45.25, 49.25, -99.75, -90.25]
- R09:
- [34.75, 45.25, -99.75, -90.25]
- R10:
- [29.75, 34.75, -95.75, -84.75]
- R11:
- [38.25, 44.75, -89.75, -80.25]
- R12:
- [38.25, 44.75, -79.75, -70.25]
- R13:
- [30.75, 38.25, -83.75, -75.25]
- R14:
- [24.25, 30.75, -83.75, -80.25]
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/NARCCAP_paper/Fig8_and_Fig9.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/NARCCAP_paper/Fig8_and_Fig9.yaml b/examples/configuration_file_examples/NARCCAP_paper/Fig8_and_Fig9.yaml
deleted file mode 100644
index d25ecb6..0000000
--- a/examples/configuration_file_examples/NARCCAP_paper/Fig8_and_Fig9.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-workdir: ./
-output_netcdf_filename: narccap_prec_annual_mean_1980-2003.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: False
- start_time: 1980-01-01
- end_time: 2003-12-31
- temporal_resolution: monthly
- month_start: 1
- month_end: 12
- average_each_year: True
-
-space:
- min_lat: 23.75
- max_lat: 49.75
- min_lon: -125.75
- max_lon: -66.75
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: rcmed
- data_name: CRU
- dataset_id: 10
- parameter_id: 37
-
- targets:
- data_source: local
- path: ../data/prec.*ncep.monavg.nc
- variable: prec
-
-number_of_metrics_and_plots: 2
-
-metrics1: Map_plot_bias_of_multiyear_climatology
-
-plots1:
- file_name: Fig8
- subplots_array: !!python/tuple [4,2]
-
-metrics2: Taylor_diagram_spatial_pattern_of_multiyear_climatology
-
-plots2:
- file_name: Fig9
-
-use_subregions: False
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/cmip5_SE_Asia_prec_DJF_mean_taylor_diagram_to_TRMM.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/cmip5_SE_Asia_prec_DJF_mean_taylor_diagram_to_TRMM.yaml b/examples/configuration_file_examples/cmip5_SE_Asia_prec_DJF_mean_taylor_diagram_to_TRMM.yaml
deleted file mode 100644
index 276e744..0000000
--- a/examples/configuration_file_examples/cmip5_SE_Asia_prec_DJF_mean_taylor_diagram_to_TRMM.yaml
+++ /dev/null
@@ -1,45 +0,0 @@
-workdir: ./
-output_netcdf_filename: cmip5_SE_Asia_prec_DJF_1998-2010.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: True
- start_time: 1981-01-01
- end_time: 2010-12-31
- temporal_resolution: monthly
- month_start: 12
- month_end: 2
- average_each_year: False
-
-space:
- min_lat: -15.14
- max_lat: 27.26
- min_lon: 89.26
- max_lon: 146.96
-
-regrid:
- regrid_on_reference: True
- regrid_dlat: 0.50
- regrid_dlon: 0.50
-
-datasets:
- reference:
- data_source: rcmed
- data_name: TRMM
- dataset_id: 3
- parameter_id: 36
-
- targets:
- data_source: local
- path: ./data/pr_Amon*
- variable: pr
-
-number_of_metrics_and_plots: 1
-
-metrics1: Taylor_diagram_spatial_pattern_of_multiyear_climatology
-
-plots1:
- file_name: cmip5_SE_ASIA_prec_DJF_mean_taylor_diagram_to_TRMM
-
-use_subregions: False
-
http://git-wip-us.apache.org/repos/asf/climate/blob/c6c9dd1c/examples/configuration_file_examples/cordex-AF_tasmax_annual_mean_bias_to_cru.yaml
----------------------------------------------------------------------
diff --git a/examples/configuration_file_examples/cordex-AF_tasmax_annual_mean_bias_to_cru.yaml b/examples/configuration_file_examples/cordex-AF_tasmax_annual_mean_bias_to_cru.yaml
deleted file mode 100644
index b1bbb78..0000000
--- a/examples/configuration_file_examples/cordex-AF_tasmax_annual_mean_bias_to_cru.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-workdir: ./
-output_netcdf_filename: cordex-AF_CRU_taxmax_monthly_1990-2007.nc
-
-# (RCMES will temporally subset data between month_start and month_end. If average_each_year is True (False), seasonal mean in each year is (not) calculated and used for metrics calculation.)
-time:
- maximum_overlap_period: True
- start_time: 1990-01-01
- end_time: 2007-12-31
- temporal_resolution: monthly
- month_start: 1
- month_end: 12
- average_each_year: False
-
-space:
- min_lat: -45.76
- max_lat: 42.24
- min_lon: -24.64
- max_lon: 60.28
-
-regrid:
- regrid_on_reference: False
- regrid_dlat: 0.44
- regrid_dlon: 0.44
-
-datasets:
- reference:
- data_source: rcmed
- data_name: CRU
- dataset_id: 10
- parameter_id: 39
-
- targets:
- data_source: local
- path: ./data/AFRICA*tasmax.nc
- variable: tasmax
-
-number_of_metrics_and_plots: 1
-
-metrics1: Map_plot_bias_of_multiyear_climatology
-
-plots1:
- file_name: cordex-AF_tasmax_annual_mean_bias_to_cru
- subplots_array: !!python/tuple [3,4]
-
-use_subregions: False
-