From a808627a34c6874c23466269632fcf89acf7a53f Mon Sep 17 00:00:00 2001 From: Peter Gleckler Date: Fri, 4 May 2018 15:05:31 -0700 Subject: [PATCH 01/84] added json_filename in mean climate driver --- src/python/pcmdi/scripts/driver/outputmetrics.py | 10 +++++++++- src/python/pcmdi/scripts/pcmdi_metrics_driver.py | 11 ++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/python/pcmdi/scripts/driver/outputmetrics.py b/src/python/pcmdi/scripts/driver/outputmetrics.py index d08bc1cbc..d5d7c0ce9 100644 --- a/src/python/pcmdi/scripts/driver/outputmetrics.py +++ b/src/python/pcmdi/scripts/driver/outputmetrics.py @@ -17,19 +17,27 @@ class OutputMetrics(object): - def __init__(self, parameter, var_name_long, obs_dict, sftlf): + def __init__(self, parameter, var_name_long, obs_dict, metrics_output_filename,sftlf): logging.getLogger("pcmdi_metrics").setLevel(LOG_LEVEL) self.parameter = parameter self.var_name_long = var_name_long self.obs_dict = obs_dict self.var = var_name_long.split('_')[0] self.sftlf = sftlf + self.metrics_output_filename = metrics_output_filename self.metrics_def_dictionary = {} self.metrics_dictionary = {} string_template = "%(variable)%(level)_%(target_grid_name)_" +\ "%(regrid_tool)_%(regrid_method)_metrics" + + if self.metrics_output_filename != '': + string_template = metrics_output_filename + + print('string_template is ========== ', string_template,' ---- ', metrics_output_filename) + + self.out_file = Base(self.parameter.metrics_output_path, string_template) self.regrid_method = '' diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py index e288b014c..0ef562254 100644 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py +++ b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py @@ -31,6 +31,7 @@ def __init__(self, parameter): self.regions_dict = {} self.var = '' self.output_metric = None + self.metrics_output_filename = parameter.metrics_output_filename self.region = '' self.sftlf = pcmdi_metrics.driver.dataset.DataSet.create_sftlf(self.parameter) self.default_regions = [] @@ -52,7 +53,7 @@ def run_diags(self): continue self.output_metric = OutputMetrics(self.parameter, self.var_name_long, - self.obs_dict, sftlf=self.sftlf) + self.obs_dict, self.metrics_output_filename, sftlf=self.sftlf) for region in self.regions_dict[self.var]: self.region = self.create_region(region) @@ -379,7 +380,15 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): 'test climatologies', required=False) +parser.add_argument( + '--metrics_output_filename', + dest='metrics_output_filename', + default = '', + help='Filename template for results json files', + required=False) parameter = parser.get_parameter(cmd_default_vars=False) + +print('params are ---- ', parameter.metrics_output_filename) driver = PMPDriver(parameter) driver.run_diags() From 4afa84db065a3394d90b19f6d880f3cfaea25a4b Mon Sep 17 00:00:00 2001 From: Peter Gleckler Date: Fri, 4 May 2018 15:46:46 -0700 Subject: [PATCH 02/84] added user_notes to parameter file --- src/python/io/base.py | 1 + src/python/pcmdi/scripts/driver/outputmetrics.py | 4 +++- src/python/pcmdi/scripts/pcmdi_metrics_driver.py | 13 +++++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/python/io/base.py b/src/python/io/base.py index 70cfd9b1f..8763e0490 100755 --- a/src/python/io/base.py +++ b/src/python/io/base.py @@ -211,6 +211,7 @@ def write(self, data, type='json', *args, **kwargs): data["json_structure"] = json_structure f = open(file_name, 'w') data["provenance"] = generateProvenance() +# data["user_notes"] = "BLAH" json.dump(data, f, cls=CDMSDomainsEncoder, *args, **kwargs) f.close() diff --git a/src/python/pcmdi/scripts/driver/outputmetrics.py b/src/python/pcmdi/scripts/driver/outputmetrics.py index d5d7c0ce9..1ffb1ef1f 100644 --- a/src/python/pcmdi/scripts/driver/outputmetrics.py +++ b/src/python/pcmdi/scripts/driver/outputmetrics.py @@ -17,7 +17,7 @@ class OutputMetrics(object): - def __init__(self, parameter, var_name_long, obs_dict, metrics_output_filename,sftlf): + def __init__(self, parameter, var_name_long, obs_dict, metrics_output_filename,user_notes,sftlf): logging.getLogger("pcmdi_metrics").setLevel(LOG_LEVEL) self.parameter = parameter self.var_name_long = var_name_long @@ -25,6 +25,7 @@ def __init__(self, parameter, var_name_long, obs_dict, metrics_output_filename,s self.var = var_name_long.split('_')[0] self.sftlf = sftlf self.metrics_output_filename = metrics_output_filename + self.user_notes = user_notes self.metrics_def_dictionary = {} self.metrics_dictionary = {} @@ -54,6 +55,7 @@ def setup_metrics_dictionary(self): self.metrics_def_dictionary = collections.OrderedDict() self.metrics_dictionary = collections.OrderedDict() self.metrics_dictionary["DISCLAIMER"] = self.open_disclaimer() + self.metrics_dictionary["USER_NOTES"] = self.user_notes self.metrics_dictionary["RESULTS"] = collections.OrderedDict() self.metrics_dictionary["Variable"] = {} diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py index 0ef562254..4ff76478f 100644 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py +++ b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py @@ -31,7 +31,9 @@ def __init__(self, parameter): self.regions_dict = {} self.var = '' self.output_metric = None - self.metrics_output_filename = parameter.metrics_output_filename + self.metrics_output_filename = parameter.metrics_output_filename + self.user_notes = parameter.user_notes + self.region = '' self.sftlf = pcmdi_metrics.driver.dataset.DataSet.create_sftlf(self.parameter) self.default_regions = [] @@ -53,7 +55,7 @@ def run_diags(self): continue self.output_metric = OutputMetrics(self.parameter, self.var_name_long, - self.obs_dict, self.metrics_output_filename, sftlf=self.sftlf) + self.obs_dict, self.metrics_output_filename, self.user_notes, sftlf=self.sftlf) for region in self.regions_dict[self.var]: self.region = self.create_region(region) @@ -387,6 +389,13 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): help='Filename template for results json files', required=False) +parser.add_argument( + '--user_notes', + dest='user_notes', + default = '', + help='Provide a short description to help identify this run of the PMP mean climate.', + required=False) + parameter = parser.get_parameter(cmd_default_vars=False) print('params are ---- ', parameter.metrics_output_filename) From 60bcb68462539ba362c15416092afd8cd378fe37 Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 7 May 2018 14:34:03 -0700 Subject: [PATCH 03/84] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index d3a7e4e62..7da9d184f 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ + +
+ PCMDI metrics package (PMP) ====== [![stable version](https://img.shields.io/badge/stable%20version-1.1.2-brightgreen.svg)](https://github.com/PCMDI/pcmdi_metrics/releases/tag/1.1.2) From 979fe41906a935e4791d82e17accc1b7b2383f77 Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 7 May 2018 14:34:29 -0700 Subject: [PATCH 04/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7da9d184f..67aff2330 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - +
PCMDI metrics package (PMP) From 7a046d6cb910613031db294a4ee2b142dd17c5e3 Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 7 May 2018 14:36:05 -0700 Subject: [PATCH 05/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67aff2330..f418e94bb 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - +
PCMDI metrics package (PMP) From 92a8994764679ffb45561f688aa691e8d4518e2a Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 7 May 2018 14:36:29 -0700 Subject: [PATCH 06/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f418e94bb..59e00015c 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - +
PCMDI metrics package (PMP) From 7e82f448ea54d46b735891327fe8ea24d1af369d Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 7 May 2018 14:38:00 -0700 Subject: [PATCH 07/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 59e00015c..9f217bc75 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - +
PCMDI metrics package (PMP) From 305198473d991ca192edc4559b4c11f2429ca61b Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 7 May 2018 14:38:27 -0700 Subject: [PATCH 08/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f217bc75..28a042d0b 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - +
PCMDI metrics package (PMP) From c127662ba3cc64fc2fc17441d7df5ff55fa9068e Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 7 May 2018 14:38:50 -0700 Subject: [PATCH 09/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 28a042d0b..59d25213d 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - +
PCMDI metrics package (PMP) From 1f4d60ea5a3f8dd01129bcf631dc69209b41ddbb Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Mon, 7 May 2018 15:11:50 -0700 Subject: [PATCH 10/84] Issue new baselines (#545) * newer blines * mac param files * ok all tests pass on my mac * trying to trigger circleci as well * just a space to trigger ci * looks like we need anonymous for travis * better url * newest ffmpeg seems to create issues: * circleci add left over from vcs config file, we are not making docs at this time * travis mac keep timing out on download, turning off --- .circleci/config.yml | 98 +++ .travis.yml | 11 +- ci-support/checkout_merge_commit.sh | 29 + share/test_data_files.txt | 2 +- tests/graphics/testParallelCoordinates.png | Bin 116226 -> 117108 bytes .../tas_2.5x2.5_regrid2_linear_metrics.json | 50 +- .../tos_2.5x2.5_esmf_linear_metrics.json | 265 ++++--- .../tos_2.5x2.5_esmf_linear_metrics.json.mac | 574 ++++++++++++++ .../tas_2.5x2.5_esmf_linear_metrics.json | 38 +- .../tas_2.5x2.5_esmf_linear_metrics.json.mac | 740 ------------------ .../tas_2.5x2.5_regrid2_linear_metrics.json | 200 +++-- .../tos_2.5x2.5_esmf_linear_metrics.json | 265 ++++--- .../tos_2.5x2.5_esmf_linear_metrics.json.mac | 574 ++++++++++++++ .../tos_2.5x2.5_esmf_linear_metrics.json | 261 +++--- .../tos_2.5x2.5_esmf_linear_metrics.json.mac | 564 +++++++++++++ ...ta-200_2.5x2.5_regrid2_linear_metrics.json | 69 +- .../tas_2.5x2.5_esmf_linear_metrics.json | 69 +- .../tas_2.5x2.5_regrid2_linear_metrics.json | 140 ++-- .../sos_2.5x2.5_esmf_linear_metrics.json | 38 +- .../sos_2.5x2.5_esmf_linear_metrics.json.mac | 252 +++--- .../tas_2.5x2.5_esmf_linear_metrics.json | 69 +- tests/test_pmp_diurnal.py | 8 +- 22 files changed, 2724 insertions(+), 1592 deletions(-) create mode 100644 .circleci/config.yml create mode 100755 ci-support/checkout_merge_commit.sh create mode 100644 tests/pcmdi/customRegions/tos_2.5x2.5_esmf_linear_metrics.json.mac delete mode 100644 tests/pcmdi/gensftlfTest/tas_2.5x2.5_esmf_linear_metrics.json.mac create mode 100644 tests/pcmdi/installationTest/tos_2.5x2.5_esmf_linear_metrics.json.mac create mode 100644 tests/pcmdi/keep_going_on_error_varnameTest/tos_2.5x2.5_esmf_linear_metrics.json.mac diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..7739ef05f --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,98 @@ +version: r + +checkout: + post: + - ./ci-support/checkout_merge_commit.sh + +aliases: + + - &setup_miniconda + name: setup_miniconda + command: | + mkdir -p workspace + git clone -b validateNightly git@github.com:CDAT/cdat workspace/cdat + ls workspace/cdat + # following will install miniconda3 under $WORKDIR/miniconda/bin + python workspace/cdat/scripts/install_miniconda.py -w $WORKDIR -p 'py3' + + - &create_conda_env + name: create_conda_env + command: | + export PATH=$WORKDIR/miniconda/bin:$PATH + conda config --set always_yes yes --set changeps1 no + conda update -y -q conda + conda config --set anaconda_upload no + conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons cdp mesalib image-compare flake8 nose cia "proj4<5" "python<3" "ffmpeg<4" + conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons cdp mesalib image-compare flake8 nose cia "proj4<5" "python>3" "ffmpeg<4" + + - &setup_pmp + name: setup_pmp + command: | + export PATH=$WORKDIR/miniconda/bin:$PATH + source activate py2 + python setup.py install + source activate py3 + python setup.py install + + - &run_pmp_tests + name: run_pmp_tests + command: | + export PATH=$WORKDIR/miniconda/bin:$PATH + export UVCDAT_ANONYMOUS_LOG=False + export UVCDAT_SETUP_PATH=${HOME} + source activate py2 + python run_tests.py -H -v2 + RESULT=$? + echo "py2 test command exit result:",$RESULT + source activate py3 + python run_tests.py -H -v2 + RESULT=$(( $RESULT + $? )) + cd .. + echo "py3 test command exit result:",$RESULT + if [ $RESULT -eq 0 -a $CIRCLE_BRANCH == "master" ]; then conda install -n root conda-build anaconda-client ; fi + # if [ $RESULT -eq 0 -a $CIRCLE_BRANCH == "master" ]; then bash ./ci-support/conda_upload.sh ; fi + + +jobs: + macos_pmp: + macos: + xcode: "9.2.0" + environment: + WORKDIR: "workspace/test_macos_pmp" + steps: + - checkout + - run: *setup_miniconda + - run: *create_conda_env + - run: *setup_pmp + - run: *run_pmp_tests + - store_artifacts: + path: tests_html + destination: tests_html + - store_artifacts: + path: tests_png + destination: tests_png + + linux_pmp: + machine: + image: circleci/classic:latest + environment: + WORKDIR: "workspace/test_linux_pmp" + steps: + - checkout + - run: *setup_miniconda + - run: *create_conda_env + - run: *setup_pmp + - run: *run_pmp_tests + - store_artifacts: + path: tests_html + destination: tests_html + - store_artifacts: + path: tests_png + destination: tests_png + +workflows: + version: 2 + nightly: + jobs: + - macos_pmp + - linux_pmp diff --git a/.travis.yml b/.travis.yml index 0ee635f7f..0ce99ac21 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ os: - linux - - osx + # - osx language: python - "2.7" @@ -16,17 +16,18 @@ before_install: - conda update -y -q conda script: - - conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons cdp mesalib image-compare flake8 nose cia "proj4<5" "python<3" - - conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons cdp mesalib image-compare flake8 nose cia "proj4<5" "python>3" + - export UVCDAT_ANONYMOUS_LOG="False" + - conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons cdp mesalib image-compare flake8 nose cia "proj4<5" "python<3" "ffmpeg<4" + - conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons cdp mesalib image-compare flake8 nose cia "proj4<5" "python>3" "ffmpeg<4" # Useful for debugging any issues with conda - conda info -a - source activate py2 - python setup.py install - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then python run_tests.py -v2 ; fi + - python run_tests.py -v2 - git clean -fd - source activate py3 - python setup.py install - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then python run_tests.py -v2 ; fi + - python run_tests.py -v2 - source deactivate after_success: diff --git a/ci-support/checkout_merge_commit.sh b/ci-support/checkout_merge_commit.sh new file mode 100755 index 000000000..0d82d172e --- /dev/null +++ b/ci-support/checkout_merge_commit.sh @@ -0,0 +1,29 @@ +#!/bin/bash + + +# Add `master` branch to the update list. +# Otherwise CircleCI will give us a cached one. +FETCH_REFS="+master:master" + +# Update PR refs for testing. +if [[ -n "${CIRCLE_PR_NUMBER}" ]] +then + FETCH_REFS="${FETCH_REFS} +refs/pull/${CIRCLE_PR_NUMBER}/head:pr/${CIRCLE_PR_NUMBER}/head" + FETCH_REFS="${FETCH_REFS} +refs/pull/${CIRCLE_PR_NUMBER}/merge:pr/${CIRCLE_PR_NUMBER}/merge" +fi + +# Retrieve the refs. +git fetch -u origin ${FETCH_REFS} + +# Checkout the PR merge ref. +if [[ -n "${CIRCLE_PR_NUMBER}" ]] +then + git checkout -qf "pr/${CIRCLE_PR_NUMBER}/merge" +fi + +# Check for merge conflicts. +if [[ -n "${CIRCLE_PR_NUMBER}" ]] +then + git branch --merged | grep master > /dev/null + git branch --merged | grep "pr/${CIRCLE_PR_NUMBER}/head" > /dev/null +fi diff --git a/share/test_data_files.txt b/share/test_data_files.txt index 02c0c4873..0d098a998 100644 --- a/share/test_data_files.txt +++ b/share/test_data_files.txt @@ -1,2 +1,2 @@ -http://uvcdat.llnl.gov/cdat/pmp +https://cdat.llnl.gov/cdat/pmp 60582c6986451ffd4925a303c4f0040a sample_data_pr_CMCC.nc diff --git a/tests/graphics/testParallelCoordinates.png b/tests/graphics/testParallelCoordinates.png index c236b76a2a95b572d6f2f7c2efe15ac0c2a57646..c88c1702a91bd2c3a8f202df41bf74885dc3d4c7 100644 GIT binary patch literal 117108 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∈1-WcP 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

XGp*b1_tk`AQ?(-%l`aL%+&xMK3DD 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 Roqm9P>gnp|vd$@?2>@s3L5=_b literal 116226 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�ZFsF?OR`s5okF7W(L3rx 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 IC|iX5AA!vLRR910 diff --git a/tests/pcmdi/customRegions/tas_2.5x2.5_regrid2_linear_metrics.json b/tests/pcmdi/customRegions/tas_2.5x2.5_regrid2_linear_metrics.json index 6f7024a5d..2fb9a6243 100644 --- a/tests/pcmdi/customRegions/tas_2.5x2.5_regrid2_linear_metrics.json +++ b/tests/pcmdi/customRegions/tas_2.5x2.5_regrid2_linear_metrics.json @@ -668,7 +668,7 @@ }, "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -681,7 +681,7 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, @@ -701,7 +701,7 @@ }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -809,47 +809,43 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "4.13.0-19-generic", + "Version": "4.13.0-39-generic", "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/home/doutriaux1/anaconda2/envs/nightly2/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/region_specs_test.py", - "date": "2017-12-21 15:30:29", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/region_specs_test.py", + "date": "2018-04-26 11:08:26", "conda": { - "Platform": "linux-64", - "Version": "4.3.30", - "IsPrivate": "False", - "envVersion": "4.3.30", - "buildVersion": "3.0.28", + "Version": "4.5.0", + "buildVersion": "3.7.2", "PythonVersion": "2.7.14.final.0", - "RootEnvironment": "/home/doutriaux1/anaconda2 (writable)", - "DefaultEnvironment": "/home/doutriaux1/anaconda2/envs/nightly2" + "Platform": "linux-64" }, "packages": { - "cdms": "2.12.2017.11.30.06.06.14b9b9380c14680498a0ba8e9aefb4c84d2756be", - "CDP": "1.1.0", - "cdtime": "2017.11.15", - "cdutil": "2.12.2017.11.16.21.46.e717f782e07d0a187f2b616a408103af20ceb57f", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2017.11.15", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", "python": "2.7.14", - "matplotlib": "2.1.1", + "matplotlib": "2.2.2", "mesalib": "17.2.0", - "numpy": "1.13.3", - "vcs": "2.12.2017.12.14.17.01.99491e457b26e4e5fbb875e5ba75e7265f5e5b1b", - "vtk": "7.1.0.2.12", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "PMP": "ga6c40fd", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { "vendor": "X.Org", - "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-19-generic, LLVM 5.0.0)", - "version": "3.0 Mesa 17.2.2", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", "shading language version": "1.30", "GLX": { "client": { diff --git a/tests/pcmdi/customRegions/tos_2.5x2.5_esmf_linear_metrics.json b/tests/pcmdi/customRegions/tos_2.5x2.5_esmf_linear_metrics.json index 90445301a..64b32f392 100644 --- a/tests/pcmdi/customRegions/tos_2.5x2.5_esmf_linear_metrics.json +++ b/tests/pcmdi/customRegions/tos_2.5x2.5_esmf_linear_metrics.json @@ -45,7 +45,7 @@ "ann": "299.282", "son": "299.089", "mam": "299.697", - "jja": "299.085", + "jja": "299.086", "djf": "299.264" }, "mean_xy": { @@ -69,7 +69,7 @@ "ann": "1.304" }, "rms_y": { - "ann": "0.711" + "ann": "0.713" }, "rmsc_xy": { "ann": "0.925", @@ -80,10 +80,10 @@ }, "some_custom": 1.5, "std-obs_xy": { - "ann": "2.492", + "ann": "2.493", "son": "3.043", "mam": "2.567", - "jja": "2.987", + "jja": "2.988", "djf": "2.401" }, "std-obs_xy_devzm": { @@ -109,7 +109,7 @@ "global": { "bias_xy": { "ann": "-0.155", - "son": "-0.408", + "son": "-0.407", "mam": "-0.009", "jja": "-0.277", "djf": "0.078" @@ -121,7 +121,7 @@ "jja": "0.99", "djf": "0.98" }, - "custom_ref_min": 271.27384426614753, + "custom_ref_min": 271.2738442661475, "mae_xy": { "ann": "1.142", "son": "1.144", @@ -130,21 +130,21 @@ "djf": "1.444" }, "mean-obs_xy": { - "ann": "291.585", - "son": "291.443", - "mam": "291.723", - "jja": "291.584", - "djf": "291.616" + "ann": "291.581", + "son": "291.440", + "mam": "291.719", + "jja": "291.582", + "djf": "291.612" }, "mean_xy": { - "ann": "291.397", - "son": "290.973", - "mam": "291.698", + "ann": "291.399", + "son": "290.975", + "mam": "291.700", "jja": "291.237", - "djf": "291.686" + "djf": "291.689" }, "rms_devzm": { - "ann": "0.906" + "ann": "0.907" }, "rms_xy": { "ann": "1.418", @@ -157,10 +157,10 @@ "ann": "1.625" }, "rms_y": { - "ann": "1.266" + "ann": "1.267" }, "rmsc_xy": { - "ann": "1.410", + "ann": "1.409", "son": "1.407", "mam": "1.627", "jja": "1.317", @@ -168,27 +168,27 @@ }, "some_custom": 1.5, "std-obs_xy": { - "ann": "9.823", - "son": "9.999", - "mam": "10.088", - "jja": "9.902", - "djf": "9.798" + "ann": "9.825", + "son": "10.000", + "mam": "10.090", + "jja": "9.904", + "djf": "9.801" }, "std-obs_xy_devzm": { - "ann": "1.741" + "ann": "1.742" }, "std-obs_xyt": { - "ann": "9.982" + "ann": "9.984" }, "std_xy": { - "ann": "9.297", + "ann": "9.298", "son": "9.667", "mam": "9.596", - "jja": "9.526", - "djf": "9.141" + "jja": "9.527", + "djf": "9.140" }, "std_xy_devzm": { - "ann": "1.696" + "ann": "1.695" }, "std_xyt": { "ann": "9.535" @@ -196,11 +196,11 @@ }, "NHEX": { "bias_xy": { - "ann": "-1.306", - "son": "-1.560", - "mam": "-1.261", - "jja": "-1.075", - "djf": "-1.339" + "ann": "-1.304", + "son": "-1.558", + "mam": "-1.260", + "jja": "-1.071", + "djf": "-1.338" }, "cor_xy": { "ann": "0.986", @@ -209,46 +209,46 @@ "jja": "0.99", "djf": "0.97" }, - "custom_ref_min": 271.27384426614753, + "custom_ref_min": 271.2738442661475, "mae_xy": { - "ann": "1.530", - "son": "1.749", + "ann": "1.529", + "son": "1.748", "mam": "1.573", - "jja": "1.360", - "djf": "1.746" + "jja": "1.358", + "djf": "1.745" }, "mean-obs_xy": { "ann": "284.145", "son": "286.171", - "mam": "281.777", - "jja": "286.811", - "djf": "281.852" + "mam": "281.778", + "jja": "286.814", + "djf": "281.851" }, "mean_xy": { - "ann": "282.824", - "son": "284.589", - "mam": "280.493", - "jja": "285.651", - "djf": "280.516" + "ann": "282.822", + "son": "284.586", + "mam": "280.490", + "jja": "285.644", + "djf": "280.520" }, "rms_devzm": { - "ann": "1.153" + "ann": "1.154" }, "rms_xy": { - "ann": "1.874", - "son": "2.092", + "ann": "1.873", + "son": "2.091", "mam": "1.984", - "jja": "1.732", - "djf": "2.181" + "jja": "1.729", + "djf": "2.180" }, "rms_xyt": { - "ann": "2.048" + "ann": "2.047" }, "rms_y": { "ann": "1.550" }, "rmsc_xy": { - "ann": "1.344", + "ann": "1.345", "son": "1.395", "mam": "1.532", "jja": "1.357", @@ -256,39 +256,39 @@ }, "some_custom": 1.5, "std-obs_xy": { - "ann": "7.951", - "son": "8.620", - "mam": "7.337", - "jja": "8.740", + "ann": "7.952", + "son": "8.621", + "mam": "7.338", + "jja": "8.743", "djf": "7.365" }, "std-obs_xy_devzm": { - "ann": "2.436" + "ann": "2.439" }, "std-obs_xyt": { - "ann": "8.506" + "ann": "8.508" }, "std_xy": { - "ann": "8.167", - "son": "8.835", - "mam": "7.569", - "jja": "8.921", - "djf": "7.624" + "ann": "8.170", + "son": "8.840", + "mam": "7.573", + "jja": "8.923", + "djf": "7.627" }, "std_xy_devzm": { - "ann": "2.516" + "ann": "2.515" }, "std_xyt": { - "ann": "8.695" + "ann": "8.697" } }, "SHEX": { "bias_xy": { "ann": "1.214", - "son": "0.609", + "son": "0.610", "mam": "1.597", - "jja": "0.657", - "djf": "2.002" + "jja": "0.658", + "djf": "2.001" }, "cor_xy": { "ann": "0.992", @@ -302,25 +302,25 @@ "ann": "1.374", "son": "1.035", "mam": "1.637", - "jja": "1.039", - "djf": "2.060" + "jja": "1.040", + "djf": "2.059" }, "mean-obs_xy": { - "ann": "282.245", - "son": "280.974", - "mam": "283.288", - "jja": "281.091", - "djf": "283.651" + "ann": "282.242", + "son": "280.972", + "mam": "283.285", + "jja": "281.088", + "djf": "283.648" }, "mean_xy": { - "ann": "283.465", - "son": "281.588", - "mam": "284.892", - "jja": "281.757", - "djf": "285.658" + "ann": "283.468", + "son": "281.591", + "mam": "284.895", + "jja": "281.760", + "djf": "285.660" }, "rms_devzm": { - "ann": "0.806" + "ann": "0.807" }, "rms_xy": { "ann": "1.613", @@ -336,38 +336,38 @@ "ann": "1.384" }, "rmsc_xy": { - "ann": "1.063", - "son": "1.201", + "ann": "1.062", + "son": "1.200", "mam": "1.032", "jja": "1.189", - "djf": "1.336" + "djf": "1.337" }, "some_custom": 1.5, "std-obs_xy": { - "ann": "7.167", - "son": "6.772", - "mam": "7.588", - "jja": "6.711", - "djf": "7.637" + "ann": "7.168", + "son": "6.773", + "mam": "7.589", + "jja": "6.712", + "djf": "7.639" }, "std-obs_xy_devzm": { "ann": "1.545" }, "std-obs_xyt": { - "ann": "7.319" + "ann": "7.320" }, "std_xy": { - "ann": "6.595", - "son": "6.445", - "mam": "6.990", - "jja": "6.436", - "djf": "6.650" + "ann": "6.598", + "son": "6.448", + "mam": "6.993", + "jja": "6.438", + "djf": "6.653" }, "std_xy_devzm": { "ann": "1.591" }, "std_xyt": { - "ann": "6.941" + "ann": "6.943" } } } @@ -397,7 +397,7 @@ "RegionalMasking": { "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -406,13 +406,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -520,47 +520,54 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "2.6.32-696.el6.x86_64", - "Name": "crunchy.llnl.gov" + "Version": "4.13.0-39-generic", + "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/export/doutriaux1/miniconda2/envs/pmp/bin/pcmdi_metrics_driver.py -p /export/doutriaux1/git/pcmdi_metrics/tests/pcmdi/region_specs_test.py", - "date": "2017-06-09 14:14:26", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/region_specs_test.py", + "date": "2018-04-26 11:07:12", "conda": { - "Platform": "linux-64", - "Version": "4.3.11", - "IsPrivate": "False", - "envVersion": "4.3.11", - "buildVersion": "2.1.10", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/export/doutriaux1/miniconda2 (writable)", - "DefaultEnvironment": "/export/doutriaux1/miniconda2/envs/pmp" + "Version": "4.5.0", + "buildVersion": "3.7.2", + "PythonVersion": "2.7.14.final.0", + "Platform": "linux-64" }, "packages": { - "cdms": "2.10", - "CDP": "1.0.3", - "cdtime": "2.10", - "cdutil": "2.10", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.10", - "mesalib": "17.0.3", - "numpy": "1.12.1", - "python": "2.7.13", - "vcs": "2.10", - "vtk": "7.1.0.2.10", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "matplotlib": null, - "PMP": "ga507630", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { + "vendor": "X.Org", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", + "shading language version": "1.30", "GLX": { - "client": {}, - "server": {} + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } } } } diff --git a/tests/pcmdi/customRegions/tos_2.5x2.5_esmf_linear_metrics.json.mac b/tests/pcmdi/customRegions/tos_2.5x2.5_esmf_linear_metrics.json.mac new file mode 100644 index 000000000..5adbb40d8 --- /dev/null +++ b/tests/pcmdi/customRegions/tos_2.5x2.5_esmf_linear_metrics.json.mac @@ -0,0 +1,574 @@ +{ + "DISCLAIMER": "USER-NOTICE: The results in this file were produced with the PMP v1.1 (https://github.com/PCMDI/pcmdi_metrics). They are for research purposes only. They are subject to ongoing quality control and change as the PMP software advances, interpolation methods are modified, observational data sets are updated, problems with model data are corrected, etc. Use of these results for research (presentation, publications, etc.) should reference: Gleckler, P. J., C. Doutriaux, P. J. Durack, K. E. Taylor, Y. Zhang, and D. N. Williams, E. Mason, and J. Servonnat (2016), A more powerful reality test for climate models, Eos, 97, doi:10.1029/2016EO051663. If any problems are uncovered in using these results please contact the PMP development team at pcmdi-metrics@llnl.gov\n", + "RESULTS": { + "GFDL-ESM2G": { + "SimulationDescription": { + "Center": "N/A", + "ModellingGroup": "NOAA GFDL", + "ModelFreeSpace": "N/A", + "MIPTable": "Omon", + "creation_date": "2012-01-10T20:19:59Z", + "ModelActivity": "CMIP5", + "Experiment": "historical", + "Realization": "r1i1p1", + "Model": "GFDL-ESM2G", + "Login": "N/A", + "SimTrackingDate": "2012-01-10T20:19:59Z" + }, + "default": { + "source": "UKMETOFFICE-HadISST-v1-1", + "r1i1p1": { + "TROPICS": { + "bias_xy": { + "ann": "-0.591", + "son": "-0.641", + "mam": "-0.552", + "jja": "-0.572", + "djf": "-0.599" + }, + "cor_xy": { + "ann": "0.928", + "son": "0.93", + "mam": "0.90", + "jja": "0.94", + "djf": "0.90" + }, + "custom_ref_min": 280.54689315404653, + "mae_xy": { + "ann": "0.888", + "son": "1.021", + "mam": "0.999", + "jja": "0.946", + "djf": "0.995" + }, + "mean-obs_xy": { + "ann": "299.283", + "son": "299.089", + "mam": "299.698", + "jja": "299.085", + "djf": "299.265" + }, + "mean_xy": { + "ann": "298.664", + "son": "298.405", + "mam": "299.128", + "jja": "298.476", + "djf": "298.654" + }, + "rms_devzm": { + "ann": "0.874" + }, + "rms_xy": { + "ann": "1.098", + "son": "1.285", + "mam": "1.300", + "jja": "1.195", + "djf": "1.240" + }, + "rms_xyt": { + "ann": "1.305" + }, + "rms_y": { + "ann": "0.709" + }, + "rmsc_xy": { + "ann": "0.926", + "son": "1.114", + "mam": "1.177", + "jja": "1.049", + "djf": "1.085" + }, + "some_custom": 1.5, + "std-obs_xy": { + "ann": "2.493", + "son": "3.042", + "mam": "2.568", + "jja": "2.986", + "djf": "2.402" + }, + "std-obs_xy_devzm": { + "ann": "1.569" + }, + "std-obs_xyt": { + "ann": "2.835" + }, + "std_xy": { + "ann": "2.315", + "son": "3.063", + "mam": "2.615", + "jja": "2.942", + "djf": "2.422" + }, + "std_xy_devzm": { + "ann": "1.414" + }, + "std_xyt": { + "ann": "2.887" + } + }, + "global": { + "bias_xy": { + "ann": "-0.155", + "son": "-0.408", + "mam": "-0.009", + "jja": "-0.277", + "djf": "0.077" + }, + "cor_xy": { + "ann": "0.991", + "son": "0.99", + "mam": "0.99", + "jja": "0.99", + "djf": "0.98" + }, + "custom_ref_min": 271.2738442661475, + "mae_xy": { + "ann": "1.142", + "son": "1.144", + "mam": "1.288", + "jja": "1.043", + "djf": "1.444" + }, + "mean-obs_xy": { + "ann": "291.581", + "son": "291.440", + "mam": "291.719", + "jja": "291.582", + "djf": "291.612" + }, + "mean_xy": { + "ann": "291.396", + "son": "290.973", + "mam": "291.697", + "jja": "291.238", + "djf": "291.684" + }, + "rms_devzm": { + "ann": "0.907" + }, + "rms_xy": { + "ann": "1.418", + "son": "1.465", + "mam": "1.627", + "jja": "1.347", + "djf": "1.835" + }, + "rms_xyt": { + "ann": "1.625" + }, + "rms_y": { + "ann": "1.265" + }, + "rmsc_xy": { + "ann": "1.410", + "son": "1.407", + "mam": "1.627", + "jja": "1.318", + "djf": "1.833" + }, + "some_custom": 1.5, + "std-obs_xy": { + "ann": "9.822", + "son": "9.998", + "mam": "10.088", + "jja": "9.901", + "djf": "9.798" + }, + "std-obs_xy_devzm": { + "ann": "1.741" + }, + "std-obs_xyt": { + "ann": "9.982" + }, + "std_xy": { + "ann": "9.299", + "son": "9.669", + "mam": "9.597", + "jja": "9.529", + "djf": "9.142" + }, + "std_xy_devzm": { + "ann": "1.694" + }, + "std_xyt": { + "ann": "9.537" + } + }, + "NHEX": { + "bias_xy": { + "ann": "-1.305", + "son": "-1.559", + "mam": "-1.260", + "jja": "-1.073", + "djf": "-1.339" + }, + "cor_xy": { + "ann": "0.986", + "son": "0.99", + "mam": "0.98", + "jja": "0.99", + "djf": "0.97" + }, + "custom_ref_min": 271.2738442661475, + "mae_xy": { + "ann": "1.530", + "son": "1.748", + "mam": "1.572", + "jja": "1.361", + "djf": "1.745" + }, + "mean-obs_xy": { + "ann": "284.155", + "son": "286.183", + "mam": "281.784", + "jja": "286.825", + "djf": "281.859" + }, + "mean_xy": { + "ann": "282.816", + "son": "284.581", + "mam": "280.485", + "jja": "285.641", + "djf": "280.510" + }, + "rms_devzm": { + "ann": "1.154" + }, + "rms_xy": { + "ann": "1.874", + "son": "2.092", + "mam": "1.983", + "jja": "1.732", + "djf": "2.180" + }, + "rms_xyt": { + "ann": "2.048" + }, + "rms_y": { + "ann": "1.549" + }, + "rmsc_xy": { + "ann": "1.345", + "son": "1.395", + "mam": "1.532", + "jja": "1.359", + "djf": "1.721" + }, + "some_custom": 1.5, + "std-obs_xy": { + "ann": "7.949", + "son": "8.619", + "mam": "7.334", + "jja": "8.742", + "djf": "7.360" + }, + "std-obs_xy_devzm": { + "ann": "2.439" + }, + "std-obs_xyt": { + "ann": "8.506" + }, + "std_xy": { + "ann": "8.167", + "son": "8.836", + "mam": "7.570", + "jja": "8.920", + "djf": "7.626" + }, + "std_xy_devzm": { + "ann": "2.515" + }, + "std_xyt": { + "ann": "8.695" + } + }, + "SHEX": { + "bias_xy": { + "ann": "1.213", + "son": "0.608", + "mam": "1.597", + "jja": "0.657", + "djf": "2.001" + }, + "cor_xy": { + "ann": "0.992", + "son": "0.98", + "mam": "0.99", + "jja": "0.98", + "djf": "0.99" + }, + "custom_ref_min": 271.2935035335274, + "mae_xy": { + "ann": "1.374", + "son": "1.035", + "mam": "1.637", + "jja": "1.039", + "djf": "2.059" + }, + "mean-obs_xy": { + "ann": "282.248", + "son": "280.977", + "mam": "283.290", + "jja": "281.092", + "djf": "283.654" + }, + "mean_xy": { + "ann": "283.458", + "son": "281.581", + "mam": "284.885", + "jja": "281.751", + "djf": "285.650" + }, + "rms_devzm": { + "ann": "0.806" + }, + "rms_xy": { + "ann": "1.613", + "son": "1.346", + "mam": "1.901", + "jja": "1.359", + "djf": "2.407" + }, + "rms_xyt": { + "ann": "1.854" + }, + "rms_y": { + "ann": "1.383" + }, + "rmsc_xy": { + "ann": "1.063", + "son": "1.200", + "mam": "1.032", + "jja": "1.190", + "djf": "1.338" + }, + "some_custom": 1.5, + "std-obs_xy": { + "ann": "7.168", + "son": "6.773", + "mam": "7.589", + "jja": "6.712", + "djf": "7.638" + }, + "std-obs_xy_devzm": { + "ann": "1.545" + }, + "std-obs_xyt": { + "ann": "7.320" + }, + "std_xy": { + "ann": "6.591", + "son": "6.439", + "mam": "6.987", + "jja": "6.432", + "djf": "6.646" + }, + "std_xy_devzm": { + "ann": "1.589" + }, + "std_xyt": { + "ann": "6.937" + } + } + } + }, + "InputRegionMD5": "e3b7143d72d6b4824e20dabd80acd869", + "InputClimatologyFileName": "tos_GFDL-ESM2G_Omon_historical_r1i1p1_198501-200512-clim.nc", + "units": "K", + "InputClimatologyMD5": "974a3339d34fcdd6a68d6e135f72cd78", + "InputRegionFileName": "sftlf_GFDL-ESM2G.nc" + } + }, + "Variable": { + "id": "tos" + }, + "json_version": 3.0, + "References": { + "default": { + "RefName": "UKMETOFFICE-HadISST-v1-1", + "MD5sum": "41833b403cad7052773dd933d1798a14", + "period": "198002-200501", + "filename": "tos_pcmdi-metrics_Omon_UKMETOFFICE-HadISST-v1-1_198002-200501-clim.nc", + "shape": "(12, 180, 360)", + "CMIP_CMOR_TABLE": "Omon", + "RefTrackingDate": "Wed Jan 15 10:57:20 2014" + } + }, + "RegionalMasking": { + "TROPICS": { + "domain": { + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" + }, + "id": "TROPICS" + }, + "global": { + "id": "global" + }, + "NHEX": { + "domain": { + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" + }, + "id": "NHEX" + }, + "SHEX": { + "domain": { + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" + }, + "id": "SHEX" + } + }, + "GridInfo": { + "GridResolution": [ + 72, + 144 + ], + "GridName": "2.5x2.5", + "RegridMethod": "linear", + "RegridTool": "esmf" + }, + "METRICS": { + "rms_xyt": { + "Abstract": "Compute Spatial and Temporal Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatio-Temporal Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "rms_xy": { + "Abstract": "Compute Spatial Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "rmsc_xy": { + "Abstract": "Compute Centered Spatial Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "bias_xy": { + "Abstract": "Compute Full Average of Model - Observation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Bias" + }, + "mae_xy": { + "Abstract": "Compute Full Average of Absolute Difference Between Model And Observation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Mean Absolute Error" + }, + "cor_xy": { + "Abstract": "Compute Spatial Correlation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Correlation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "mean_xy": { + "Abstract": "Area Mean (area weighted)", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Mean" + }, + "std_xy": { + "Abstract": "Compute Spatial Standard Deviation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Standard Deviation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "std_xyt": { + "Abstract": "Compute Space-Time Standard Deviation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial-temporal Standard Deviation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "seasonal_mean": { + "Abstract": "Compute Seasonal Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Seasonal Mean", + "Comments": "Assumes input are 12 months climatology" + }, + "annual_mean": { + "Abstract": "Compute Annual Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Annual Mean", + "Comments": "Assumes input are 12 months climatology", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "zonal_mean": { + "Abstract": "Compute Zonal Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Zonal Mean", + "Comments": "", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "some_custom": { + "Abstract": "For demo purpose really does nothing", + "Contact": "doutriaux1@llnl.gov", + "Name": "SomeCustom" + }, + "custom_ref_min": { + "Abstract": "Computes Custom Minimum for demo purposes", + "Contact": "doutriaux1@llnl.gov", + "Name": "Custom Minimum" + } + }, + "json_structure": [ + "model", + "reference", + "rip", + "region", + "statistic", + "season" + ], + "provenance": { + "platform": { + "OS": "Darwin", + "Version": "16.7.0", + "Name": "loki" + }, + "userId": "doutriaux1", + "osAccess": false, + "commandLine": "/Users/doutriaux1/anaconda2/envs/cdat8/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/region_specs_test.py", + "date": "2018-05-03 09:25:03", + "conda": { + "Version": "4.5.1", + "buildVersion": "3.9.1", + "PythonVersion": "2.7.14.final.0", + "Platform": "osx-64" + }, + "packages": { + "blas": "1.0.1", + "cdms": "3.0", + "CDP": "1.3.2", + "cdtime": "3.0", + "cdutil": "8.0", + "clapack": "3.2.1", + "lapack": "3.6.1", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0.2018.04.27.14.53.gfc2e5fc5", + "vtk": "8.0.1.8.0", + "PMP": "ga068fe0", + "PMPObs": null + }, + "openGL": { + "vendor": "ATI Technologies Inc.", + "renderer": "AMD Radeon Pro 455 OpenGL Engine", + "version": "2.1 ATI-1.51.8", + "shading language version": "1.20", + "GLX": { + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } + } + } + } +} \ No newline at end of file diff --git a/tests/pcmdi/gensftlfTest/tas_2.5x2.5_esmf_linear_metrics.json b/tests/pcmdi/gensftlfTest/tas_2.5x2.5_esmf_linear_metrics.json index 7c6d7708e..a71f92f93 100644 --- a/tests/pcmdi/gensftlfTest/tas_2.5x2.5_esmf_linear_metrics.json +++ b/tests/pcmdi/gensftlfTest/tas_2.5x2.5_esmf_linear_metrics.json @@ -682,42 +682,42 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "4.13.0-36-generic", + "Version": "4.13.0-39-generic", "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/home/doutriaux1/anaconda2/envs/nightly-mesa/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/gensftlf_test.py", - "date": "2018-03-15 11:20:43", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/gensftlf_test.py", + "date": "2018-04-26 11:09:05", "conda": { - "Version": "4.4.11", - "buildVersion": "3.7.1", + "Version": "4.5.0", + "buildVersion": "3.7.2", "PythonVersion": "2.7.14.final.0", "Platform": "linux-64" }, "packages": { - "blas": "0.2.20", - "cdms": "2.12.2018.03.13.23.52.g2886f2a.npy1.13", - "CDP": "1.2.3", - "cdtime": "2.12.2018.03.14.21.54.g7703b9a.np1.13", - "cdutil": "2.12.2018.03.14.22.35.g1c4ea5f", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.1.0.dev52", - "esmpy": "7.1.0.dev52", - "genutil": "2.12.2018.03.14.18.43.ga1c6466.npy1.13", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", "python": "2.7.14", - "matplotlib": "2.2.0", + "matplotlib": "2.2.2", "mesalib": "17.2.0", - "numpy": "1.13.3", - "vcs": "2.12.2018.03.14.18.21.g9d7eb3ed", - "vtk": "8.0.1.2.12.2018.03.13.09.50.g9a839a5", - "PMP": "g46e2aa6", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", + "blas": null, + "PMP": "geb4d089", "PMPObs": null }, "openGL": { "vendor": "X.Org", - "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-36-generic, LLVM 5.0.0)", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", "version": "3.0 Mesa 17.2.8", "shading language version": "1.30", "GLX": { diff --git a/tests/pcmdi/gensftlfTest/tas_2.5x2.5_esmf_linear_metrics.json.mac b/tests/pcmdi/gensftlfTest/tas_2.5x2.5_esmf_linear_metrics.json.mac deleted file mode 100644 index 1b1ed339d..000000000 --- a/tests/pcmdi/gensftlfTest/tas_2.5x2.5_esmf_linear_metrics.json.mac +++ /dev/null @@ -1,740 +0,0 @@ -{ - "DISCLAIMER": "USER-NOTICE: The results in this file were produced with the PMP v1.1 (https://github.com/PCMDI/pcmdi_metrics). They are for research purposes only. They are subject to ongoing quality control and change as the PMP software advances, interpolation methods are modified, observational data sets are updated, problems with model data are corrected, etc. Use of these results for research (presentation, publications, etc.) should reference: Gleckler, P. J., C. Doutriaux, P. J. Durack, K. E. Taylor, Y. Zhang, and D. N. Williams, E. Mason, and J. Servonnat (2016), A more powerful reality test for climate models, Eos, 97, doi:10.1029/2016EO051663. If any problems are uncovered in using these results please contact the PMP development team at pcmdi-metrics@llnl.gov\n", - "RESULTS": { - "GFDL-ESM2G": { - "SimulationDescription": { - "Center": "N/A", - "ModellingGroup": "NOAA GFDL", - "ModelFreeSpace": "N/A", - "MIPTable": "Amon", - "creation_date": "2011-11-19T18:27:04Z", - "ModelActivity": "CMIP5", - "Experiment": "historical", - "Realization": "r1i1p1", - "Model": "GFDL-ESM2G", - "Login": "N/A", - "SimTrackingDate": "2011-11-19T18:27:04Z" - }, - "default": { - "source": "ERAINT", - "r1i1p1": { - "land": { - "bias_xy": { - "ann": "-0.847", - "son": "-0.868", - "mam": "-0.953", - "jja": "-0.988", - "djf": "-0.534" - }, - "cor_xy": { - "ann": "0.994", - "son": "0.99", - "mam": "0.99", - "jja": "0.99", - "djf": "0.99" - }, - "mae_xy": { - "ann": "1.852", - "son": "2.102", - "mam": "2.308", - "jja": "2.097", - "djf": "2.034" - }, - "mean-obs_xy": { - "ann": "282.595", - "son": "283.031", - "mam": "282.354", - "jja": "287.896", - "djf": "277.043" - }, - "mean_xy": { - "ann": "281.246", - "son": "281.595", - "mam": "281.014", - "jja": "286.560", - "djf": "275.801" - }, - "rms_devzm": { - "ann": "1.966" - }, - "rms_xy": { - "ann": "2.342", - "son": "2.668", - "mam": "2.960", - "jja": "2.641", - "djf": "2.589" - }, - "rms_xyt": { - "ann": "2.872" - }, - "rms_y": { - "ann": "1.913" - }, - "rmsc_xy": { - "ann": "2.184", - "son": "2.523", - "mam": "2.802", - "jja": "2.449", - "djf": "2.534" - }, - "std-obs_xy": { - "ann": "18.295", - "son": "18.480", - "mam": "19.808", - "jja": "19.454", - "djf": "20.051" - }, - "std-obs_xy_devzm": { - "ann": "4.890" - }, - "std-obs_xyt": { - "ann": "20.145" - }, - "std_xy": { - "ann": "18.477", - "son": "19.311", - "mam": "19.526", - "jja": "20.090", - "djf": "19.573" - }, - "std_xy_devzm": { - "ann": "5.079" - }, - "std_xyt": { - "ann": "20.294" - } - }, - "TROPICS": { - "bias_xy": { - "ann": "-0.902", - "son": "-0.870", - "mam": "-0.872", - "jja": "-0.802", - "djf": "-1.060" - }, - "cor_xy": { - "ann": "0.912", - "son": "0.87", - "mam": "0.91", - "jja": "0.94", - "djf": "0.94" - }, - "mae_xy": { - "ann": "1.260", - "son": "1.538", - "mam": "1.263", - "jja": "1.317", - "djf": "1.377" - }, - "mean-obs_xy": { - "ann": "297.836", - "son": "297.839", - "mam": "298.306", - "jja": "297.828", - "djf": "297.375" - }, - "mean_xy": { - "ann": "296.934", - "son": "296.969", - "mam": "297.434", - "jja": "297.026", - "djf": "296.315" - }, - "rms_devzm": { - "ann": "1.169" - }, - "rms_xy": { - "ann": "1.539", - "son": "1.958", - "mam": "1.645", - "jja": "1.614", - "djf": "1.767" - }, - "rms_xyt": { - "ann": "1.828" - }, - "rms_y": { - "ann": "1.061" - }, - "rmsc_xy": { - "ann": "1.246", - "son": "1.755", - "mam": "1.395", - "jja": "1.401", - "djf": "1.414" - }, - "std-obs_xy": { - "ann": "3.033", - "son": "3.322", - "mam": "3.227", - "jja": "4.268", - "djf": "3.842" - }, - "std-obs_xy_devzm": { - "ann": "2.280" - }, - "std-obs_xyt": { - "ann": "3.836" - }, - "std_xy": { - "ann": "2.855", - "son": "3.473", - "mam": "3.213", - "jja": "4.120", - "djf": "4.093" - }, - "std_xy_devzm": { - "ann": "2.026" - }, - "std_xyt": { - "ann": "3.947" - } - }, - "global": { - "bias_xy": { - "ann": "-0.625", - "son": "-0.787", - "mam": "-0.489", - "jja": "-0.526", - "djf": "-0.680" - }, - "cor_xy": { - "ann": "0.989", - "son": "0.99", - "mam": "0.99", - "jja": "0.99", - "djf": "0.99" - }, - "mae_xy": { - "ann": "1.669", - "son": "1.726", - "mam": "1.861", - "jja": "1.568", - "djf": "2.025" - }, - "mean-obs_xy": { - "ann": "287.558", - "son": "287.602", - "mam": "287.530", - "jja": "289.266", - "djf": "285.818" - }, - "mean_xy": { - "ann": "286.933", - "son": "286.815", - "mam": "287.041", - "jja": "288.741", - "djf": "285.138" - }, - "rms_devzm": { - "ann": "1.454" - }, - "rms_xy": { - "ann": "2.155", - "son": "2.219", - "mam": "2.505", - "jja": "2.051", - "djf": "2.805" - }, - "rms_xyt": { - "ann": "2.508" - }, - "rms_y": { - "ann": "2.096" - }, - "rmsc_xy": { - "ann": "2.063", - "son": "2.075", - "mam": "2.457", - "jja": "1.983", - "djf": "2.721" - }, - "std-obs_xy": { - "ann": "14.108", - "son": "14.163", - "mam": "15.003", - "jja": "14.244", - "djf": "15.898" - }, - "std-obs_xy_devzm": { - "ann": "3.769" - }, - "std-obs_xyt": { - "ann": "15.058" - }, - "std_xy": { - "ann": "13.770", - "son": "14.042", - "mam": "14.468", - "jja": "13.608", - "djf": "16.032" - }, - "std_xy_devzm": { - "ann": "3.670" - }, - "std_xyt": { - "ann": "14.803" - } - }, - "ocean": { - "bias_xy": { - "ann": "-0.414", - "son": "-0.642", - "mam": "-0.257", - "jja": "-0.359", - "djf": "-0.398" - }, - "cor_xy": { - "ann": "0.985", - "son": "0.99", - "mam": "0.98", - "jja": "0.99", - "djf": "0.97" - }, - "mae_xy": { - "ann": "1.508", - "son": "1.516", - "mam": "1.589", - "jja": "1.334", - "djf": "1.803" - }, - "mean-obs_xy": { - "ann": "290.102", - "son": "289.779", - "mam": "290.368", - "jja": "289.906", - "djf": "290.364" - }, - "mean_xy": { - "ann": "289.236", - "son": "288.843", - "mam": "289.543", - "jja": "289.421", - "djf": "289.146" - }, - "rms_devzm": { - "ann": "0.865" - }, - "rms_xy": { - "ann": "1.903", - "son": "1.873", - "mam": "2.122", - "jja": "1.705", - "djf": "2.476" - }, - "rms_xyt": { - "ann": "2.121" - }, - "rms_y": { - "ann": "3.469" - }, - "rmsc_xy": { - "ann": "1.857", - "son": "1.760", - "mam": "2.107", - "jja": "1.666", - "djf": "2.444" - }, - "std-obs_xy": { - "ann": "10.361", - "son": "10.648", - "mam": "10.557", - "jja": "10.674", - "djf": "10.497" - }, - "std-obs_xy_devzm": { - "ann": "1.770" - }, - "std-obs_xyt": { - "ann": "10.656" - }, - "std_xy": { - "ann": "10.681", - "son": "10.871", - "mam": "11.116", - "jja": "10.341", - "djf": "12.116" - }, - "std_xy_devzm": { - "ann": "1.812" - }, - "std_xyt": { - "ann": "11.241" - } - }, - "NHEX": { - "bias_xy": { - "ann": "-2.156", - "son": "-2.236", - "mam": "-2.226", - "jja": "-1.562", - "djf": "-2.525" - }, - "cor_xy": { - "ann": "0.982", - "son": "0.99", - "mam": "0.97", - "jja": "0.97", - "djf": "0.97" - }, - "mae_xy": { - "ann": "2.471", - "son": "2.441", - "mam": "2.821", - "jja": "2.026", - "djf": "3.324" - }, - "mean-obs_xy": { - "ann": "278.335", - "son": "279.695", - "mam": "276.844", - "jja": "288.315", - "djf": "268.370" - }, - "mean_xy": { - "ann": "276.179", - "son": "277.459", - "mam": "274.619", - "jja": "286.752", - "djf": "265.845" - }, - "rms_devzm": { - "ann": "2.012" - }, - "rms_xy": { - "ann": "3.014", - "son": "2.950", - "mam": "3.427", - "jja": "2.464", - "djf": "4.394" - }, - "rms_xyt": { - "ann": "3.527" - }, - "rms_y": { - "ann": "2.725" - }, - "rmsc_xy": { - "ann": "2.106", - "son": "1.924", - "mam": "2.606", - "jja": "1.906", - "djf": "3.596" - }, - "std-obs_xy": { - "ann": "10.873", - "son": "11.178", - "mam": "11.155", - "jja": "8.120", - "djf": "15.134" - }, - "std-obs_xy_devzm": { - "ann": "5.044" - }, - "std-obs_xyt": { - "ann": "14.193" - }, - "std_xy": { - "ann": "11.126", - "son": "11.413", - "mam": "10.992", - "jja": "8.384", - "djf": "15.136" - }, - "std_xy_devzm": { - "ann": "4.633" - }, - "std_xyt": { - "ann": "14.453" - } - }, - "SHEX": { - "bias_xy": { - "ann": "1.462", - "son": "0.826", - "mam": "2.015", - "jja": "1.064", - "djf": "1.926" - }, - "cor_xy": { - "ann": "0.995", - "son": "0.99", - "mam": "0.99", - "jja": "0.99", - "djf": "0.99" - }, - "mae_xy": { - "ann": "1.684", - "son": "1.387", - "mam": "2.096", - "jja": "1.612", - "djf": "2.023" - }, - "mean-obs_xy": { - "ann": "276.225", - "son": "275.036", - "mam": "276.663", - "jja": "273.095", - "djf": "280.151" - }, - "mean_xy": { - "ann": "277.687", - "son": "275.862", - "mam": "278.678", - "jja": "274.159", - "djf": "282.077" - }, - "rms_devzm": { - "ann": "1.293" - }, - "rms_xy": { - "ann": "2.183", - "son": "1.826", - "mam": "2.818", - "jja": "2.356", - "djf": "2.432" - }, - "rms_xyt": { - "ann": "2.456" - }, - "rms_y": { - "ann": "2.134" - }, - "rmsc_xy": { - "ann": "1.620", - "son": "1.629", - "mam": "1.970", - "jja": "2.102", - "djf": "1.485" - }, - "std-obs_xy": { - "ann": "15.321", - "son": "15.010", - "mam": "17.048", - "jja": "17.324", - "djf": "12.198" - }, - "std-obs_xy_devzm": { - "ann": "4.580" - }, - "std-obs_xyt": { - "ann": "15.853" - }, - "std_xy": { - "ann": "14.736", - "son": "14.852", - "mam": "15.984", - "jja": "16.812", - "djf": "11.581" - }, - "std_xy_devzm": { - "ann": "4.921" - }, - "std_xyt": { - "ann": "15.337" - } - } - } - }, - "InputRegionMD5": null, - "InputClimatologyFileName": "tas_GFDL-ESM2G_Amon_piControl_000101-010012-clim01.xml", - "units": "degK", - "InputClimatologyMD5": "d0263797666880c69f2c4f4e6a929827", - "InputRegionFileName": null - } - }, - "Variable": { - "id": "tas" - }, - "json_version": 3.0, - "References": { - "default": { - "RefName": "ERAINT", - "MD5sum": "b53a23756718590f89a26064c76c6b05", - "period": "198901-200911", - "filename": "tas_pcmdi-metrics_Amon_ERAINT_198901-200911-clim.nc", - "shape": "(12, 121, 240)", - "CMIP_CMOR_TABLE": "Amon", - "RefTrackingDate": "Thu Jan 16 16:11:10 2014" - } - }, - "RegionalMasking": { - "land": { - "id": "land", - "value": 100 - }, - "TROPICS": { - "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" - }, - "id": "TROPICS" - }, - "global": { - "id": "global" - }, - "ocean": { - "id": "ocean", - "value": 0 - }, - "NHEX": { - "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" - }, - "id": "NHEX" - }, - "SHEX": { - "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" - }, - "id": "SHEX" - } - }, - "GridInfo": { - "GridResolution": [ - 72, - 144 - ], - "GridName": "2.5x2.5", - "RegridMethod": "linear", - "RegridTool": "esmf" - }, - "METRICS": { - "rms_xyt": { - "Abstract": "Compute Spatial and Temporal Root Mean Square", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Spatio-Temporal Root Mean Square", - "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" - }, - "rms_xy": { - "Abstract": "Compute Spatial Root Mean Square", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Spatial Root Mean Square", - "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" - }, - "rmsc_xy": { - "Abstract": "Compute Centered Spatial Root Mean Square", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Spatial Root Mean Square", - "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" - }, - "bias_xy": { - "Abstract": "Compute Full Average of Model - Observation", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Bias" - }, - "mae_xy": { - "Abstract": "Compute Full Average of Absolute Difference Between Model And Observation", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Mean Absolute Error" - }, - "cor_xy": { - "Abstract": "Compute Spatial Correlation", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Spatial Correlation", - "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" - }, - "mean_xy": { - "Abstract": "Area Mean (area weighted)", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Mean" - }, - "std_xy": { - "Abstract": "Compute Spatial Standard Deviation", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Spatial Standard Deviation", - "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" - }, - "std_xyt": { - "Abstract": "Compute Space-Time Standard Deviation", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Spatial-temporal Standard Deviation", - "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" - }, - "seasonal_mean": { - "Abstract": "Compute Seasonal Mean", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Seasonal Mean", - "Comments": "Assumes input are 12 months climatology" - }, - "annual_mean": { - "Abstract": "Compute Annual Mean", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Annual Mean", - "Comments": "Assumes input are 12 months climatology", - "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" - }, - "zonal_mean": { - "Abstract": "Compute Zonal Mean", - "Contact": "pcmdi-metrics@llnl.gov", - "Name": "Zonal Mean", - "Comments": "", - "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" - } - }, - "json_structure": [ - "model", - "reference", - "rip", - "region", - "statistic", - "season" - ], - "provenance": { - "platform": { - "OS": "Darwin", - "Version": "16.6.0", - "Name": "loki" - }, - "userId": "doutriaux1", - "osAccess": false, - "commandLine": "/Users/doutriaux1/anaconda2/envs/nightly-mesa/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/gensftlf_test.py", - "date": "2017-07-21 07:47:33", - "conda": { - "Platform": "osx-64", - "Version": "4.3.22", - "IsPrivate": "False", - "envVersion": "4.3.22", - "buildVersion": "3.0.6", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/Users/doutriaux1/anaconda2 (writable)", - "DefaultEnvironment": "/Users/doutriaux1/anaconda2/envs/nightly-mesa" - }, - "packages": { - "cdms": "2.10.2017.07.05.06.11.297b09f867ec041b8bc8b4826fae7b8a3bc75884", - "CDP": "1.0.3", - "cdtime": "2.10", - "cdutil": "2.10", - "clapack": "3.2.1", - "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.10", - "python": "2.7.13", - "matplotlib": "2.0.2", - "mesalib": "17.1.4", - "numpy": "1.12.1", - "vcs": "2.10.2017.06.29.20.09.593560606aef21c260570bf0750639531fbb83be", - "vtk": "7.1.0.2.10.2017.07.06.11.44.1c03d1d03b1c12d99dd090ba4c5ca078e2d9612f", - "blas": null, - "PMP": "gf73f5f0", - "PMPObs": null - }, - "openGL": { - "vendor": "ATI Technologies Inc.", - "renderer": "AMD Radeon Pro 455 OpenGL Engine", - "version": "2.1 ATI-1.51.8", - "shading language version": "1.20", - "GLX": { - "client": { - "vendor": "Mesa Project and SGI", - "version": "1.4" - }, - "version": "1.4", - "server": { - "vendor": "SGI", - "version": "1.4" - } - } - } - } -} \ No newline at end of file diff --git a/tests/pcmdi/installationTest/tas_2.5x2.5_regrid2_linear_metrics.json b/tests/pcmdi/installationTest/tas_2.5x2.5_regrid2_linear_metrics.json index f219fac11..4383f3297 100644 --- a/tests/pcmdi/installationTest/tas_2.5x2.5_regrid2_linear_metrics.json +++ b/tests/pcmdi/installationTest/tas_2.5x2.5_regrid2_linear_metrics.json @@ -196,11 +196,11 @@ }, "terre": { "bias_xy": { - "ann": "-0.971", - "son": "-1.034", - "mam": "-0.982", - "jja": "-1.087", - "djf": "-0.738" + "ann": "-0.969", + "son": "-1.032", + "mam": "-0.980", + "jja": "-1.086", + "djf": "-0.735" }, "cor_xy": { "ann": "0.993", @@ -211,80 +211,80 @@ }, "custom_model_max": 313.48736572265625, "mae_xy": { - "ann": "1.883", - "son": "2.174", + "ann": "1.882", + "son": "2.173", "mam": "2.321", - "jja": "2.074", - "djf": "2.124" + "jja": "2.075", + "djf": "2.123" }, "mean-obs_xy": { - "ann": "282.528", - "son": "282.956", - "mam": "282.300", - "jja": "287.863", - "djf": "276.938" + "ann": "282.539", + "son": "282.965", + "mam": "282.315", + "jja": "287.861", + "djf": "276.961" }, "mean_xy": { - "ann": "281.562", - "son": "281.902", - "mam": "281.375", - "jja": "286.739", - "djf": "276.220" + "ann": "281.569", + "son": "281.908", + "mam": "281.384", + "jja": "286.736", + "djf": "276.237" }, "rms_devzm": { - "ann": "1.806" + "ann": "1.807" }, "rms_xy": { - "ann": "2.364", + "ann": "2.363", "son": "2.722", - "mam": "2.949", - "jja": "2.596", - "djf": "2.710" + "mam": "2.950", + "jja": "2.597", + "djf": "2.709" }, "rms_xyt": { "ann": "2.899" }, "rms_y": { - "ann": "1.676" + "ann": "1.681" }, "rmsc_xy": { "ann": "2.155", - "son": "2.517", - "mam": "2.781", - "jja": "2.358", + "son": "2.518", + "mam": "2.782", + "jja": "2.359", "djf": "2.607" }, "some_custom": 1.5, "std-obs_xy": { - "ann": "18.263", - "son": "18.455", - "mam": "19.780", - "jja": "19.435", - "djf": "20.035" + "ann": "18.272", + "son": "18.466", + "mam": "19.788", + "jja": "19.450", + "djf": "20.037" }, "std-obs_xy_devzm": { "ann": "4.780" }, "std-obs_xyt": { - "ann": "20.131" + "ann": "20.138" }, "std_xy": { - "ann": "18.015", - "son": "18.795", - "mam": "19.042", - "jja": "19.435", - "djf": "19.415" + "ann": "18.025", + "son": "18.806", + "mam": "19.052", + "jja": "19.448", + "djf": "19.421" }, "std_xy_devzm": { - "ann": "5.025" + "ann": "5.026" }, "std_xyt": { - "ann": "19.834" + "ann": "19.842" } }, "ocean": { "bias_xy": { - "ann": "-0.539", + "ann": "-0.538", "son": "-0.723", "mam": "-0.383", "jja": "-0.398", @@ -300,43 +300,43 @@ "custom_model_max": 303.598876953125, "mae_xy": { "ann": "1.593", - "son": "1.570", + "son": "1.569", "mam": "1.696", "jja": "1.370", - "djf": "1.962" + "djf": "1.961" }, "mean-obs_xy": { - "ann": "289.550", - "son": "289.444", - "mam": "289.601", + "ann": "289.544", + "son": "289.439", + "mam": "289.594", "jja": "289.824", - "djf": "289.331" + "djf": "289.318" }, "mean_xy": { - "ann": "289.339", - "son": "289.003", - "mam": "289.617", - "jja": "289.633", - "djf": "289.113" + "ann": "289.341", + "son": "289.004", + "mam": "289.619", + "jja": "289.634", + "djf": "289.115" }, "rms_devzm": { - "ann": "1.028" + "ann": "1.029" }, "rms_xy": { - "ann": "2.056", - "son": "1.997", + "ann": "2.055", + "son": "1.996", "mam": "2.294", "jja": "1.757", - "djf": "2.805" + "djf": "2.804" }, "rms_xyt": { "ann": "2.315" }, "rms_y": { - "ann": "2.452" + "ann": "2.447" }, "rmsc_xy": { - "ann": "1.984", + "ann": "1.983", "son": "1.861", "mam": "2.262", "jja": "1.711", @@ -344,30 +344,30 @@ }, "some_custom": 1.5, "std-obs_xy": { - "ann": "11.461", + "ann": "11.462", "son": "11.524", - "mam": "11.983", - "jja": "11.501", - "djf": "12.251" + "mam": "11.984", + "jja": "11.498", + "djf": "12.262" }, "std-obs_xy_devzm": { - "ann": "2.136" + "ann": "2.138" }, "std-obs_xyt": { - "ann": "11.904" + "ann": "11.907" }, "std_xy": { - "ann": "10.655", - "son": "10.802", - "mam": "11.102", - "jja": "10.162", - "djf": "12.288" + "ann": "10.652", + "son": "10.800", + "mam": "11.099", + "jja": "10.161", + "djf": "12.283" }, "std_xy_devzm": { "ann": "1.869" }, "std_xyt": { - "ann": "11.230" + "ann": "11.227" } }, "NHEX": { @@ -576,7 +576,7 @@ }, "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -590,13 +590,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -704,47 +704,43 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "2.6.32-696.3.1.el6.x86_64", - "Name": "crunchy.llnl.gov" + "Version": "4.13.0-39-generic", + "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/export/doutriaux1/miniconda2/envs/dev-nox/bin/pcmdi_metrics_driver.py -p /export/doutriaux1/git/pcmdi_metrics/tests/pcmdi/basic_test_parameters_file.py", - "date": "2017-10-12 13:39:21", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/basic_test_parameters_file.py", + "date": "2018-04-26 11:08:16", "conda": { - "Platform": "linux-64", - "Version": "4.3.25", - "IsPrivate": "False", - "envVersion": "4.3.25", - "buildVersion": "3.0.15", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/export/doutriaux1/miniconda2 (writable)", - "DefaultEnvironment": "/export/doutriaux1/miniconda2/envs/dev-nox" + "Version": "4.5.0", + "buildVersion": "3.7.2", + "PythonVersion": "2.7.14.final.0", + "Platform": "linux-64" }, "packages": { - "cdms": "2.12", - "CDP": "2017.09.07", - "cdtime": "2.12", - "cdutil": "2.12", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.12", - "python": "2.7.13", - "matplotlib": "1.5.3", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", "mesalib": "17.2.0", - "numpy": "1.13.1", - "vcs": "2.12.2017.09.13.00.29.5669624a25139ad2e19e4af8b921d0571338375d", - "vtk": "7.1.0.2.12", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "PMP": "g8bcb816", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { - "vendor": "VMware, Inc.", - "renderer": "Gallium 0.4 on llvmpipe (LLVM 3.6, 128 bits)", - "version": "2.1 Mesa 11.0.7", + "vendor": "X.Org", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", "shading language version": "1.30", "GLX": { "client": { diff --git a/tests/pcmdi/installationTest/tos_2.5x2.5_esmf_linear_metrics.json b/tests/pcmdi/installationTest/tos_2.5x2.5_esmf_linear_metrics.json index f491c12e1..d9cd95a82 100644 --- a/tests/pcmdi/installationTest/tos_2.5x2.5_esmf_linear_metrics.json +++ b/tests/pcmdi/installationTest/tos_2.5x2.5_esmf_linear_metrics.json @@ -45,7 +45,7 @@ "ann": "299.282", "son": "299.089", "mam": "299.697", - "jja": "299.085", + "jja": "299.086", "djf": "299.264" }, "mean_xy": { @@ -69,7 +69,7 @@ "ann": "1.304" }, "rms_y": { - "ann": "0.711" + "ann": "0.713" }, "rmsc_xy": { "ann": "0.925", @@ -80,10 +80,10 @@ }, "some_custom": 1.5, "std-obs_xy": { - "ann": "2.492", + "ann": "2.493", "son": "3.043", "mam": "2.567", - "jja": "2.987", + "jja": "2.988", "djf": "2.401" }, "std-obs_xy_devzm": { @@ -109,7 +109,7 @@ "global": { "bias_xy": { "ann": "-0.155", - "son": "-0.408", + "son": "-0.407", "mam": "-0.009", "jja": "-0.277", "djf": "0.078" @@ -121,7 +121,7 @@ "jja": "0.99", "djf": "0.98" }, - "custom_ref_min": 271.27384426614753, + "custom_ref_min": 271.2738442661475, "mae_xy": { "ann": "1.142", "son": "1.144", @@ -130,21 +130,21 @@ "djf": "1.444" }, "mean-obs_xy": { - "ann": "291.585", - "son": "291.443", - "mam": "291.723", - "jja": "291.584", - "djf": "291.616" + "ann": "291.581", + "son": "291.440", + "mam": "291.719", + "jja": "291.582", + "djf": "291.612" }, "mean_xy": { - "ann": "291.397", - "son": "290.973", - "mam": "291.698", + "ann": "291.399", + "son": "290.975", + "mam": "291.700", "jja": "291.237", - "djf": "291.686" + "djf": "291.689" }, "rms_devzm": { - "ann": "0.906" + "ann": "0.907" }, "rms_xy": { "ann": "1.418", @@ -157,10 +157,10 @@ "ann": "1.625" }, "rms_y": { - "ann": "1.266" + "ann": "1.267" }, "rmsc_xy": { - "ann": "1.410", + "ann": "1.409", "son": "1.407", "mam": "1.627", "jja": "1.317", @@ -168,27 +168,27 @@ }, "some_custom": 1.5, "std-obs_xy": { - "ann": "9.823", - "son": "9.999", - "mam": "10.088", - "jja": "9.902", - "djf": "9.798" + "ann": "9.825", + "son": "10.000", + "mam": "10.090", + "jja": "9.904", + "djf": "9.801" }, "std-obs_xy_devzm": { - "ann": "1.741" + "ann": "1.742" }, "std-obs_xyt": { - "ann": "9.982" + "ann": "9.984" }, "std_xy": { - "ann": "9.297", + "ann": "9.298", "son": "9.667", "mam": "9.596", - "jja": "9.526", - "djf": "9.141" + "jja": "9.527", + "djf": "9.140" }, "std_xy_devzm": { - "ann": "1.696" + "ann": "1.695" }, "std_xyt": { "ann": "9.535" @@ -196,11 +196,11 @@ }, "NHEX": { "bias_xy": { - "ann": "-1.306", - "son": "-1.560", - "mam": "-1.261", - "jja": "-1.075", - "djf": "-1.339" + "ann": "-1.304", + "son": "-1.558", + "mam": "-1.260", + "jja": "-1.071", + "djf": "-1.338" }, "cor_xy": { "ann": "0.986", @@ -209,46 +209,46 @@ "jja": "0.99", "djf": "0.97" }, - "custom_ref_min": 271.27384426614753, + "custom_ref_min": 271.2738442661475, "mae_xy": { - "ann": "1.530", - "son": "1.749", + "ann": "1.529", + "son": "1.748", "mam": "1.573", - "jja": "1.360", - "djf": "1.746" + "jja": "1.358", + "djf": "1.745" }, "mean-obs_xy": { "ann": "284.145", "son": "286.171", - "mam": "281.777", - "jja": "286.811", - "djf": "281.852" + "mam": "281.778", + "jja": "286.814", + "djf": "281.851" }, "mean_xy": { - "ann": "282.824", - "son": "284.589", - "mam": "280.493", - "jja": "285.651", - "djf": "280.516" + "ann": "282.822", + "son": "284.586", + "mam": "280.490", + "jja": "285.644", + "djf": "280.520" }, "rms_devzm": { - "ann": "1.153" + "ann": "1.154" }, "rms_xy": { - "ann": "1.874", - "son": "2.092", + "ann": "1.873", + "son": "2.091", "mam": "1.984", - "jja": "1.732", - "djf": "2.181" + "jja": "1.729", + "djf": "2.180" }, "rms_xyt": { - "ann": "2.048" + "ann": "2.047" }, "rms_y": { "ann": "1.550" }, "rmsc_xy": { - "ann": "1.344", + "ann": "1.345", "son": "1.395", "mam": "1.532", "jja": "1.357", @@ -256,39 +256,39 @@ }, "some_custom": 1.5, "std-obs_xy": { - "ann": "7.951", - "son": "8.620", - "mam": "7.337", - "jja": "8.740", + "ann": "7.952", + "son": "8.621", + "mam": "7.338", + "jja": "8.743", "djf": "7.365" }, "std-obs_xy_devzm": { - "ann": "2.436" + "ann": "2.439" }, "std-obs_xyt": { - "ann": "8.506" + "ann": "8.508" }, "std_xy": { - "ann": "8.167", - "son": "8.835", - "mam": "7.569", - "jja": "8.921", - "djf": "7.624" + "ann": "8.170", + "son": "8.840", + "mam": "7.573", + "jja": "8.923", + "djf": "7.627" }, "std_xy_devzm": { - "ann": "2.516" + "ann": "2.515" }, "std_xyt": { - "ann": "8.695" + "ann": "8.697" } }, "SHEX": { "bias_xy": { "ann": "1.214", - "son": "0.609", + "son": "0.610", "mam": "1.597", - "jja": "0.657", - "djf": "2.002" + "jja": "0.658", + "djf": "2.001" }, "cor_xy": { "ann": "0.992", @@ -302,25 +302,25 @@ "ann": "1.374", "son": "1.035", "mam": "1.637", - "jja": "1.039", - "djf": "2.060" + "jja": "1.040", + "djf": "2.059" }, "mean-obs_xy": { - "ann": "282.245", - "son": "280.974", - "mam": "283.288", - "jja": "281.091", - "djf": "283.651" + "ann": "282.242", + "son": "280.972", + "mam": "283.285", + "jja": "281.088", + "djf": "283.648" }, "mean_xy": { - "ann": "283.465", - "son": "281.588", - "mam": "284.892", - "jja": "281.757", - "djf": "285.658" + "ann": "283.468", + "son": "281.591", + "mam": "284.895", + "jja": "281.760", + "djf": "285.660" }, "rms_devzm": { - "ann": "0.806" + "ann": "0.807" }, "rms_xy": { "ann": "1.613", @@ -336,38 +336,38 @@ "ann": "1.384" }, "rmsc_xy": { - "ann": "1.063", - "son": "1.201", + "ann": "1.062", + "son": "1.200", "mam": "1.032", "jja": "1.189", - "djf": "1.336" + "djf": "1.337" }, "some_custom": 1.5, "std-obs_xy": { - "ann": "7.167", - "son": "6.772", - "mam": "7.588", - "jja": "6.711", - "djf": "7.637" + "ann": "7.168", + "son": "6.773", + "mam": "7.589", + "jja": "6.712", + "djf": "7.639" }, "std-obs_xy_devzm": { "ann": "1.545" }, "std-obs_xyt": { - "ann": "7.319" + "ann": "7.320" }, "std_xy": { - "ann": "6.595", - "son": "6.445", - "mam": "6.990", - "jja": "6.436", - "djf": "6.650" + "ann": "6.598", + "son": "6.448", + "mam": "6.993", + "jja": "6.438", + "djf": "6.653" }, "std_xy_devzm": { "ann": "1.591" }, "std_xyt": { - "ann": "6.941" + "ann": "6.943" } } } @@ -397,7 +397,7 @@ "RegionalMasking": { "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -406,13 +406,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -520,47 +520,54 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "2.6.32-696.el6.x86_64", - "Name": "crunchy.llnl.gov" + "Version": "4.13.0-39-generic", + "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/export/doutriaux1/miniconda2/envs/pmp/bin/pcmdi_metrics_driver.py -p /export/doutriaux1/git/pcmdi_metrics/tests/pcmdi/basic_test_parameters_file.py", - "date": "2017-06-09 14:14:27", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/basic_test_parameters_file.py", + "date": "2018-04-26 11:07:13", "conda": { - "Platform": "linux-64", - "Version": "4.3.11", - "IsPrivate": "False", - "envVersion": "4.3.11", - "buildVersion": "2.1.10", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/export/doutriaux1/miniconda2 (writable)", - "DefaultEnvironment": "/export/doutriaux1/miniconda2/envs/pmp" + "Version": "4.5.0", + "buildVersion": "3.7.2", + "PythonVersion": "2.7.14.final.0", + "Platform": "linux-64" }, "packages": { - "cdms": "2.10", - "CDP": "1.0.3", - "cdtime": "2.10", - "cdutil": "2.10", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.10", - "mesalib": "17.0.3", - "numpy": "1.12.1", - "python": "2.7.13", - "vcs": "2.10", - "vtk": "7.1.0.2.10", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "matplotlib": null, - "PMP": "ga507630", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { + "vendor": "X.Org", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", + "shading language version": "1.30", "GLX": { - "client": {}, - "server": {} + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } } } } diff --git a/tests/pcmdi/installationTest/tos_2.5x2.5_esmf_linear_metrics.json.mac b/tests/pcmdi/installationTest/tos_2.5x2.5_esmf_linear_metrics.json.mac new file mode 100644 index 000000000..4cf126888 --- /dev/null +++ b/tests/pcmdi/installationTest/tos_2.5x2.5_esmf_linear_metrics.json.mac @@ -0,0 +1,574 @@ +{ + "DISCLAIMER": "USER-NOTICE: The results in this file were produced with the PMP v1.1 (https://github.com/PCMDI/pcmdi_metrics). They are for research purposes only. They are subject to ongoing quality control and change as the PMP software advances, interpolation methods are modified, observational data sets are updated, problems with model data are corrected, etc. Use of these results for research (presentation, publications, etc.) should reference: Gleckler, P. J., C. Doutriaux, P. J. Durack, K. E. Taylor, Y. Zhang, and D. N. Williams, E. Mason, and J. Servonnat (2016), A more powerful reality test for climate models, Eos, 97, doi:10.1029/2016EO051663. If any problems are uncovered in using these results please contact the PMP development team at pcmdi-metrics@llnl.gov\n", + "RESULTS": { + "GFDL-ESM2G": { + "SimulationDescription": { + "Center": "N/A", + "ModellingGroup": "NOAA GFDL", + "ModelFreeSpace": "N/A", + "MIPTable": "Omon", + "creation_date": "2012-01-10T20:19:59Z", + "ModelActivity": "CMIP5", + "Experiment": "historical", + "Realization": "r1i1p1", + "Model": "GFDL-ESM2G", + "Login": "N/A", + "SimTrackingDate": "2012-01-10T20:19:59Z" + }, + "default": { + "source": "UKMETOFFICE-HadISST-v1-1", + "r1i1p1": { + "TROPICS": { + "bias_xy": { + "ann": "-0.591", + "son": "-0.641", + "mam": "-0.552", + "jja": "-0.572", + "djf": "-0.599" + }, + "cor_xy": { + "ann": "0.928", + "son": "0.93", + "mam": "0.90", + "jja": "0.94", + "djf": "0.90" + }, + "custom_ref_min": 280.54689315404653, + "mae_xy": { + "ann": "0.888", + "son": "1.021", + "mam": "0.999", + "jja": "0.946", + "djf": "0.995" + }, + "mean-obs_xy": { + "ann": "299.283", + "son": "299.089", + "mam": "299.698", + "jja": "299.085", + "djf": "299.265" + }, + "mean_xy": { + "ann": "298.664", + "son": "298.405", + "mam": "299.128", + "jja": "298.476", + "djf": "298.654" + }, + "rms_devzm": { + "ann": "0.874" + }, + "rms_xy": { + "ann": "1.098", + "son": "1.285", + "mam": "1.300", + "jja": "1.195", + "djf": "1.240" + }, + "rms_xyt": { + "ann": "1.305" + }, + "rms_y": { + "ann": "0.709" + }, + "rmsc_xy": { + "ann": "0.926", + "son": "1.114", + "mam": "1.177", + "jja": "1.049", + "djf": "1.085" + }, + "some_custom": 1.5, + "std-obs_xy": { + "ann": "2.493", + "son": "3.042", + "mam": "2.568", + "jja": "2.986", + "djf": "2.402" + }, + "std-obs_xy_devzm": { + "ann": "1.569" + }, + "std-obs_xyt": { + "ann": "2.835" + }, + "std_xy": { + "ann": "2.315", + "son": "3.063", + "mam": "2.615", + "jja": "2.942", + "djf": "2.422" + }, + "std_xy_devzm": { + "ann": "1.414" + }, + "std_xyt": { + "ann": "2.887" + } + }, + "global": { + "bias_xy": { + "ann": "-0.155", + "son": "-0.408", + "mam": "-0.009", + "jja": "-0.277", + "djf": "0.077" + }, + "cor_xy": { + "ann": "0.991", + "son": "0.99", + "mam": "0.99", + "jja": "0.99", + "djf": "0.98" + }, + "custom_ref_min": 271.2738442661475, + "mae_xy": { + "ann": "1.142", + "son": "1.144", + "mam": "1.288", + "jja": "1.043", + "djf": "1.444" + }, + "mean-obs_xy": { + "ann": "291.581", + "son": "291.440", + "mam": "291.719", + "jja": "291.582", + "djf": "291.612" + }, + "mean_xy": { + "ann": "291.396", + "son": "290.973", + "mam": "291.697", + "jja": "291.238", + "djf": "291.684" + }, + "rms_devzm": { + "ann": "0.907" + }, + "rms_xy": { + "ann": "1.418", + "son": "1.465", + "mam": "1.627", + "jja": "1.347", + "djf": "1.835" + }, + "rms_xyt": { + "ann": "1.625" + }, + "rms_y": { + "ann": "1.265" + }, + "rmsc_xy": { + "ann": "1.410", + "son": "1.407", + "mam": "1.627", + "jja": "1.318", + "djf": "1.833" + }, + "some_custom": 1.5, + "std-obs_xy": { + "ann": "9.822", + "son": "9.998", + "mam": "10.088", + "jja": "9.901", + "djf": "9.798" + }, + "std-obs_xy_devzm": { + "ann": "1.741" + }, + "std-obs_xyt": { + "ann": "9.982" + }, + "std_xy": { + "ann": "9.299", + "son": "9.669", + "mam": "9.597", + "jja": "9.529", + "djf": "9.142" + }, + "std_xy_devzm": { + "ann": "1.694" + }, + "std_xyt": { + "ann": "9.537" + } + }, + "NHEX": { + "bias_xy": { + "ann": "-1.305", + "son": "-1.559", + "mam": "-1.260", + "jja": "-1.073", + "djf": "-1.339" + }, + "cor_xy": { + "ann": "0.986", + "son": "0.99", + "mam": "0.98", + "jja": "0.99", + "djf": "0.97" + }, + "custom_ref_min": 271.2738442661475, + "mae_xy": { + "ann": "1.530", + "son": "1.748", + "mam": "1.572", + "jja": "1.361", + "djf": "1.745" + }, + "mean-obs_xy": { + "ann": "284.155", + "son": "286.183", + "mam": "281.784", + "jja": "286.825", + "djf": "281.859" + }, + "mean_xy": { + "ann": "282.816", + "son": "284.581", + "mam": "280.485", + "jja": "285.641", + "djf": "280.510" + }, + "rms_devzm": { + "ann": "1.154" + }, + "rms_xy": { + "ann": "1.874", + "son": "2.092", + "mam": "1.983", + "jja": "1.732", + "djf": "2.180" + }, + "rms_xyt": { + "ann": "2.048" + }, + "rms_y": { + "ann": "1.549" + }, + "rmsc_xy": { + "ann": "1.345", + "son": "1.395", + "mam": "1.532", + "jja": "1.359", + "djf": "1.721" + }, + "some_custom": 1.5, + "std-obs_xy": { + "ann": "7.949", + "son": "8.619", + "mam": "7.334", + "jja": "8.742", + "djf": "7.360" + }, + "std-obs_xy_devzm": { + "ann": "2.439" + }, + "std-obs_xyt": { + "ann": "8.506" + }, + "std_xy": { + "ann": "8.167", + "son": "8.836", + "mam": "7.570", + "jja": "8.920", + "djf": "7.626" + }, + "std_xy_devzm": { + "ann": "2.515" + }, + "std_xyt": { + "ann": "8.695" + } + }, + "SHEX": { + "bias_xy": { + "ann": "1.213", + "son": "0.608", + "mam": "1.597", + "jja": "0.657", + "djf": "2.001" + }, + "cor_xy": { + "ann": "0.992", + "son": "0.98", + "mam": "0.99", + "jja": "0.98", + "djf": "0.99" + }, + "custom_ref_min": 271.2935035335274, + "mae_xy": { + "ann": "1.374", + "son": "1.035", + "mam": "1.637", + "jja": "1.039", + "djf": "2.059" + }, + "mean-obs_xy": { + "ann": "282.248", + "son": "280.977", + "mam": "283.290", + "jja": "281.092", + "djf": "283.654" + }, + "mean_xy": { + "ann": "283.458", + "son": "281.581", + "mam": "284.885", + "jja": "281.751", + "djf": "285.650" + }, + "rms_devzm": { + "ann": "0.806" + }, + "rms_xy": { + "ann": "1.613", + "son": "1.346", + "mam": "1.901", + "jja": "1.359", + "djf": "2.407" + }, + "rms_xyt": { + "ann": "1.854" + }, + "rms_y": { + "ann": "1.383" + }, + "rmsc_xy": { + "ann": "1.063", + "son": "1.200", + "mam": "1.032", + "jja": "1.190", + "djf": "1.338" + }, + "some_custom": 1.5, + "std-obs_xy": { + "ann": "7.168", + "son": "6.773", + "mam": "7.589", + "jja": "6.712", + "djf": "7.638" + }, + "std-obs_xy_devzm": { + "ann": "1.545" + }, + "std-obs_xyt": { + "ann": "7.320" + }, + "std_xy": { + "ann": "6.591", + "son": "6.439", + "mam": "6.987", + "jja": "6.432", + "djf": "6.646" + }, + "std_xy_devzm": { + "ann": "1.589" + }, + "std_xyt": { + "ann": "6.937" + } + } + } + }, + "InputRegionMD5": "e3b7143d72d6b4824e20dabd80acd869", + "InputClimatologyFileName": "tos_GFDL-ESM2G_Omon_historical_r1i1p1_198501-200512-clim.nc", + "units": "K", + "InputClimatologyMD5": "974a3339d34fcdd6a68d6e135f72cd78", + "InputRegionFileName": "sftlf_GFDL-ESM2G.nc" + } + }, + "Variable": { + "id": "tos" + }, + "json_version": 3.0, + "References": { + "default": { + "RefName": "UKMETOFFICE-HadISST-v1-1", + "MD5sum": "41833b403cad7052773dd933d1798a14", + "period": "198002-200501", + "filename": "tos_pcmdi-metrics_Omon_UKMETOFFICE-HadISST-v1-1_198002-200501-clim.nc", + "shape": "(12, 180, 360)", + "CMIP_CMOR_TABLE": "Omon", + "RefTrackingDate": "Wed Jan 15 10:57:20 2014" + } + }, + "RegionalMasking": { + "TROPICS": { + "domain": { + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" + }, + "id": "TROPICS" + }, + "global": { + "id": "global" + }, + "NHEX": { + "domain": { + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" + }, + "id": "NHEX" + }, + "SHEX": { + "domain": { + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" + }, + "id": "SHEX" + } + }, + "GridInfo": { + "GridResolution": [ + 72, + 144 + ], + "GridName": "2.5x2.5", + "RegridMethod": "linear", + "RegridTool": "esmf" + }, + "METRICS": { + "rms_xyt": { + "Abstract": "Compute Spatial and Temporal Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatio-Temporal Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "rms_xy": { + "Abstract": "Compute Spatial Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "rmsc_xy": { + "Abstract": "Compute Centered Spatial Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "bias_xy": { + "Abstract": "Compute Full Average of Model - Observation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Bias" + }, + "mae_xy": { + "Abstract": "Compute Full Average of Absolute Difference Between Model And Observation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Mean Absolute Error" + }, + "cor_xy": { + "Abstract": "Compute Spatial Correlation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Correlation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "mean_xy": { + "Abstract": "Area Mean (area weighted)", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Mean" + }, + "std_xy": { + "Abstract": "Compute Spatial Standard Deviation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Standard Deviation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "std_xyt": { + "Abstract": "Compute Space-Time Standard Deviation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial-temporal Standard Deviation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "seasonal_mean": { + "Abstract": "Compute Seasonal Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Seasonal Mean", + "Comments": "Assumes input are 12 months climatology" + }, + "annual_mean": { + "Abstract": "Compute Annual Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Annual Mean", + "Comments": "Assumes input are 12 months climatology", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "zonal_mean": { + "Abstract": "Compute Zonal Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Zonal Mean", + "Comments": "", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "some_custom": { + "Abstract": "For demo purpose really does nothing", + "Contact": "doutriaux1@llnl.gov", + "Name": "SomeCustom" + }, + "custom_ref_min": { + "Abstract": "Computes Custom Minimum for demo purposes", + "Contact": "doutriaux1@llnl.gov", + "Name": "Custom Minimum" + } + }, + "json_structure": [ + "model", + "reference", + "rip", + "region", + "statistic", + "season" + ], + "provenance": { + "platform": { + "OS": "Darwin", + "Version": "16.7.0", + "Name": "loki" + }, + "userId": "doutriaux1", + "osAccess": false, + "commandLine": "/Users/doutriaux1/anaconda2/envs/cdat8/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/basic_test_parameters_file.py", + "date": "2018-05-03 09:24:14", + "conda": { + "Version": "4.5.1", + "buildVersion": "3.9.1", + "PythonVersion": "2.7.14.final.0", + "Platform": "osx-64" + }, + "packages": { + "blas": "1.0.1", + "cdms": "3.0", + "CDP": "1.3.2", + "cdtime": "3.0", + "cdutil": "8.0", + "clapack": "3.2.1", + "lapack": "3.6.1", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0.2018.04.27.14.53.gfc2e5fc5", + "vtk": "8.0.1.8.0", + "PMP": "ga068fe0", + "PMPObs": null + }, + "openGL": { + "vendor": "ATI Technologies Inc.", + "renderer": "AMD Radeon Pro 455 OpenGL Engine", + "version": "2.1 ATI-1.51.8", + "shading language version": "1.20", + "GLX": { + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } + } + } + } +} \ No newline at end of file diff --git a/tests/pcmdi/keep_going_on_error_varnameTest/tos_2.5x2.5_esmf_linear_metrics.json b/tests/pcmdi/keep_going_on_error_varnameTest/tos_2.5x2.5_esmf_linear_metrics.json index fc34c2996..49190241b 100644 --- a/tests/pcmdi/keep_going_on_error_varnameTest/tos_2.5x2.5_esmf_linear_metrics.json +++ b/tests/pcmdi/keep_going_on_error_varnameTest/tos_2.5x2.5_esmf_linear_metrics.json @@ -44,7 +44,7 @@ "ann": "299.282", "son": "299.089", "mam": "299.697", - "jja": "299.085", + "jja": "299.086", "djf": "299.264" }, "mean_xy": { @@ -68,7 +68,7 @@ "ann": "1.304" }, "rms_y": { - "ann": "0.711" + "ann": "0.713" }, "rmsc_xy": { "ann": "0.925", @@ -78,10 +78,10 @@ "djf": "1.085" }, "std-obs_xy": { - "ann": "2.492", + "ann": "2.493", "son": "3.043", "mam": "2.567", - "jja": "2.987", + "jja": "2.988", "djf": "2.401" }, "std-obs_xy_devzm": { @@ -107,7 +107,7 @@ "global": { "bias_xy": { "ann": "-0.155", - "son": "-0.408", + "son": "-0.407", "mam": "-0.009", "jja": "-0.277", "djf": "0.078" @@ -127,21 +127,21 @@ "djf": "1.444" }, "mean-obs_xy": { - "ann": "291.585", - "son": "291.443", - "mam": "291.723", - "jja": "291.584", - "djf": "291.616" + "ann": "291.581", + "son": "291.440", + "mam": "291.719", + "jja": "291.582", + "djf": "291.612" }, "mean_xy": { - "ann": "291.397", - "son": "290.973", - "mam": "291.698", + "ann": "291.399", + "son": "290.975", + "mam": "291.700", "jja": "291.237", - "djf": "291.686" + "djf": "291.689" }, "rms_devzm": { - "ann": "0.906" + "ann": "0.907" }, "rms_xy": { "ann": "1.418", @@ -154,37 +154,37 @@ "ann": "1.625" }, "rms_y": { - "ann": "1.266" + "ann": "1.267" }, "rmsc_xy": { - "ann": "1.410", + "ann": "1.409", "son": "1.407", "mam": "1.627", "jja": "1.317", "djf": "1.833" }, "std-obs_xy": { - "ann": "9.823", - "son": "9.999", - "mam": "10.088", - "jja": "9.902", - "djf": "9.798" + "ann": "9.825", + "son": "10.000", + "mam": "10.090", + "jja": "9.904", + "djf": "9.801" }, "std-obs_xy_devzm": { - "ann": "1.741" + "ann": "1.742" }, "std-obs_xyt": { - "ann": "9.982" + "ann": "9.984" }, "std_xy": { - "ann": "9.297", + "ann": "9.298", "son": "9.667", "mam": "9.596", - "jja": "9.526", - "djf": "9.141" + "jja": "9.527", + "djf": "9.140" }, "std_xy_devzm": { - "ann": "1.696" + "ann": "1.695" }, "std_xyt": { "ann": "9.535" @@ -192,11 +192,11 @@ }, "NHEX": { "bias_xy": { - "ann": "-1.306", - "son": "-1.560", - "mam": "-1.261", - "jja": "-1.075", - "djf": "-1.339" + "ann": "-1.304", + "son": "-1.558", + "mam": "-1.260", + "jja": "-1.071", + "djf": "-1.338" }, "cor_xy": { "ann": "0.986", @@ -206,83 +206,83 @@ "djf": "0.97" }, "mae_xy": { - "ann": "1.530", - "son": "1.749", + "ann": "1.529", + "son": "1.748", "mam": "1.573", - "jja": "1.360", - "djf": "1.746" + "jja": "1.358", + "djf": "1.745" }, "mean-obs_xy": { "ann": "284.145", "son": "286.171", - "mam": "281.777", - "jja": "286.811", - "djf": "281.852" + "mam": "281.778", + "jja": "286.814", + "djf": "281.851" }, "mean_xy": { - "ann": "282.824", - "son": "284.589", - "mam": "280.493", - "jja": "285.651", - "djf": "280.516" + "ann": "282.822", + "son": "284.586", + "mam": "280.490", + "jja": "285.644", + "djf": "280.520" }, "rms_devzm": { - "ann": "1.153" + "ann": "1.154" }, "rms_xy": { - "ann": "1.874", - "son": "2.092", + "ann": "1.873", + "son": "2.091", "mam": "1.984", - "jja": "1.732", - "djf": "2.181" + "jja": "1.729", + "djf": "2.180" }, "rms_xyt": { - "ann": "2.048" + "ann": "2.047" }, "rms_y": { "ann": "1.550" }, "rmsc_xy": { - "ann": "1.344", + "ann": "1.345", "son": "1.395", "mam": "1.532", "jja": "1.357", "djf": "1.721" }, "std-obs_xy": { - "ann": "7.951", - "son": "8.620", - "mam": "7.337", - "jja": "8.740", + "ann": "7.952", + "son": "8.621", + "mam": "7.338", + "jja": "8.743", "djf": "7.365" }, "std-obs_xy_devzm": { - "ann": "2.436" + "ann": "2.439" }, "std-obs_xyt": { - "ann": "8.506" + "ann": "8.508" }, "std_xy": { - "ann": "8.167", - "son": "8.835", - "mam": "7.569", - "jja": "8.921", - "djf": "7.624" + "ann": "8.170", + "son": "8.840", + "mam": "7.573", + "jja": "8.923", + "djf": "7.627" }, "std_xy_devzm": { - "ann": "2.516" + "ann": "2.515" }, "std_xyt": { - "ann": "8.695" + "ann": "8.697" } }, "SHEX": { "bias_xy": { "ann": "1.214", - "son": "0.609", + "son": "0.610", "mam": "1.597", - "jja": "0.657", - "djf": "2.002" + "jja": "0.658", + "djf": "2.001" }, "cor_xy": { "ann": "0.992", @@ -295,25 +295,25 @@ "ann": "1.374", "son": "1.035", "mam": "1.637", - "jja": "1.039", - "djf": "2.060" + "jja": "1.040", + "djf": "2.059" }, "mean-obs_xy": { - "ann": "282.245", - "son": "280.974", - "mam": "283.288", - "jja": "281.091", - "djf": "283.651" + "ann": "282.242", + "son": "280.972", + "mam": "283.285", + "jja": "281.088", + "djf": "283.648" }, "mean_xy": { - "ann": "283.465", - "son": "281.588", - "mam": "284.892", - "jja": "281.757", - "djf": "285.658" + "ann": "283.468", + "son": "281.591", + "mam": "284.895", + "jja": "281.760", + "djf": "285.660" }, "rms_devzm": { - "ann": "0.806" + "ann": "0.807" }, "rms_xy": { "ann": "1.613", @@ -329,37 +329,37 @@ "ann": "1.384" }, "rmsc_xy": { - "ann": "1.063", - "son": "1.201", + "ann": "1.062", + "son": "1.200", "mam": "1.032", "jja": "1.189", - "djf": "1.336" + "djf": "1.337" }, "std-obs_xy": { - "ann": "7.167", - "son": "6.772", - "mam": "7.588", - "jja": "6.711", - "djf": "7.637" + "ann": "7.168", + "son": "6.773", + "mam": "7.589", + "jja": "6.712", + "djf": "7.639" }, "std-obs_xy_devzm": { "ann": "1.545" }, "std-obs_xyt": { - "ann": "7.319" + "ann": "7.320" }, "std_xy": { - "ann": "6.595", - "son": "6.445", - "mam": "6.990", - "jja": "6.436", - "djf": "6.650" + "ann": "6.598", + "son": "6.448", + "mam": "6.993", + "jja": "6.438", + "djf": "6.653" }, "std_xy_devzm": { "ann": "1.591" }, "std_xyt": { - "ann": "6.941" + "ann": "6.943" } } } @@ -392,7 +392,7 @@ }, "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -406,13 +406,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -510,47 +510,54 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "2.6.32-696.el6.x86_64", - "Name": "crunchy.llnl.gov" + "Version": "4.13.0-39-generic", + "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/export/doutriaux1/miniconda2/envs/pmp/bin/pcmdi_metrics_driver.py -p /export/doutriaux1/git/pcmdi_metrics/tests/pcmdi/keep_going_on_error_varname_test.py", - "date": "2017-06-09 14:14:27", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/keep_going_on_error_varname_test.py", + "date": "2018-04-26 11:07:13", "conda": { - "Platform": "linux-64", - "Version": "4.3.11", - "IsPrivate": "False", - "envVersion": "4.3.11", - "buildVersion": "2.1.10", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/export/doutriaux1/miniconda2 (writable)", - "DefaultEnvironment": "/export/doutriaux1/miniconda2/envs/pmp" + "Version": "4.5.0", + "buildVersion": "3.7.2", + "PythonVersion": "2.7.14.final.0", + "Platform": "linux-64" }, "packages": { - "cdms": "2.10", - "CDP": "1.0.3", - "cdtime": "2.10", - "cdutil": "2.10", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.10", - "mesalib": "17.0.3", - "numpy": "1.12.1", - "python": "2.7.13", - "vcs": "2.10", - "vtk": "7.1.0.2.10", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "matplotlib": null, - "PMP": "ga507630", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { + "vendor": "X.Org", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", + "shading language version": "1.30", "GLX": { - "client": {}, - "server": {} + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } } } } diff --git a/tests/pcmdi/keep_going_on_error_varnameTest/tos_2.5x2.5_esmf_linear_metrics.json.mac b/tests/pcmdi/keep_going_on_error_varnameTest/tos_2.5x2.5_esmf_linear_metrics.json.mac new file mode 100644 index 000000000..9ffecc79c --- /dev/null +++ b/tests/pcmdi/keep_going_on_error_varnameTest/tos_2.5x2.5_esmf_linear_metrics.json.mac @@ -0,0 +1,564 @@ +{ + "DISCLAIMER": "USER-NOTICE: The results in this file were produced with the PMP v1.1 (https://github.com/PCMDI/pcmdi_metrics). They are for research purposes only. They are subject to ongoing quality control and change as the PMP software advances, interpolation methods are modified, observational data sets are updated, problems with model data are corrected, etc. Use of these results for research (presentation, publications, etc.) should reference: Gleckler, P. J., C. Doutriaux, P. J. Durack, K. E. Taylor, Y. Zhang, and D. N. Williams, E. Mason, and J. Servonnat (2016), A more powerful reality test for climate models, Eos, 97, doi:10.1029/2016EO051663. If any problems are uncovered in using these results please contact the PMP development team at pcmdi-metrics@llnl.gov\n", + "RESULTS": { + "GFDL-ESM2G": { + "SimulationDescription": { + "Center": "N/A", + "ModellingGroup": "NOAA GFDL", + "ModelFreeSpace": "N/A", + "MIPTable": "Omon", + "creation_date": "2012-01-10T20:19:59Z", + "ModelActivity": "CMIP5", + "Experiment": "historical", + "Realization": "r1i1p1", + "Model": "GFDL-ESM2G", + "Login": "N/A", + "SimTrackingDate": "2012-01-10T20:19:59Z" + }, + "default": { + "source": "UKMETOFFICE-HadISST-v1-1", + "r1i1p1": { + "TROPICS": { + "bias_xy": { + "ann": "-0.591", + "son": "-0.641", + "mam": "-0.552", + "jja": "-0.572", + "djf": "-0.599" + }, + "cor_xy": { + "ann": "0.928", + "son": "0.93", + "mam": "0.90", + "jja": "0.94", + "djf": "0.90" + }, + "mae_xy": { + "ann": "0.888", + "son": "1.021", + "mam": "0.999", + "jja": "0.946", + "djf": "0.995" + }, + "mean-obs_xy": { + "ann": "299.283", + "son": "299.089", + "mam": "299.698", + "jja": "299.085", + "djf": "299.265" + }, + "mean_xy": { + "ann": "298.664", + "son": "298.405", + "mam": "299.128", + "jja": "298.476", + "djf": "298.654" + }, + "rms_devzm": { + "ann": "0.874" + }, + "rms_xy": { + "ann": "1.098", + "son": "1.285", + "mam": "1.300", + "jja": "1.195", + "djf": "1.240" + }, + "rms_xyt": { + "ann": "1.305" + }, + "rms_y": { + "ann": "0.709" + }, + "rmsc_xy": { + "ann": "0.926", + "son": "1.114", + "mam": "1.177", + "jja": "1.049", + "djf": "1.085" + }, + "std-obs_xy": { + "ann": "2.493", + "son": "3.042", + "mam": "2.568", + "jja": "2.986", + "djf": "2.402" + }, + "std-obs_xy_devzm": { + "ann": "1.569" + }, + "std-obs_xyt": { + "ann": "2.835" + }, + "std_xy": { + "ann": "2.315", + "son": "3.063", + "mam": "2.615", + "jja": "2.942", + "djf": "2.422" + }, + "std_xy_devzm": { + "ann": "1.414" + }, + "std_xyt": { + "ann": "2.887" + } + }, + "global": { + "bias_xy": { + "ann": "-0.155", + "son": "-0.408", + "mam": "-0.009", + "jja": "-0.277", + "djf": "0.077" + }, + "cor_xy": { + "ann": "0.991", + "son": "0.99", + "mam": "0.99", + "jja": "0.99", + "djf": "0.98" + }, + "mae_xy": { + "ann": "1.142", + "son": "1.144", + "mam": "1.288", + "jja": "1.043", + "djf": "1.444" + }, + "mean-obs_xy": { + "ann": "291.581", + "son": "291.440", + "mam": "291.719", + "jja": "291.582", + "djf": "291.612" + }, + "mean_xy": { + "ann": "291.396", + "son": "290.973", + "mam": "291.697", + "jja": "291.238", + "djf": "291.684" + }, + "rms_devzm": { + "ann": "0.907" + }, + "rms_xy": { + "ann": "1.418", + "son": "1.465", + "mam": "1.627", + "jja": "1.347", + "djf": "1.835" + }, + "rms_xyt": { + "ann": "1.625" + }, + "rms_y": { + "ann": "1.265" + }, + "rmsc_xy": { + "ann": "1.410", + "son": "1.407", + "mam": "1.627", + "jja": "1.318", + "djf": "1.833" + }, + "std-obs_xy": { + "ann": "9.822", + "son": "9.998", + "mam": "10.088", + "jja": "9.901", + "djf": "9.798" + }, + "std-obs_xy_devzm": { + "ann": "1.741" + }, + "std-obs_xyt": { + "ann": "9.982" + }, + "std_xy": { + "ann": "9.299", + "son": "9.669", + "mam": "9.597", + "jja": "9.529", + "djf": "9.142" + }, + "std_xy_devzm": { + "ann": "1.694" + }, + "std_xyt": { + "ann": "9.537" + } + }, + "NHEX": { + "bias_xy": { + "ann": "-1.305", + "son": "-1.559", + "mam": "-1.260", + "jja": "-1.073", + "djf": "-1.339" + }, + "cor_xy": { + "ann": "0.986", + "son": "0.99", + "mam": "0.98", + "jja": "0.99", + "djf": "0.97" + }, + "mae_xy": { + "ann": "1.530", + "son": "1.748", + "mam": "1.572", + "jja": "1.361", + "djf": "1.745" + }, + "mean-obs_xy": { + "ann": "284.155", + "son": "286.183", + "mam": "281.784", + "jja": "286.825", + "djf": "281.859" + }, + "mean_xy": { + "ann": "282.816", + "son": "284.581", + "mam": "280.485", + "jja": "285.641", + "djf": "280.510" + }, + "rms_devzm": { + "ann": "1.154" + }, + "rms_xy": { + "ann": "1.874", + "son": "2.092", + "mam": "1.983", + "jja": "1.732", + "djf": "2.180" + }, + "rms_xyt": { + "ann": "2.048" + }, + "rms_y": { + "ann": "1.549" + }, + "rmsc_xy": { + "ann": "1.345", + "son": "1.395", + "mam": "1.532", + "jja": "1.359", + "djf": "1.721" + }, + "std-obs_xy": { + "ann": "7.949", + "son": "8.619", + "mam": "7.334", + "jja": "8.742", + "djf": "7.360" + }, + "std-obs_xy_devzm": { + "ann": "2.439" + }, + "std-obs_xyt": { + "ann": "8.506" + }, + "std_xy": { + "ann": "8.167", + "son": "8.836", + "mam": "7.570", + "jja": "8.920", + "djf": "7.626" + }, + "std_xy_devzm": { + "ann": "2.515" + }, + "std_xyt": { + "ann": "8.695" + } + }, + "SHEX": { + "bias_xy": { + "ann": "1.213", + "son": "0.608", + "mam": "1.597", + "jja": "0.657", + "djf": "2.001" + }, + "cor_xy": { + "ann": "0.992", + "son": "0.98", + "mam": "0.99", + "jja": "0.98", + "djf": "0.99" + }, + "mae_xy": { + "ann": "1.374", + "son": "1.035", + "mam": "1.637", + "jja": "1.039", + "djf": "2.059" + }, + "mean-obs_xy": { + "ann": "282.248", + "son": "280.977", + "mam": "283.290", + "jja": "281.092", + "djf": "283.654" + }, + "mean_xy": { + "ann": "283.458", + "son": "281.581", + "mam": "284.885", + "jja": "281.751", + "djf": "285.650" + }, + "rms_devzm": { + "ann": "0.806" + }, + "rms_xy": { + "ann": "1.613", + "son": "1.346", + "mam": "1.901", + "jja": "1.359", + "djf": "2.407" + }, + "rms_xyt": { + "ann": "1.854" + }, + "rms_y": { + "ann": "1.383" + }, + "rmsc_xy": { + "ann": "1.063", + "son": "1.200", + "mam": "1.032", + "jja": "1.190", + "djf": "1.338" + }, + "std-obs_xy": { + "ann": "7.168", + "son": "6.773", + "mam": "7.589", + "jja": "6.712", + "djf": "7.638" + }, + "std-obs_xy_devzm": { + "ann": "1.545" + }, + "std-obs_xyt": { + "ann": "7.320" + }, + "std_xy": { + "ann": "6.591", + "son": "6.439", + "mam": "6.987", + "jja": "6.432", + "djf": "6.646" + }, + "std_xy_devzm": { + "ann": "1.589" + }, + "std_xyt": { + "ann": "6.937" + } + } + } + }, + "InputRegionMD5": null, + "InputClimatologyFileName": "tos_GFDL-ESM2G_Omon_historical_r1i1p1_198501-200512-clim.nc", + "units": "K", + "InputClimatologyMD5": "974a3339d34fcdd6a68d6e135f72cd78", + "InputRegionFileName": null + } + }, + "Variable": { + "id": "tos" + }, + "json_version": 3.0, + "References": { + "default": { + "RefName": "UKMETOFFICE-HadISST-v1-1", + "MD5sum": "41833b403cad7052773dd933d1798a14", + "period": "198002-200501", + "filename": "tos_pcmdi-metrics_Omon_UKMETOFFICE-HadISST-v1-1_198002-200501-clim.nc", + "shape": "(12, 180, 360)", + "CMIP_CMOR_TABLE": "Omon", + "RefTrackingDate": "Wed Jan 15 10:57:20 2014" + } + }, + "RegionalMasking": { + "global": { + "id": "global" + }, + "TROPICS": { + "domain": { + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" + }, + "id": "TROPICS" + }, + "terre": { + "id": "terre", + "value": 100.0 + }, + "ocean": { + "id": "ocean", + "value": 0 + }, + "NHEX": { + "domain": { + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" + }, + "id": "NHEX" + }, + "SHEX": { + "domain": { + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" + }, + "id": "SHEX" + } + }, + "GridInfo": { + "GridResolution": [ + 72, + 144 + ], + "GridName": "2.5x2.5", + "RegridMethod": "linear", + "RegridTool": "esmf" + }, + "METRICS": { + "rms_xyt": { + "Abstract": "Compute Spatial and Temporal Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatio-Temporal Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "rms_xy": { + "Abstract": "Compute Spatial Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "rmsc_xy": { + "Abstract": "Compute Centered Spatial Root Mean Square", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Root Mean Square", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "bias_xy": { + "Abstract": "Compute Full Average of Model - Observation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Bias" + }, + "mae_xy": { + "Abstract": "Compute Full Average of Absolute Difference Between Model And Observation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Mean Absolute Error" + }, + "cor_xy": { + "Abstract": "Compute Spatial Correlation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Correlation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "mean_xy": { + "Abstract": "Area Mean (area weighted)", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Mean" + }, + "std_xy": { + "Abstract": "Compute Spatial Standard Deviation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial Standard Deviation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "std_xyt": { + "Abstract": "Compute Space-Time Standard Deviation", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Spatial-temporal Standard Deviation", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "seasonal_mean": { + "Abstract": "Compute Seasonal Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Seasonal Mean", + "Comments": "Assumes input are 12 months climatology" + }, + "annual_mean": { + "Abstract": "Compute Annual Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Annual Mean", + "Comments": "Assumes input are 12 months climatology", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + }, + "zonal_mean": { + "Abstract": "Compute Zonal Mean", + "Contact": "pcmdi-metrics@llnl.gov", + "Name": "Zonal Mean", + "Comments": "", + "URI": "http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html" + } + }, + "json_structure": [ + "model", + "reference", + "rip", + "region", + "statistic", + "season" + ], + "provenance": { + "platform": { + "OS": "Darwin", + "Version": "16.7.0", + "Name": "loki" + }, + "userId": "doutriaux1", + "osAccess": false, + "commandLine": "/Users/doutriaux1/anaconda2/envs/cdat8/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/keep_going_on_error_varname_test.py", + "date": "2018-05-03 09:24:12", + "conda": { + "Version": "4.5.1", + "buildVersion": "3.9.1", + "PythonVersion": "2.7.14.final.0", + "Platform": "osx-64" + }, + "packages": { + "blas": "1.0.1", + "cdms": "3.0", + "CDP": "1.3.2", + "cdtime": "3.0", + "cdutil": "8.0", + "clapack": "3.2.1", + "lapack": "3.6.1", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0.2018.04.27.14.53.gfc2e5fc5", + "vtk": "8.0.1.8.0", + "PMP": "ga068fe0", + "PMPObs": null + }, + "openGL": { + "vendor": "ATI Technologies Inc.", + "renderer": "AMD Radeon Pro 455 OpenGL Engine", + "version": "2.1 ATI-1.51.8", + "shading language version": "1.20", + "GLX": { + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } + } + } + } +} \ No newline at end of file diff --git a/tests/pcmdi/level_data/ta-200_2.5x2.5_regrid2_linear_metrics.json b/tests/pcmdi/level_data/ta-200_2.5x2.5_regrid2_linear_metrics.json index 21721081b..fb2cc2534 100644 --- a/tests/pcmdi/level_data/ta-200_2.5x2.5_regrid2_linear_metrics.json +++ b/tests/pcmdi/level_data/ta-200_2.5x2.5_regrid2_linear_metrics.json @@ -389,7 +389,7 @@ "RegionalMasking": { "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -398,13 +398,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -503,47 +503,54 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "2.6.32-696.el6.x86_64", - "Name": "crunchy.llnl.gov" + "Version": "4.13.0-39-generic", + "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/export/doutriaux1/miniconda2/envs/pmp/bin/pcmdi_metrics_driver.py -p /export/doutriaux1/git/pcmdi_metrics/tests/pcmdi/level_data_test.py", - "date": "2017-06-09 14:13:59", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/level_data_test.py", + "date": "2018-04-26 11:06:58", "conda": { - "Platform": "linux-64", - "Version": "4.3.11", - "IsPrivate": "False", - "envVersion": "4.3.11", - "buildVersion": "2.1.10", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/export/doutriaux1/miniconda2 (writable)", - "DefaultEnvironment": "/export/doutriaux1/miniconda2/envs/pmp" + "Version": "4.5.0", + "buildVersion": "3.7.2", + "PythonVersion": "2.7.14.final.0", + "Platform": "linux-64" }, "packages": { - "cdms": "2.10", - "CDP": "1.0.3", - "cdtime": "2.10", - "cdutil": "2.10", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.10", - "mesalib": "17.0.3", - "numpy": "1.12.1", - "python": "2.7.13", - "vcs": "2.10", - "vtk": "7.1.0.2.10", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "matplotlib": null, - "PMP": "ga507630", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { + "vendor": "X.Org", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", + "shading language version": "1.30", "GLX": { - "client": {}, - "server": {} + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } } } } diff --git a/tests/pcmdi/nosftlfTest/tas_2.5x2.5_esmf_linear_metrics.json b/tests/pcmdi/nosftlfTest/tas_2.5x2.5_esmf_linear_metrics.json index 3f1b8ad37..d368fdf26 100644 --- a/tests/pcmdi/nosftlfTest/tas_2.5x2.5_esmf_linear_metrics.json +++ b/tests/pcmdi/nosftlfTest/tas_2.5x2.5_esmf_linear_metrics.json @@ -393,7 +393,7 @@ }, "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -406,13 +406,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -510,47 +510,54 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "2.6.32-696.el6.x86_64", - "Name": "crunchy.llnl.gov" + "Version": "4.13.0-39-generic", + "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/export/doutriaux1/miniconda2/envs/pmp/bin/pcmdi_metrics_driver.py -p /export/doutriaux1/git/pcmdi_metrics/tests/pcmdi/nosftlf_test.py", - "date": "2017-06-09 14:13:52", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/nosftlf_test.py", + "date": "2018-04-26 11:07:02", "conda": { - "Platform": "linux-64", - "Version": "4.3.11", - "IsPrivate": "False", - "envVersion": "4.3.11", - "buildVersion": "2.1.10", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/export/doutriaux1/miniconda2 (writable)", - "DefaultEnvironment": "/export/doutriaux1/miniconda2/envs/pmp" + "Version": "4.5.0", + "buildVersion": "3.7.2", + "PythonVersion": "2.7.14.final.0", + "Platform": "linux-64" }, "packages": { - "cdms": "2.10", - "CDP": "1.0.3", - "cdtime": "2.10", - "cdutil": "2.10", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.10", - "mesalib": "17.0.3", - "numpy": "1.12.1", - "python": "2.7.13", - "vcs": "2.10", - "vtk": "7.1.0.2.10", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "matplotlib": null, - "PMP": "ga507630", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { + "vendor": "X.Org", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", + "shading language version": "1.30", "GLX": { - "client": {}, - "server": {} + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } } } } diff --git a/tests/pcmdi/obsByNameTest/tas_2.5x2.5_regrid2_linear_metrics.json b/tests/pcmdi/obsByNameTest/tas_2.5x2.5_regrid2_linear_metrics.json index 504a717c7..9ee54ec40 100644 --- a/tests/pcmdi/obsByNameTest/tas_2.5x2.5_regrid2_linear_metrics.json +++ b/tests/pcmdi/obsByNameTest/tas_2.5x2.5_regrid2_linear_metrics.json @@ -119,11 +119,11 @@ }, "terre": { "bias_xy": { - "ann": "-0.971", - "son": "-1.034", - "mam": "-0.982", - "jja": "-1.087", - "djf": "-0.738" + "ann": "-0.969", + "son": "-1.032", + "mam": "-0.980", + "jja": "-1.086", + "djf": "-0.735" }, "cor_xy": { "ann": "0.993", @@ -133,74 +133,74 @@ "djf": "0.99" }, "mae_xy": { - "ann": "1.883", - "son": "2.174", + "ann": "1.882", + "son": "2.173", "mam": "2.321", - "jja": "2.074", - "djf": "2.124" + "jja": "2.075", + "djf": "2.123" }, "mean-obs_xy": { - "ann": "282.528", - "son": "282.956", - "mam": "282.300", - "jja": "287.863", - "djf": "276.938" + "ann": "282.539", + "son": "282.965", + "mam": "282.315", + "jja": "287.861", + "djf": "276.961" }, "mean_xy": { - "ann": "281.562", - "son": "281.902", - "mam": "281.375", - "jja": "286.739", - "djf": "276.220" + "ann": "281.569", + "son": "281.908", + "mam": "281.384", + "jja": "286.736", + "djf": "276.237" }, "rms_devzm": { - "ann": "1.806" + "ann": "1.807" }, "rms_xy": { - "ann": "2.364", + "ann": "2.363", "son": "2.722", - "mam": "2.949", - "jja": "2.596", - "djf": "2.710" + "mam": "2.950", + "jja": "2.597", + "djf": "2.709" }, "rms_xyt": { "ann": "2.899" }, "rms_y": { - "ann": "1.676" + "ann": "1.681" }, "rmsc_xy": { "ann": "2.155", - "son": "2.517", - "mam": "2.781", - "jja": "2.358", + "son": "2.518", + "mam": "2.782", + "jja": "2.359", "djf": "2.607" }, "std-obs_xy": { - "ann": "18.263", - "son": "18.455", - "mam": "19.780", - "jja": "19.435", - "djf": "20.035" + "ann": "18.272", + "son": "18.466", + "mam": "19.788", + "jja": "19.450", + "djf": "20.037" }, "std-obs_xy_devzm": { "ann": "4.780" }, "std-obs_xyt": { - "ann": "20.131" + "ann": "20.138" }, "std_xy": { - "ann": "18.015", - "son": "18.795", - "mam": "19.042", - "jja": "19.435", - "djf": "19.415" + "ann": "18.025", + "son": "18.806", + "mam": "19.052", + "jja": "19.448", + "djf": "19.421" }, "std_xy_devzm": { - "ann": "5.025" + "ann": "5.026" }, "std_xyt": { - "ann": "19.834" + "ann": "19.842" } }, "global": { @@ -483,7 +483,7 @@ "RegionalMasking": { "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -496,13 +496,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -600,47 +600,43 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "2.6.32-696.3.1.el6.x86_64", - "Name": "crunchy.llnl.gov" + "Version": "4.13.0-39-generic", + "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/export/doutriaux1/miniconda2/envs/dev-nox/bin/pcmdi_metrics_driver.py -p /export/doutriaux1/git/pcmdi_metrics/tests/pcmdi/obs_by_name_test.py", - "date": "2017-10-12 13:38:43", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/obs_by_name_test.py", + "date": "2018-04-26 11:07:09", "conda": { - "Platform": "linux-64", - "Version": "4.3.25", - "IsPrivate": "False", - "envVersion": "4.3.25", - "buildVersion": "3.0.15", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/export/doutriaux1/miniconda2 (writable)", - "DefaultEnvironment": "/export/doutriaux1/miniconda2/envs/dev-nox" + "Version": "4.5.0", + "buildVersion": "3.7.2", + "PythonVersion": "2.7.14.final.0", + "Platform": "linux-64" }, "packages": { - "cdms": "2.12", - "CDP": "2017.09.07", - "cdtime": "2.12", - "cdutil": "2.12", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.12", - "python": "2.7.13", - "matplotlib": "1.5.3", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", "mesalib": "17.2.0", - "numpy": "1.13.1", - "vcs": "2.12.2017.09.13.00.29.5669624a25139ad2e19e4af8b921d0571338375d", - "vtk": "7.1.0.2.12", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "PMP": "g8bcb816", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { - "vendor": "VMware, Inc.", - "renderer": "Gallium 0.4 on llvmpipe (LLVM 3.6, 128 bits)", - "version": "2.1 Mesa 11.0.7", + "vendor": "X.Org", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", "shading language version": "1.30", "GLX": { "client": { diff --git a/tests/pcmdi/salinityTest/sos_2.5x2.5_esmf_linear_metrics.json b/tests/pcmdi/salinityTest/sos_2.5x2.5_esmf_linear_metrics.json index 7fb0a5120..e27e4208e 100644 --- a/tests/pcmdi/salinityTest/sos_2.5x2.5_esmf_linear_metrics.json +++ b/tests/pcmdi/salinityTest/sos_2.5x2.5_esmf_linear_metrics.json @@ -507,42 +507,42 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "4.13.0-36-generic", + "Version": "4.13.0-39-generic", "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/home/doutriaux1/anaconda2/envs/nightly-mesa/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/salinity_test.py", - "date": "2018-03-15 11:19:00", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/salinity_test.py", + "date": "2018-04-26 11:07:12", "conda": { - "Version": "4.4.11", - "buildVersion": "3.7.1", + "Version": "4.5.0", + "buildVersion": "3.7.2", "PythonVersion": "2.7.14.final.0", "Platform": "linux-64" }, "packages": { - "blas": "0.2.20", - "cdms": "2.12.2018.03.13.23.52.g2886f2a.npy1.13", - "CDP": "1.2.3", - "cdtime": "2.12.2018.03.14.21.54.g7703b9a.np1.13", - "cdutil": "2.12.2018.03.14.22.35.g1c4ea5f", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.1.0.dev52", - "esmpy": "7.1.0.dev52", - "genutil": "2.12.2018.03.14.18.43.ga1c6466.npy1.13", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", "python": "2.7.14", - "matplotlib": "2.2.0", + "matplotlib": "2.2.2", "mesalib": "17.2.0", - "numpy": "1.13.3", - "vcs": "2.12.2018.03.14.18.21.g9d7eb3ed", - "vtk": "8.0.1.2.12.2018.03.13.09.50.g9a839a5", - "PMP": "g46e2aa6", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", + "blas": null, + "PMP": "geb4d089", "PMPObs": null }, "openGL": { "vendor": "X.Org", - "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-36-generic, LLVM 5.0.0)", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", "version": "3.0 Mesa 17.2.8", "shading language version": "1.30", "GLX": { diff --git a/tests/pcmdi/salinityTest/sos_2.5x2.5_esmf_linear_metrics.json.mac b/tests/pcmdi/salinityTest/sos_2.5x2.5_esmf_linear_metrics.json.mac index 587d51f97..281ce96d4 100644 --- a/tests/pcmdi/salinityTest/sos_2.5x2.5_esmf_linear_metrics.json.mac +++ b/tests/pcmdi/salinityTest/sos_2.5x2.5_esmf_linear_metrics.json.mac @@ -26,10 +26,10 @@ "TROPICS": { "bias_xy": { "ann": "-0.162", - "son": "-0.191", - "mam": "-0.106", - "jja": "-0.174", - "djf": "-0.179" + "son": "-0.190", + "mam": "-0.105", + "jja": "-0.173", + "djf": "-0.178" }, "cor_xy": { "ann": "0.851", @@ -39,18 +39,18 @@ "djf": "0.85" }, "mae_xy": { - "ann": "0.422", + "ann": "0.421", "son": "0.462", "mam": "0.460", "jja": "0.478", "djf": "0.417" }, "mean-obs_xy": { - "ann": "35.138", - "son": "35.144", + "ann": "35.141", + "son": "35.146", "mam": "35.094", "jja": "35.182", - "djf": "35.167" + "djf": "35.168" }, "mean_xy": { "ann": "34.936", @@ -60,40 +60,40 @@ "djf": "34.946" }, "rms_devzm": { - "ann": "0.433" + "ann": "0.432" }, "rms_xy": { - "ann": "0.529", + "ann": "0.528", "son": "0.577", - "mam": "0.599", - "jja": "0.605", + "mam": "0.600", + "jja": "0.606", "djf": "0.538" }, "rms_xyt": { "ann": "0.612" }, "rms_y": { - "ann": "0.315" + "ann": "0.313" }, "rmsc_xy": { - "ann": "0.503", + "ann": "0.502", "son": "0.545", - "mam": "0.590", - "jja": "0.579", + "mam": "0.591", + "jja": "0.581", "djf": "0.508" }, "std-obs_xy": { - "ann": "0.955", + "ann": "0.953", "son": "0.998", "mam": "0.940", - "jja": "0.953", + "jja": "0.954", "djf": "0.975" }, "std-obs_xy_devzm": { - "ann": "0.831" + "ann": "0.829" }, "std-obs_xyt": { - "ann": "0.983" + "ann": "0.982" }, "std_xy": { "ann": "0.949", @@ -111,32 +111,32 @@ }, "global": { "bias_xy": { - "ann": "0.022", - "son": "-0.191", + "ann": "0.021", + "son": "-0.192", "mam": "0.021", - "jja": "-0.124", + "jja": "-0.123", "djf": "-0.086" }, "cor_xy": { - "ann": "0.779", + "ann": "0.778", "son": "0.85", "mam": "0.82", "jja": "0.82", "djf": "0.84" }, "mae_xy": { - "ann": "0.529", - "son": "0.456", + "ann": "0.528", + "son": "0.455", "mam": "0.481", "jja": "0.475", - "djf": "0.437" + "djf": "0.436" }, "mean-obs_xy": { - "ann": "34.634", - "son": "34.911", - "mam": "34.716", + "ann": "34.636", + "son": "34.913", + "mam": "34.717", "jja": "34.851", - "djf": "34.805" + "djf": "34.806" }, "mean_xy": { "ann": "34.523", @@ -149,40 +149,40 @@ "ann": "0.767" }, "rms_xy": { - "ann": "0.985", - "son": "0.585", - "mam": "0.637", - "jja": "0.649", - "djf": "0.615" + "ann": "0.984", + "son": "0.584", + "mam": "0.636", + "jja": "0.650", + "djf": "0.612" }, "rms_xyt": { - "ann": "0.765" + "ann": "0.763" }, "rms_y": { - "ann": "1.648" + "ann": "1.645" }, "rmsc_xy": { "ann": "0.984", - "son": "0.553", - "mam": "0.637", - "jja": "0.637", - "djf": "0.608" + "son": "0.552", + "mam": "0.636", + "jja": "0.638", + "djf": "0.606" }, "std-obs_xy": { - "ann": "1.550", - "son": "1.050", - "mam": "1.122", + "ann": "1.549", + "son": "1.048", + "mam": "1.121", "jja": "1.106", - "djf": "1.123" + "djf": "1.121" }, "std-obs_xy_devzm": { - "ann": "1.025" + "ann": "1.023" }, "std-obs_xyt": { - "ann": "1.255" + "ann": "1.253" }, "std_xy": { - "ann": "1.612", + "ann": "1.611", "son": "1.650", "mam": "1.586", "jja": "1.662", @@ -197,32 +197,32 @@ }, "NHEX": { "bias_xy": { - "ann": "0.493", - "son": "0.051", - "mam": "0.090", - "jja": "-0.148", - "djf": "0.307" + "ann": "0.491", + "son": "0.048", + "mam": "0.087", + "jja": "-0.149", + "djf": "0.302" }, "cor_xy": { - "ann": "0.743", + "ann": "0.742", "son": "0.91", "mam": "0.92", "jja": "0.87", "djf": "0.85" }, "mae_xy": { - "ann": "0.875", - "son": "0.458", - "mam": "0.413", + "ann": "0.874", + "son": "0.459", + "mam": "0.411", "jja": "0.490", - "djf": "0.577" + "djf": "0.572" }, "mean-obs_xy": { - "ann": "33.633", - "son": "34.313", - "mam": "34.442", + "ann": "33.637", + "son": "34.316", + "mam": "34.446", "jja": "34.376", - "djf": "34.222" + "djf": "34.230" }, "mean_xy": { "ann": "33.554", @@ -232,40 +232,40 @@ "djf": "33.664" }, "rms_devzm": { - "ann": "1.667" + "ann": "1.668" }, "rms_xy": { - "ann": "2.005", - "son": "0.672", - "mam": "0.597", + "ann": "2.004", + "son": "0.674", + "mam": "0.587", "jja": "0.884", - "djf": "0.893" + "djf": "0.882" }, "rms_xyt": { - "ann": "1.235" + "ann": "1.230" }, "rms_y": { - "ann": "2.174" + "ann": "2.169" }, "rmsc_xy": { "ann": "1.943", - "son": "0.670", - "mam": "0.590", - "jja": "0.871", - "djf": "0.839" + "son": "0.672", + "mam": "0.580", + "jja": "0.872", + "djf": "0.829" }, "std-obs_xy": { - "ann": "2.878", - "son": "1.459", - "mam": "1.389", - "jja": "1.523", - "djf": "1.586" + "ann": "2.877", + "son": "1.455", + "mam": "1.383", + "jja": "1.524", + "djf": "1.573" }, "std-obs_xy_devzm": { "ann": "2.020" }, "std-obs_xyt": { - "ann": "2.001" + "ann": "1.996" }, "std_xy": { "ann": "3.299", @@ -284,30 +284,30 @@ "SHEX": { "bias_xy": { "ann": "0.122", - "son": "-0.304", + "son": "-0.306", "mam": "0.223", - "jja": "-0.012", + "jja": "-0.013", "djf": "-0.083" }, "cor_xy": { - "ann": "0.677", - "son": "0.78", + "ann": "0.678", + "son": "0.79", "mam": "0.79", "jja": "0.78", "djf": "0.78" }, "mae_xy": { "ann": "0.555", - "son": "0.441", + "son": "0.440", "mam": "0.550", - "jja": "0.463", + "jja": "0.462", "djf": "0.415" }, "mean-obs_xy": { "ann": "34.232", - "son": "34.737", + "son": "34.739", "mam": "34.144", - "jja": "34.430", + "jja": "34.431", "djf": "34.422" }, "mean_xy": { @@ -315,43 +315,43 @@ "son": "34.378", "mam": "34.306", "jja": "34.356", - "djf": "34.296" + "djf": "34.295" }, "rms_devzm": { "ann": "0.547" }, "rms_xy": { "ann": "0.887", - "son": "0.558", + "son": "0.552", "mam": "0.716", "jja": "0.596", "djf": "0.601" }, "rms_xyt": { - "ann": "0.741" + "ann": "0.739" }, "rms_y": { "ann": "1.898" }, "rmsc_xy": { - "ann": "0.879", - "son": "0.468", + "ann": "0.878", + "son": "0.460", "mam": "0.680", "jja": "0.596", "djf": "0.596" }, "std-obs_xy": { - "ann": "1.131", - "son": "0.730", + "ann": "1.130", + "son": "0.725", "mam": "1.020", - "jja": "0.898", + "jja": "0.897", "djf": "0.892" }, "std-obs_xy_devzm": { - "ann": "0.565" + "ann": "0.564" }, "std-obs_xyt": { - "ann": "1.014" + "ann": "1.013" }, "std_xy": { "ann": "0.488", @@ -361,7 +361,7 @@ "djf": "0.519" }, "std_xy_devzm": { - "ann": "0.248" + "ann": "0.249" }, "std_xyt": { "ann": "0.499" @@ -394,7 +394,7 @@ "RegionalMasking": { "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -403,13 +403,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -507,41 +507,37 @@ "provenance": { "platform": { "OS": "Darwin", - "Version": "16.6.0", + "Version": "16.7.0", "Name": "loki" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/Users/doutriaux1/anaconda2/envs/nightly-mesa/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/salinity_test.py", - "date": "2017-07-21 07:35:37", + "commandLine": "/Users/doutriaux1/anaconda2/envs/cdat8/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/salinity_test.py", + "date": "2018-05-03 09:25:17", "conda": { - "Platform": "osx-64", - "Version": "4.3.22", - "IsPrivate": "False", - "envVersion": "4.3.22", - "buildVersion": "3.0.6", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/Users/doutriaux1/anaconda2 (writable)", - "DefaultEnvironment": "/Users/doutriaux1/anaconda2/envs/nightly-mesa" + "Version": "4.5.1", + "buildVersion": "3.9.1", + "PythonVersion": "2.7.14.final.0", + "Platform": "osx-64" }, "packages": { - "cdms": "2.10.2017.07.05.06.11.297b09f867ec041b8bc8b4826fae7b8a3bc75884", - "CDP": "1.0.3", - "cdtime": "2.10", - "cdutil": "2.10", + "blas": "1.0.1", + "cdms": "3.0", + "CDP": "1.3.2", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.10", - "python": "2.7.13", - "matplotlib": "2.0.2", - "mesalib": "17.1.4", - "numpy": "1.12.1", - "vcs": "2.10.2017.06.29.20.09.593560606aef21c260570bf0750639531fbb83be", - "vtk": "7.1.0.2.10.2017.07.06.11.44.1c03d1d03b1c12d99dd090ba4c5ca078e2d9612f", - "blas": null, - "PMP": "gf73f5f0", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0.2018.04.27.14.53.gfc2e5fc5", + "vtk": "8.0.1.8.0", + "PMP": "ga068fe0", "PMPObs": null }, "openGL": { diff --git a/tests/pcmdi/unitsTest/tas_2.5x2.5_esmf_linear_metrics.json b/tests/pcmdi/unitsTest/tas_2.5x2.5_esmf_linear_metrics.json index b4a3daa83..69093e1f4 100644 --- a/tests/pcmdi/unitsTest/tas_2.5x2.5_esmf_linear_metrics.json +++ b/tests/pcmdi/unitsTest/tas_2.5x2.5_esmf_linear_metrics.json @@ -389,7 +389,7 @@ "RegionalMasking": { "TROPICS": { "domain": { - "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30, 'ccb'))" + "TROPICS": "cdutil.region.domain(latitude=(-30.0, 30))" }, "id": "TROPICS" }, @@ -398,13 +398,13 @@ }, "NHEX": { "domain": { - "NHEX": "cdutil.region.domain(latitude=(30.0, 90, 'ccb'))" + "NHEX": "cdutil.region.domain(latitude=(30.0, 90))" }, "id": "NHEX" }, "SHEX": { "domain": { - "SHEX": "cdutil.region.domain(latitude=(-90.0, -30, 'ccb'))" + "SHEX": "cdutil.region.domain(latitude=(-90.0, -30))" }, "id": "SHEX" } @@ -502,47 +502,54 @@ "provenance": { "platform": { "OS": "Linux", - "Version": "2.6.32-696.el6.x86_64", - "Name": "crunchy.llnl.gov" + "Version": "4.13.0-39-generic", + "Name": "drdoom" }, "userId": "doutriaux1", "osAccess": false, - "commandLine": "/export/doutriaux1/miniconda2/envs/pmp/bin/pcmdi_metrics_driver.py -p /export/doutriaux1/git/pcmdi_metrics/tests/pcmdi/units_test.py", - "date": "2017-06-09 14:13:49", + "commandLine": "/home/doutriaux1/anaconda2/envs/cdat_test/bin/pcmdi_metrics_driver.py -p /git/pcmdi_metrics/tests/pcmdi/units_test.py", + "date": "2018-04-26 11:07:01", "conda": { - "Platform": "linux-64", - "Version": "4.3.11", - "IsPrivate": "False", - "envVersion": "4.3.11", - "buildVersion": "2.1.10", - "PythonVersion": "2.7.13.final.0", - "RootEnvironment": "/export/doutriaux1/miniconda2 (writable)", - "DefaultEnvironment": "/export/doutriaux1/miniconda2/envs/pmp" + "Version": "4.5.0", + "buildVersion": "3.7.2", + "PythonVersion": "2.7.14.final.0", + "Platform": "linux-64" }, "packages": { - "cdms": "2.10", - "CDP": "1.0.3", - "cdtime": "2.10", - "cdutil": "2.10", + "cdms": "3.0", + "CDP": "1.3.3", + "cdtime": "3.0", + "cdutil": "8.0", "clapack": "3.2.1", "lapack": "3.6.1", - "esmf": "7.0.0", - "esmpy": "7.0.0", - "genutil": "2.10", - "mesalib": "17.0.3", - "numpy": "1.12.1", - "python": "2.7.13", - "vcs": "2.10", - "vtk": "7.1.0.2.10", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.0", + "python": "2.7.14", + "matplotlib": "2.2.2", + "mesalib": "17.2.0", + "numpy": "1.14.2", + "vcs": "8.0", + "vtk": "8.0.1.8.0.2018.04.09.07.58.g9a839a5", "blas": null, - "matplotlib": null, - "PMP": "ga507630", + "PMP": "geb4d089", "PMPObs": null }, "openGL": { + "vendor": "X.Org", + "renderer": "AMD TURKS (DRM 2.50.0 / 4.13.0-39-generic, LLVM 5.0.0)", + "version": "3.0 Mesa 17.2.8", + "shading language version": "1.30", "GLX": { - "client": {}, - "server": {} + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "version": "1.4", + "server": { + "vendor": "SGI", + "version": "1.4" + } } } } diff --git a/tests/test_pmp_diurnal.py b/tests/test_pmp_diurnal.py index d33e1fb7f..22f8cb690 100644 --- a/tests/test_pmp_diurnal.py +++ b/tests/test_pmp_diurnal.py @@ -1,5 +1,6 @@ from __future__ import print_function import unittest +import basepmp import cdat_info import subprocess import shlex @@ -9,7 +10,7 @@ import json -class DiurnalTest(unittest.TestCase): +class DiurnalTest(basepmp.PMPTest): def assertSame(self,a,b): self.assertTrue(numpy.ma.allclose(a,b)) @@ -56,9 +57,14 @@ def runJsoner(self,script,json_file): p.communicate() good = open("tests/diurnal/results/json/{}".format(json_file)) test = open("test_data/results/jsons/{}".format(json_file)) + good_nm = "tests/diurnal/results/json/{}".format(json_file) + test_nm = "test_data/results/jsons/{}".format(json_file) + self.assertSimilarJsons(test_nm, good_nm) + """ test = json.load(test) good = json.load(good) self.assertEqual(test["RESULTS"],good["RESULTS"]) + """ def teistCompositeDiurnalStatisticsWrapped(self): cmd = 'compositeDiurnalStatisticsWrapped.py --mp test_data --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7' p = subprocess.Popen(shlex.split(cmd)) From d33119d048cec7e31f68f8d39e459cefad8ce117 Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 7 May 2018 16:10:18 -0700 Subject: [PATCH 11/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 59d25213d..1398fb0d3 100755 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ The package expects model data to be [CF-compliant](http://cfconventions.org/). GETTING STARTED ---------------- -Installation requirements and instructions are available on the [Install](https://github.com/PCMDI/pcmdi_metrics/wiki/Install) page +Installation requirements and instructions are available on the [Install](https://github.com/PCMDI/pcmdi_metrics/wiki/Install-using-Anaconda) page An overview for using the package and template scripts are detailed on the [Using-the-package](https://github.com/PCMDI/pcmdi_metrics/wiki/Using-the-package) page From 03de85ec999ae273566e8162379d0aec74780004 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 9 May 2018 05:35:24 -0700 Subject: [PATCH 12/84] Improved portraits (#548) * starting * seems to be doing all that @lee1043 needs * uploading the baseline * fixed flake8 * got a first cut at auto backgrpund color * added change of color for light or dark background * baseline --- src/python/graphics/portraits.py | 180 ++++++++++++++++++++---- tests/graphics/testValuesOnPortrait.png | Bin 0 -> 82835 bytes tests/test_pmp_portrait_values_on.py | 114 +++++++++++++++ 3 files changed, 265 insertions(+), 29 deletions(-) create mode 100644 tests/graphics/testValuesOnPortrait.png create mode 100644 tests/test_pmp_portrait_values_on.py diff --git a/src/python/graphics/portraits.py b/src/python/graphics/portraits.py index b21809866..54184a07b 100644 --- a/src/python/graphics/portraits.py +++ b/src/python/graphics/portraits.py @@ -1,13 +1,39 @@ #!/usr/bin/env python +from __future__ import print_function import MV2 import cdms2 import vcs import genutil import glob +import numpy +import time from genutil import StringConstructor +def is_dark_color_type(R, G, B, A): + """figure out if a color is dark or light alpha is ignored""" + # Counting the perceptive luminance - human eye favors green color... + a = 1 - (0.299 * R + 0.587 * G + 0.114 * B) / 100. + return a > .5 + + +class Values(object): + __slots__ = ("show", "array", "text", + "lightcolor", "darkcolor", "format") + + def __init__(self, show=False, array=None, + lightcolor="white", darkcolor="black", format="{0:.2f}"): + self.show = show + self.array = array + self.text = vcs.createtext() + self.text.valign = "half" + self.text.halign = "center" + self.lightcolor = lightcolor + self.darkcolor = darkcolor + self.format = format + + class Xs(object): __slots__ = ("x1", "x2") @@ -39,7 +65,7 @@ class Plot_defaults(object): "fillareacolors", "legend", "_logo", "xticorientation", "yticorientation", "parameterorientation", "tictable", - "parametertable", "draw_mesh", + "parametertable", "draw_mesh", "values", "missing_color", "xtic1", "xtic2", "ytic1", "ytic2", "time_stamp"] @@ -79,6 +105,8 @@ def __init__(self): self.parameterorientation.halign = 'center' self.parameterorientation.height = 20 self.parametertable = vcs.createtexttable() + # values in cell setting + self.values = Values() # Defaults self.draw_mesh = 'y' self.missing_color = 3 @@ -105,11 +133,15 @@ class Portrait(object): "exclude", "parameters_list", "dummies", "auto_dummies", "grouped", "slaves", "altered", "aliased", - "portrait_types", "PLOT_SETTINGS", + "portrait_types", "PLOT_SETTINGS", "x", "bg" ] def __init__(self, files_structure=None, exclude=[], **kw): ''' initialize the portrait object, from file structure''' + if "x" in kw: + self.x = kw["x"] + else: + self.x = vcs.init() self.verbose = True # output files looked for to the screen self.files_structure = files_structure self.exclude = exclude @@ -687,9 +719,10 @@ def decorate(self, output, ynm, xnm): def plot(self, data=None, mesh=None, template=None, meshfill=None, x=None, bg=0, multiple=1.1): + self.bg = bg # Create the vcs canvas - if x is None: - x = vcs.init() + if x is not None: + self.x = x # Continents bug # x.setcontinentstype(0) @@ -699,7 +732,7 @@ def plot(self, data=None, mesh=None, template=None, # Do we use a predefined template ? if template is None: - template = x.createtemplate() + template = vcs.createtemplate() # Now sets all the things for the template... # Sets a bunch of template attributes to off for att in [ @@ -776,9 +809,9 @@ def plot(self, data=None, mesh=None, template=None, template.legend.y1 = self.PLOT_SETTINGS.legend.y1 template.legend.y2 = self.PLOT_SETTINGS.legend.y2 try: - tmp = x.createtextorientation('crap22') + tmp = vcs.createtextorientation('crap22') except Exception: - tmp = x.gettextorientation('crap22') + tmp = vcs.gettextorientation('crap22') tmp.height = 12 # tmp.halign = 'center' # template.legend.texttable = tmp @@ -793,14 +826,14 @@ def plot(self, data=None, mesh=None, template=None, raise 'Error cannot understand what you mean by template=' + \ str(template) - template = x.createtemplate() + template = vcs.createtemplate() # Do we use a predefined meshfill ? if meshfill is None: mtics = {} for i in range(100): mtics[i - .5] = '' - meshfill = x.createmeshfill() + meshfill = vcs.createmeshfill() meshfill.xticlabels1 = eval(data.getAxis(1).names) meshfill.yticlabels1 = eval(data.getAxis(0).names) @@ -813,9 +846,9 @@ def plot(self, data=None, mesh=None, template=None, meshfill.xticlabels2 = mtics meshfill.yticlabels2 = mtics if self.PLOT_SETTINGS.colormap is None: - self.set_colormap(x) + self.set_colormap() elif x.getcolormapname() != self.PLOT_SETTINGS.colormap: - x.setcolormap(self.PLOT_SETTINGS.colormap) + self.x.setcolormap(self.PLOT_SETTINGS.colormap) if self.PLOT_SETTINGS.levels is None: min, max = vcs.minmax(data) @@ -833,22 +866,15 @@ def plot(self, data=None, mesh=None, template=None, else: meshfill.fillareacolors = self.PLOT_SETTINGS.fillareacolors -# self.setmeshfill(x,meshfill,levs) -# if self.PLOT_SETTINGS.legend is None: -# meshfill.legend=vcs.mklabels(levs) -# else: -# meshfill.legend=self.PLOT_SETTINGS.legend # Now creates the mesh associated n = int(multiple) ntot = int((multiple - n) * 10 + .1) -# data=data sh = list(data.shape) sh.append(2) Indx = MV2.indices((sh[0], sh[1])) Y = Indx[0] X = Indx[1] -# if ntot>1: -# meshfill.mesh='y' + if ntot == 1: sh.append(4) M = MV2.zeros(sh) @@ -1005,12 +1031,17 @@ def plot(self, data=None, mesh=None, template=None, else: raise 'Error cannot understand what you mean by meshfill=' + \ str(meshfill) - meshfill = x.createmeshfill(source=tid) + meshfill = vcs.createmeshfill(source=tid) if mesh is None: mesh = M - x.plot(MV2.ravel(data), mesh, template, meshfill, bg=bg) + raveled = MV2.ravel(data) + self.x.plot(raveled, mesh, template, meshfill, bg=self.bg) + + # If required plot values + if self.PLOT_SETTINGS.values.show: + self.draw_values(raveled, mesh, meshfill, template) # Now prints the rest of the title, etc... # but only if n==1 @@ -1083,18 +1114,109 @@ def plot(self, data=None, mesh=None, template=None, txt.x = dic['x'] if dic['y'] is not None: txt.y = dic['y'] - x.plot(txt, bg=bg, continents=0) + self.x.plot(txt, bg=self.bg, continents=0) if self.PLOT_SETTINGS.time_stamp is not None: - import time sp = time.ctime().split() sp = sp[:3] + [sp[-1]] self.PLOT_SETTINGS.time_stamp.string = ''.join(sp) - x.plot(self.PLOT_SETTINGS.time_stamp, bg=bg, continents=0) + self.x.plot( + self.PLOT_SETTINGS.time_stamp, + bg=self.bg, + continents=0) if self.PLOT_SETTINGS.logo is not None: - self.PLOT_SETTINGS.logo.plot(x, bg=bg) + self.PLOT_SETTINGS.logo.plot(self.x, bg=self.bg) return mesh, template, meshfill - def set_colormap(self, x): + def draw_values(self, raveled, mesh, meshfill, template): + # Values to use (data or user passed) + if self.PLOT_SETTINGS.values.array is None: + data = MV2.array(raveled) + else: + data = MV2.ravel(self.PLOT_SETTINGS.values.array) + if isinstance(raveled, numpy.ma.core.MaskedArray): + data.mask = data.mask + raveled.mask + + # Now remove masked values + if data.mask is not numpy.ma.nomask: # we have missing + indices = numpy.argwhere(numpy.ma.logical_not(data.mask)) + data = data.take(indices).filled(0)[:, 0] + M = mesh.filled()[indices][:, 0] + raveled = raveled.take(indices).filled(0.)[:, 0] + else: + M = mesh.filled() + + # Baricenters + xcenters = numpy.average(M[:, 1], axis=-1) + ycenters = numpy.average(M[:, 0], axis=-1) + self.PLOT_SETTINGS.values.text.viewport = [template.data.x1, template.data.x2, + template.data.y1, template.data.y2] + if not numpy.allclose(meshfill.datawc_x1, 1.e20): + self.PLOT_SETTINGS.values.text.worldcoordinate = [meshfill.datawc_x1, + meshfill.datawc_x2, + meshfill.datawc_y1, + meshfill.datawc_y2] + else: + self.PLOT_SETTINGS.values.text.worldcoordinate = [M[:, 1].min(), + M[:, 1].max(), + M[:, 0].min(), + M[:, 0].max()] + + self.PLOT_SETTINGS.values.text.string = [ + self.PLOT_SETTINGS.values.format.format(value) for value in data] + + # Now that we have the formatted values we need get the longest string + lengths = [len(txt) for txt in self.PLOT_SETTINGS.values.text.string] + longest = max(lengths) + index = lengths.index(longest) + + tmptxt = vcs.createtext() + tmptxt.string = self.PLOT_SETTINGS.values.text.string[index] + tmptxt.x = xcenters[index] + tmptxt.y = ycenters[index] + smallY = M[index, 0, :].min() + bigY = M[index, 0, :].max() + smallX = M[index, 1, :].min() + bigX = M[index, 1, :].max() + tmptxt.worldcoordinate = self.PLOT_SETTINGS.values.text.worldcoordinate + tmptxt.viewport = self.PLOT_SETTINGS.values.text.viewport + # Now try to shrink until it fits + extent = self.x.gettextextent(tmptxt)[0] + while ((extent[1] - extent[0]) / (bigX - smallX) > 1.01 or + (extent[3] - extent[2]) / (bigY - smallY) > 1.01) and \ + tmptxt.height >= 1: + tmptxt.height -= 1 + extent = self.x.gettextextent(tmptxt)[0] + self.PLOT_SETTINGS.values.text.height = tmptxt.height + + # Finally we need to split into two text objects for dark and light background + # Step 1: figure out each bin color type (dark/light) + colormap = self.x.colormap + if colormap is None: + colormap = vcs._colorMap + cmap = vcs.getcolormap(colormap) + colors = meshfill.fillareacolors + dark_bins = [ + is_dark_color_type( + *cmap.getcolorcell(color)) for color in colors] + + # Step 2: put values into bin (color where they land) + bins = meshfill.levels[1:-1] + binned = numpy.digitize(raveled, bins) + isdark = [dark_bins[indx] for indx in binned] + tmptxt = vcs.createtext( + Tt_source=self.PLOT_SETTINGS.values.text.Tt_name, + To_source=self.PLOT_SETTINGS.values.text.To_name) + for pick, color in [(numpy.argwhere(isdark), self.PLOT_SETTINGS.values.lightcolor), + (numpy.argwhere(numpy.logical_not(isdark)), self.PLOT_SETTINGS.values.darkcolor)]: + tmptxt.x = xcenters.take(pick)[:, 0].tolist() + tmptxt.y = ycenters.take(pick)[:, 0].tolist() + tmptxt.string = numpy.array( + self.PLOT_SETTINGS.values.text.string).take(pick)[ + :, 0].tolist() + tmptxt.color = color + self.x.plot(tmptxt, bg=self.bg) + + def set_colormap(self): cols = ( 100, 100, @@ -1820,12 +1942,12 @@ def set_colormap(self, x): cols = MV2.reshape(cols, (len(cols) / 3, 3)) for i in range(cols.shape[0]): - co = x.getcolorcell(i) + co = self.x.getcolorcell(i) if (co[0] != int(cols[i][0]) or co[1] != int( cols[i][1]) or co[2] != int(cols[i][2])): - x.setcolorcell( + self.x.setcolorcell( i, int( cols[i][0]), int( cols[i][1]), int( cols[i][2])) - pass + return diff --git a/tests/graphics/testValuesOnPortrait.png b/tests/graphics/testValuesOnPortrait.png new file mode 100644 index 0000000000000000000000000000000000000000..818a8b8700785b4ee7c806f13db721293e2e37b8 GIT binary patch literal 82835 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 Z6~Xy%Y}C{2iv$55y`zRliVoXG{U86;ODO;V literal 0 HcmV?d00001 diff --git a/tests/test_pmp_portrait_values_on.py b/tests/test_pmp_portrait_values_on.py new file mode 100644 index 000000000..50c0f8f28 --- /dev/null +++ b/tests/test_pmp_portrait_values_on.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python +from __future__ import print_function +import basepmpgraphics +import os +import pcmdi_metrics.graphics.portraits +import MV2 +import numpy +import genutil +import vcs +import sys + +class TestPortraits(basepmpgraphics.TestGraphics): + def __init__(self,*args,**kargs): + kargs["geometry"] = {"width":814,"height":606} + super(TestPortraits,self).__init__(*args,**kargs) + + def test_portrait_values(self): + + print() + print() + print() + print() + print("---------------------------------------------------") + print("RUNNING: Portrait test") + print("---------------------------------------------------") + print() + print() + print() + print() + # CREATES VCS OBJECT AS A PORTAIT PLOT AND LOADS PLOT SETTINGS FOR + # EXAMPLE + self.x.portrait() + + # PARAMETERS STUFF + P = pcmdi_metrics.graphics.portraits.Portrait() + + # Turn off verbosity + P.verbose = False + + P.PLOT_SETTINGS.levels = [-1.e20, -.5, -.4, -.3, -.2, -.1, + 0., .1, .2, .3, .4, .5, 1.e20] + + P.PLOT_SETTINGS.x1 = .1 + P.PLOT_SETTINGS.x2 = .85 + P.PLOT_SETTINGS.y1 = .12 + P.PLOT_SETTINGS.y2 = .95 + + P.PLOT_SETTINGS.xtic2.y1 = P.PLOT_SETTINGS.y1 + P.PLOT_SETTINGS.xtic2.y2 = P.PLOT_SETTINGS.y2 + P.PLOT_SETTINGS.ytic2.x1 = P.PLOT_SETTINGS.x1 + P.PLOT_SETTINGS.ytic2.x2 = P.PLOT_SETTINGS.x2 + + # P.PLOT_SETTINGS.missing_color = 3 + P.PLOT_SETTINGS.logo = os.path.join(sys.prefix,"share","pmp","graphics","png","PCMDILogo-old_348x300px_72dpi.png") + P.PLOT_SETTINGS.logo.y = .95 + P.PLOT_SETTINGS.logo.x = .93 + P.PLOT_SETTINGS.logo.width = 85 + P.PLOT_SETTINGS.time_stamp = None + P.PLOT_SETTINGS.draw_mesh = 'n' + # P.PLOT_SETTINGS.tictable.font = 3 + + self.x.scriptrun( + os.path.join( + sys.prefix, + "share", + "pmp", + "graphics", + 'vcs', + 'portraits.scr')) + P.PLOT_SETTINGS.colormap = 'bl_rd_12' + # cols=vcs.getcolors(P.PLOT_SETTINGS.levels,range(16,40),split=1) + cols = vcs.getcolors(P.PLOT_SETTINGS.levels, list(range(144, 156)), split=1) + P.PLOT_SETTINGS.fillareacolors = cols + + P.PLOT_SETTINGS.parametertable.expansion = 100 + + P.PLOT_SETTINGS.values.show = True + P.PLOT_SETTINGS.values.text.color = "red" + P.PLOT_SETTINGS.values.text.angle = -45 + + J = self.loadJSON() + + mods = sorted(J.getAxis("model")[:]) + variables = sorted(J.getAxis("variable")[:]) + print("MODELS:",len(mods),mods) + print("VARS:",len(variables),variables) + # Get what we need + out1_rel = J(statistic=["rms_xyt"],season=["ann"],region="global")(squeeze=1) + + out1_rel, med = genutil.grower(out1_rel,genutil.statistics.median(out1_rel,axis=1)[0]) + + out1_rel[:] = (out1_rel.asma() - med.asma())/ med.asma() + + # ADD SPACES FOR LABELS TO ALIGN AXIS LABELS WITH PLOT + modsAxis = mods + variablesAxis = variables + + # LOOP THROUGH LISTS TO ADD SPACES + for i in range(len(modsAxis)): + modsAxis[i] = modsAxis[i] + ' ' + for i in range(len(variablesAxis)): + variablesAxis[i] = variablesAxis[i] + ' ' + + yax = [str(s) for s in mods] + + # GENERATE PLOT + P.decorate(out1_rel, variables, yax) + # USING TWO OR MORE REFERENCE DATA SETS + P.PLOT_SETTINGS.values.array = out1_rel + 2. + P.PLOT_SETTINGS.values.lightcolor = "green" + P.PLOT_SETTINGS.values.darkcolor = "red" + P.plot(out1_rel, x=self.x, multiple=1.3) + fnm = os.path.join(os.getcwd(), "testValuesOnPortrait.png") + self.checkImage(fnm) From 27045b3e5136247163c11e198be785464f499faf Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 9 May 2018 05:50:55 -0700 Subject: [PATCH 13/84] clean up --- .../pcmdi/scripts/driver/outputmetrics.py | 18 ++++-------------- .../pcmdi/scripts/pcmdi_metrics_driver.py | 12 ++++-------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/python/pcmdi/scripts/driver/outputmetrics.py b/src/python/pcmdi/scripts/driver/outputmetrics.py index 1ffb1ef1f..67b3f9fbc 100644 --- a/src/python/pcmdi/scripts/driver/outputmetrics.py +++ b/src/python/pcmdi/scripts/driver/outputmetrics.py @@ -17,29 +17,18 @@ class OutputMetrics(object): - def __init__(self, parameter, var_name_long, obs_dict, metrics_output_filename,user_notes,sftlf): + def __init__(self, parameter, var_name_long, obs_dict, sftlf): logging.getLogger("pcmdi_metrics").setLevel(LOG_LEVEL) self.parameter = parameter self.var_name_long = var_name_long self.obs_dict = obs_dict self.var = var_name_long.split('_')[0] self.sftlf = sftlf - self.metrics_output_filename = metrics_output_filename - self.user_notes = user_notes self.metrics_def_dictionary = {} self.metrics_dictionary = {} - string_template = "%(variable)%(level)_%(target_grid_name)_" +\ - "%(regrid_tool)_%(regrid_method)_metrics" - - if self.metrics_output_filename != '': - string_template = metrics_output_filename - - print('string_template is ========== ', string_template,' ---- ', metrics_output_filename) - - - self.out_file = Base(self.parameter.metrics_output_path, string_template) + self.out_file = Base(self.parameter.metrics_output_path, self.parameter.output_filename_template) self.regrid_method = '' self.regrid_tool = '' @@ -55,7 +44,8 @@ def setup_metrics_dictionary(self): self.metrics_def_dictionary = collections.OrderedDict() self.metrics_dictionary = collections.OrderedDict() self.metrics_dictionary["DISCLAIMER"] = self.open_disclaimer() - self.metrics_dictionary["USER_NOTES"] = self.user_notes + if self.parameter.user_notes is not None: + self.metrics_dictionary["USER_NOTES"] = self.parameter.user_notes self.metrics_dictionary["RESULTS"] = collections.OrderedDict() self.metrics_dictionary["Variable"] = {} diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py index 4ff76478f..63cf965e8 100644 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py +++ b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py @@ -31,8 +31,6 @@ def __init__(self, parameter): self.regions_dict = {} self.var = '' self.output_metric = None - self.metrics_output_filename = parameter.metrics_output_filename - self.user_notes = parameter.user_notes self.region = '' self.sftlf = pcmdi_metrics.driver.dataset.DataSet.create_sftlf(self.parameter) @@ -55,7 +53,7 @@ def run_diags(self): continue self.output_metric = OutputMetrics(self.parameter, self.var_name_long, - self.obs_dict, self.metrics_output_filename, self.user_notes, sftlf=self.sftlf) + self.obs_dict, sftlf=self.sftlf) for region in self.regions_dict[self.var]: self.region = self.create_region(region) @@ -383,21 +381,19 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): required=False) parser.add_argument( - '--metrics_output_filename', - dest='metrics_output_filename', - default = '', + 'output_filename_template', + default = "%(variable)%(level)_%(target_grid_name)_%(regrid_tool)_%(regrid_method)_metrics", help='Filename template for results json files', required=False) parser.add_argument( '--user_notes', dest='user_notes', - default = '', + default = None, help='Provide a short description to help identify this run of the PMP mean climate.', required=False) parameter = parser.get_parameter(cmd_default_vars=False) -print('params are ---- ', parameter.metrics_output_filename) driver = PMPDriver(parameter) driver.run_diags() From bd1adee6928a66a9efe38e2a8f6bf926af170931 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 9 May 2018 06:17:57 -0700 Subject: [PATCH 14/84] renamed to output_json_template because we already have filename_output_template --- src/python/pcmdi/scripts/driver/outputmetrics.py | 2 +- src/python/pcmdi/scripts/pcmdi_metrics_driver.py | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/python/pcmdi/scripts/driver/outputmetrics.py b/src/python/pcmdi/scripts/driver/outputmetrics.py index 67b3f9fbc..4bc5a105b 100644 --- a/src/python/pcmdi/scripts/driver/outputmetrics.py +++ b/src/python/pcmdi/scripts/driver/outputmetrics.py @@ -28,7 +28,7 @@ def __init__(self, parameter, var_name_long, obs_dict, sftlf): self.metrics_def_dictionary = {} self.metrics_dictionary = {} - self.out_file = Base(self.parameter.metrics_output_path, self.parameter.output_filename_template) + self.out_file = Base(self.parameter.metrics_output_path, self.parameter.output_json_template) self.regrid_method = '' self.regrid_tool = '' diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py index 63cf965e8..4efac6e13 100644 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py +++ b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py @@ -31,7 +31,6 @@ def __init__(self, parameter): self.regions_dict = {} self.var = '' self.output_metric = None - self.region = '' self.sftlf = pcmdi_metrics.driver.dataset.DataSet.create_sftlf(self.parameter) self.default_regions = [] @@ -381,19 +380,19 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): required=False) parser.add_argument( - 'output_filename_template', - default = "%(variable)%(level)_%(target_grid_name)_%(regrid_tool)_%(regrid_method)_metrics", + '--output_json_template', + default="%(variable)%(level)_%(target_grid_name)_%(regrid_tool)_%(regrid_method)_metrics", help='Filename template for results json files', required=False) parser.add_argument( '--user_notes', dest='user_notes', - default = None, + default=None, help='Provide a short description to help identify this run of the PMP mean climate.', required=False) -parameter = parser.get_parameter(cmd_default_vars=False) +parameter = parser.get_parameter() # cmd_default_vars=False) driver = PMPDriver(parameter) driver.run_diags() From 10ebaa14267950376b82530c32c740578beacbf4 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 9 May 2018 06:22:15 -0700 Subject: [PATCH 15/84] fix #543 (#544) * fix #543 fix #542 * no print --- src/python/pcmdi/scripts/driver/observation.py | 8 ++++---- src/python/pcmdi/scripts/driver/outputmetrics.py | 7 ++++++- src/python/pcmdi/scripts/pcmdi_metrics_driver.py | 3 +++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/python/pcmdi/scripts/driver/observation.py b/src/python/pcmdi/scripts/driver/observation.py index e289d4e71..8c403ca0d 100644 --- a/src/python/pcmdi/scripts/driver/observation.py +++ b/src/python/pcmdi/scripts/driver/observation.py @@ -127,13 +127,13 @@ def get(self): return data_obs except Exception as e: if self.level is not None: - logging.getLogger("pcmdi_metrics").error('Failed opening 4D OBS', + logging.getLogger("pcmdi_metrics").error("{} {} {} {}".format('Failed opening 4D OBS', self.var, self.obs_or_model, - e) + e)) else: - logging.getLogger("pcmdi_metrics").error('Failed opening 3D OBS', + logging.getLogger("pcmdi_metrics").error("{} {} {} {}".format('Failed opening 3D OBS', self.var, - self.obs_or_model, e) + self.obs_or_model, e)) def hash(self): ''' Return a hash of the file. ''' diff --git a/src/python/pcmdi/scripts/driver/outputmetrics.py b/src/python/pcmdi/scripts/driver/outputmetrics.py index d08bc1cbc..6b742ba7d 100644 --- a/src/python/pcmdi/scripts/driver/outputmetrics.py +++ b/src/python/pcmdi/scripts/driver/outputmetrics.py @@ -109,7 +109,10 @@ def calculate_and_output_metrics(self, ref, test): ref_data = ref() except Exception as e: msg = 'Error while processing observation %s for variables %s:\n\t%s' - logging.getLogger("pcmdi_metrics").error(msg % (self.var, str(e))) + logging.getLogger("pcmdi_metrics").error(msg % (ref.obs_or_model, self.var, str(e))) + + if ref_data is None: # Something went bad! + raise RuntimeError('Could not load reference {}'.format(ref.obs_or_model)) try: test_data = test() @@ -281,6 +284,8 @@ def check_save_test_clim(self, ref): def write_on_exit(self): ''' Output the metrics_dictionary as a json and text file. ''' self.metrics_dictionary['METRICS'] = self.metrics_def_dictionary + if len(self.metrics_def_dictionary) == 0: + raise RuntimeError("No results generated, cannot write to file") if not self.parameter.dry_run: logging.getLogger("pcmdi_metrics").info('Saving results to: %s' % self.out_file()) self.out_file.write(self.metrics_dictionary, diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py index e288b014c..9e16c915a 100644 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py +++ b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py @@ -156,6 +156,9 @@ def run_reference_and_test_comparison(self): test_data_set = Observation.setup_obs_list_from_parameter( test_data_set, self.obs_dict, self.var) + if len(reference_data_set) == 0: # We did not find any ref!!! + raise RuntimeError("No reference dataset found!") + # self.reference/self.test are either an obs or model for reference in reference_data_set: try: From e8f28689468c67dac825d86022c7c866e7f711f7 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 9 May 2018 06:58:04 -0700 Subject: [PATCH 16/84] down to one test failing --- src/python/pcmdi/scripts/pcmdi_metrics_driver.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py index 4efac6e13..920c5b6d0 100644 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py +++ b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py @@ -176,6 +176,7 @@ def run_reference_and_test_comparison(self): continue try: + print("We have:",ref, tst) self.output_metric.calculate_and_output_metrics(ref, tst) except RuntimeError: break @@ -226,6 +227,7 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): '--regions', type=ast.literal_eval, dest='regions', + default={}, help='Regions on which to run the metrics', required=False) @@ -234,6 +236,7 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): type=ast.literal_eval, dest='regions_values', help='Users can customize regions values names', + default={}, required=False) parser.add_argument( From a916a271a703d547a0f2caf646286780dbb1161a Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 9 May 2018 07:03:04 -0700 Subject: [PATCH 17/84] should be good now --- src/python/pcmdi/rms_0.py | 2 -- src/python/pcmdi/scripts/pcmdi_metrics_driver.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/python/pcmdi/rms_0.py b/src/python/pcmdi/rms_0.py index 45f15944a..f05772279 100644 --- a/src/python/pcmdi/rms_0.py +++ b/src/python/pcmdi/rms_0.py @@ -12,8 +12,6 @@ def compute(dm, do): "Contact": "pcmdi-metrics@llnl.gov", } if 1 in [x.isLevel() for x in dm.getAxisList()]: - print(dm.shape, "B4") dm = dm(squeeze=1) do = do(squeeze=1) - print(dm.shape, "AF") return float(genutil.statistics.rms(dm, do)) diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py index 920c5b6d0..388f62ecc 100644 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py +++ b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py @@ -176,7 +176,6 @@ def run_reference_and_test_comparison(self): continue try: - print("We have:",ref, tst) self.output_metric.calculate_and_output_metrics(ref, tst) except RuntimeError: break @@ -380,6 +379,7 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): dest='test_clims_interpolated_output', help='Directory of where to put the interpolated ' + 'test climatologies', + default="", required=False) parser.add_argument( From 8cf29185aa1baf956ad6bc9dc1c9ce1932655900 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 9 May 2018 12:29:18 -0700 Subject: [PATCH 18/84] ok that might fix it --- run_tests.py | 6 +++--- src/python/pcmdi/scripts/driver/outputmetrics.py | 1 + src/python/pcmdi/scripts/driver/pmp_parameter.py | 2 ++ src/python/pcmdi/scripts/pcmdi_metrics_driver.py | 7 +------ 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/run_tests.py b/run_tests.py index 770b26c93..d064bf117 100755 --- a/run_tests.py +++ b/run_tests.py @@ -21,7 +21,7 @@ root = os.getcwd() cpus = multiprocessing.cpu_count() -parser = argparse.ArgumentParser(description="Run VCS tests", +parser = argparse.ArgumentParser(description="Run PMP tests", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument("-H", "--html", action="store_true", help="create and show html result page") @@ -233,7 +233,7 @@ def run_nose(test_name): fi = open("index.html", "w") print("", file=fi) - print("""VCS Test Results %s + print("""PMP Test Results %s - - - """ % time.asctime(), file=fi) - print("

PMP Test results: %s

" % time.asctime(), file=fi) - print("", file=fi) - print("", file=fi) - print("", file=fi) - for t in sorted(results.keys()): - result = results[t] - nm = t.split("/")[-1][:-3] - print("" % nm, end=' ', file=fi) - fe = codecs.open("%s.html" % nm, "w", encoding="utf-8") - print("", file=fe) - print("%s" % nm, file=fe) - if result["result"] == 0: - print("" % nm, end=' ', file=fi) - print("", file=fe) - print("Back To Results List", file=fe) - else: - print("" % nm, end=' ', file=fi) - print("" % js, file=fe) - print("Back To Results List", file=fe) - print("

Failed test: %s on %s

" % (nm, time.asctime()), file=fe) - file1, file2, diff = findDiffFiles(result["log"]) - if file1 != "": - print('
' % ( - abspath(file2, nm, "test"), abspath(file1, nm, "source")), file=fe) - print("", file=fe) - print("
diff file
" % abspath( - diff, nm, "diff"), file=fe) - print("", file=fe) - print('

Log

%s
' % "\n".join(result[ - "log"]), file=fe) - print("Back To Results List", file=fe) - print("", file=fe) - fe.close() - t = result["times"] - print("" % ( - time.ctime(t["start"]), time.ctime(t["end"]), t["end"] - t["start"]), file=fi) +class PMPTestRunner(testsrunner.TestRunnerBase): + def _prep_nose_options(self): + opt = super(PMPTestRunner, self)._prep_nose_options() + if self.args.update: + os.environ["UPDATE_TESTS"] = "True" + if self.args.traceback: + os.environ["TRACEBACK"] = "True" + return opt - print("
TestResultStart TimeEnd TimeTime
TestResultStart TimeEnd TimeTime
%sOKFail%s%s%s
", file=fi) - fi.close() - if args.html: - webbrowser.open("file://%s/index.html" % os.getcwd()) - os.chdir(root) -if args.package or args.dropbox: - import tarfile - tnm = "results_%s_%s_%s.tar.bz2" % (os.uname()[0],os.uname()[1],time.strftime("%Y-%m-%d_%H:%M")) - t = tarfile.open(tnm, "w:bz2") - t.add("tests_html") - t.add("tests_html") - t.close() - if args.verbosity > 0: - print("Packaged Result Info in:", tnm) -if args.dropbox: - import dropbox - dbx = dropbox.Dropbox(os.environ.get("DROPBOX_TOKEN","")) - f=open(tnm,"rb") - dbx.files_upload(f.read(),"/%s"%tnm) - f.close() +test_suite_name = 'pmp' +workdir = os.getcwd() +runner = PMPTestRunner(test_suite_name, options=["--update", "--traceback"], + options_files=["tests/pmp_runtests.json"], + get_sample_data=True, + test_data_files_info="share/test_data_files.txt") +ret_code = runner.run(workdir) -sys.exit(len(failed)) +sys.exit(ret_code) diff --git a/src/python/misc/scripts/parallelize_driver.py b/src/python/misc/scripts/parallelize_driver.py new file mode 100644 index 000000000..d1d60a2ce --- /dev/null +++ b/src/python/misc/scripts/parallelize_driver.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python +from __future__ import print_function +from pcmdi_metrics.driver.pmp_parser import PMPParser +import subprocess +import os +import importlib +import sys +import inspect +import tempfile +import cdp +import shlex + + +parser = PMPParser(description='Parallelize a driver over some arguments') +parser.add_argument("--driver", help="driver to prallelize") +parser.use("num_workers") +p = parser.get_parameter() + +param_name = parser.view_args().parameters +pth = os.path.dirname(os.path.abspath(param_name)) +sys.path.insert(0, pth) +nm = os.path.basename(param_name)[:-3] +parameters = importlib.import_module(nm) + + +def build(variables, parameters, params=[{}]): + if len(variables) == 0: + return params + var = variables.pop(0) + values = getattr(parameters, var) + len_in = len(params) + if len(values) > 1: + params = params * len(values) + for i in range(len_in): + for j in range(len(values)): + params[j*len_in+i][var] = values[j] + return build(variables, parameters, params) + + +def build_command_lines(driver, parameters, matrix): + cmds = [] + for mydict in matrix: + f, filename = tempfile.mkstemp(suffix=".py", text=True) + f = open(filename, "w") + for att in dir(parameters): + if att[:2] == "__": + continue + val = getattr(parameters, att) + if inspect.ismodule(val) or inspect.isbuiltin(val) or \ + inspect.ismethod(val) or inspect.isfunction(val): + continue + if att in ['granularize']: + continue + if att in mydict: + val = mydict[att] + print(att, "=", repr(val), file=f) + f.close() + cmds.append( + "{}/bin/python {} -p {}".format(sys.prefix, driver, filename)) + return cmds + + +def run_command(cmd): + print("Executing:", cmd) + sp = cmd.split()[-1] + print(os.path.exists(sp)) + p = subprocess.Popen(shlex.split(cmd)) + p.communicate() + + +matrix = build(p.granularize, parameters) +cmds = build_command_lines(p.driver, parameters, matrix) +cdp.cdp_run.multiprocess(run_command, cmds, num_workers=p.num_workers) diff --git a/src/python/monsoon_wang/scripts/mpindex_compute.py b/src/python/monsoon_wang/scripts/mpindex_compute.py index f91825288..44cef641d 100644 --- a/src/python/monsoon_wang/scripts/mpindex_compute.py +++ b/src/python/monsoon_wang/scripts/mpindex_compute.py @@ -11,18 +11,6 @@ import collections import glob -########### -# SAMPLE COMMAND LINE EXECUTION USING ARGUMENTS BELOW -# python -i mpi_compute.py -mp -# /work/gleckler1/processed_data/cmip5clims_metrics_package-historical/pr_MODS_Amon_historical_r1i1p1_198001-200512-clim.nc -# -op -# /work/gleckler1/processed_data/obs/atm/mo/pr/GPCP/ac/pr_GPCP_000001-000012_ac.nc -# --mns "['NorESM1-ME','MRI-CGCM3']" --outpd -# /work/gleckler1/processed_data/wang_monsoon --outpj -# /work/gleckler1/processed_data/metrics_package/metrics_results/wang_monsoon - -########## - P = PMPParser() @@ -70,7 +58,7 @@ modpath = args.modpath outpathjsons = args.outpathjsons outpathdata = args.results_dir -mods = args.modnames +mods = eval(args.modnames) json_filename = args.jsonname diff --git a/src/python/pcmdi/scripts/clim/pcmdi_compute_climatologies.py b/src/python/pcmdi/scripts/clim/pcmdi_compute_climatologies.py new file mode 100644 index 000000000..835a59893 --- /dev/null +++ b/src/python/pcmdi/scripts/clim/pcmdi_compute_climatologies.py @@ -0,0 +1,546 @@ +#!/usr/bin/env python +from __future__ import print_function +import os +import tempfile +import cdms2 +import cdutil +import numpy +import cdtime +from pcmdi_metrics.driver.pmp_parser import PMPParser + +try: + import cmor + hasCMOR = True +except Exception: + hasCMOR = False + +parser = PMPParser(description='Generates Climatologies from files') + +p = parser.add_argument_group('processing') +p.add_argument( + "--verbose", + action="store_true", + dest="verbose", + help="verbose output", + default=True) +p.add_argument( + "--quiet", + action="store_false", + dest="verbose", + help="quiet output") +p.add_argument("-v", "--var", + dest="var", + default=None, + # required=True, + help="variable to use for climatology") +p.add_argument("-t", "--threshold", + dest='threshold', + default=.5, + type=float, + help="Threshold bellow which a season is considered as " + + "not having enough data to be computed") +p.add_argument("-c", "--climatological_season", + dest="seasons", + default=["all"], + nargs="*", + choices=["djf", "DJF", "ann", "ANN", "all", "ALL", + "mam", "MAM", "jja", "JJA", "son", "SON", "year", + "YEAR"], + help="Which season you wish to produce" + ) +p.add_argument("-s", "--start", + dest="start", + default=None, + help="Start for climatology: date, value or index " + + "as determined by -i arg") +p.add_argument("-e", "--end", + dest="end", + default=None, + help="End for climatology: date, value or index " + + "as determined by -I arg") +p.add_argument("-i", "--indexation-type", + dest="index", + default="date", + choices=["date", "value", "index"], + help="indexation type") +p.add_argument("-f", "--file", + dest="file", + help="Input file") +p.add_argument("-b", "--bounds", + action="store_true", + dest="bounds", + default=False, + help="reset bounds to monthly") +# parser.use("results_dir", p) +parser.use("results_dir") +c = parser.add_argument_group("CMOR options") +c.add_argument("--use-cmor", dest="cmor", default=False, action="store_true") +c.add_argument("-D", "--drs", + action="store_true", + dest="drs", + default=False, + help="Use drs for output path" + ) +c.add_argument("-T", "--table", + dest="table", + nargs="+", + help="CMOR table") +c.add_argument("-U", "--units", + dest="units", + help="variable(s) units") +c.add_argument("-V", "--cf-var", + dest="cf_var", + help="variable name in CMOR tables") +c.add_argument("-E", "--experiment_id", default=None, + help="'experiment id' for this run (will try to get from input file", + ) +c.add_argument("-I", "--institution", default=None, + help="'institution' for this run (will try to get from input file", + ) +c.add_argument("-S", "--source", default=None, + help="'source' for this run (will try to get from input file", + ) +c.add_argument("-X", "--variable_extra_args", default="{}", + help="Potential extra args to pass to cmor_variable call", + ) + +cmor_xtra_args = ["contact", "references", "model_id", + "institute_id", "forcing", + "parent_experiment_id", + "parent_experiment_rip", + "realization", "comment", "history", + "branch_time", "physics_version", + "initialization_method", + ] +for x in cmor_xtra_args: + c.add_argument("--%s" % x, default=None, + dest=x, + help="'%s' for this run (will try to get from input file" % x + ) + +A = parser.get_parameter() +if len(A.file) == 0: + raise RuntimeError("You need to provide at least one file for input") + +if not os.path.exists(A.file): + raise RuntimeError("file '%s' doe not exits" % A.file) + +# season dictionary +season_function = { + "djf": cdutil.times.DJF, + "mam": cdutil.times.MAM, + "jja": cdutil.times.JJA, + "son": cdutil.times.SON, + "ann": cdutil.times.ANNUALCYCLE, + "year": cdutil.times.YEAR, +} + +filein = cdms2.open(A.file) + + +def getCalendarName(cal): + for att in dir(cdtime): + if getattr(cdtime, att) == cal: + return att[:-8].lower() + + +def dump_cmor(A, s, time, bounds): + inst = checkCMORAttribute("institution") + src = checkCMORAttribute("source") + exp = checkCMORAttribute("experiment_id") + xtra = {} + for x in cmor_xtra_args: + try: + xtra[x] = checkCMORAttribute(x) + except Exception: + pass + cal = data.getTime().getCalendar() # cmor understand cdms calendars + cal_name = getCalendarName(cal) + if A.verbose: + cmor_verbose = cmor.CMOR_NORMAL + else: + cmor_verbose = cmor.CMOR_QUIET + tables_dir = os.path.dirname(A.table) + cmor.setup( + inpath=tables_dir, + netcdf_file_action=cmor.CMOR_REPLACE, + set_verbosity=cmor_verbose, + exit_control=cmor.CMOR_NORMAL, + # logfile='logfile', + create_subdirectories=int(A.drs)) + + tmp = tempfile.NamedTemporaryFile(mode="w") + tmp.write("""{{ + "_control_vocabulary_file": "CMIP6_CV.json", + "_AXIS_ENTRY_FILE": "CMIP6_coordinate.json", + "_FORMULA_VAR_FILE": "CMIP6_formula_terms.json", + "_cmip6_option": "CMIP6", + + "tracking_prefix": "hdl:21.14100", + "activity_id": "ISMIP6", + + + "#output": "Root directory where files are written", + "outpath": "{}", + + "#experiment_id": "valid experiment_ids are found in CMIP6_CV.json", + "experiment_id": "{}", + "sub_experiment_id": "none", + "sub_experiment": "none", + + "source_type": "AOGCM", + "mip_era": "CMIP6", + "calendar": "{}", + + "realization_index": "{}", + "initialization_index": "{}", + "physics_index": "{}", + "forcing_index": "1", + + "#contact ": "Not required", + "contact ": "Python Coder (coder@a.b.c.com)", + + "#history": "not required, supplemented by CMOR", + "history": "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.", + + "#comment": "Not required", + "comment": "", + "#references": "Not required", + "references": "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html 2XCO2 simulation described in Dorkey et al +. '(Clim. Dyn., 2003, 323-357.)'", + + "grid": "gs1x1", + "grid_label": "gr", + "nominal_resolution": "5 km", + + "institution_id": "{}", + + "parent_experiment_id": "histALL", + "parent_activity_id": "ISMIP6", + "parent_mip_era": "CMIP6", + + "parent_source_id": "PCMDI-test-1-0", + "parent_time_units": "days since 1970-01-01", + "parent_variant_label": "r123i1p33f5", + + "branch_method": "Spin-up documentation", + "branch_time_in_child": 2310.0, + "branch_time_in_parent": 12345.0, + + + "#run_variant": "Description of run variant (Recommended).", + "run_variant": "forcing: black carbon aerosol only", + + "#source_id": "Model Source", + "source_id": "{}", + + "#source": "source title, first part is source_id", + "source": "PCMDI's PMP", + + + "_history_template": "%s ;rewrote data to be consistent with for variable found in table .", + "#output_path_template": "Template for output path directory using tables keys or global attributes", + "output_path_template": "<_member_id>", + "output_file_template": "
<_member_id>", + "license": "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." +}} +""".format(A.results_dir, exp, cal_name, r, i, p, inst.split()[0], src)) # noqa + + tmp.flush() + cmor.dataset_json(tmp.name) + if not os.path.exists(A.table): + raise RuntimeError( + "No such file or directory for tables: %s" % A.table) + + print("Loading table: {}".format(os.path.abspath(A.table))) + table_content = open(A.table).read().replace("time", "time2") + table_content = table_content.replace("time22", "time2") + table = tempfile.NamedTemporaryFile("w") + table.write(table_content) + table.flush() + for table_name in ["formula_terms", "coordinate"]: + nm = "CMIP6_{}.json".format(table_name) + with open(os.path.join(os.path.dirname(table.name), nm), "w") as tmp: + tmp.write(open(os.path.join(tables_dir, nm)).read()) + + table = cmor.load_table(table.name) + + # Ok CMOR is ready let's create axes + cmor_axes = [] + for ax in s.getAxisList(): + if ax.isLatitude(): + table_entry = "latitude" + elif ax.isLongitude(): + table_entry = "longitude" + elif ax.isLevel(): # Need work here for sigma + table_entry = "plevs" + if ax.isTime(): + table_entry = "time2" + ntimes = len(ax) + axvals = numpy.array(values) + axbnds = numpy.array(bounds) + axunits = Tunits + else: + axvals = ax[:] + axbnds = ax.getBounds() + axunits = ax.units + ax_id = cmor.axis(table_entry=table_entry, + units=axunits, + coord_vals=axvals, + cell_bounds=axbnds + ) + cmor_axes.append(ax_id) + # Now create the variable itself + if A.cf_var is not None: + var_entry = A.cf_var + else: + var_entry = data.id + + units = A.units + if units is None: + units = data.units + + kw = eval(A.variable_extra_args) + if not isinstance(kw, dict): + raise RuntimeError( + "invalid evaled type for -X args, should be evaled as a dict, e.g: -X '{\"positive\":\"up\"}'") + var_id = cmor.variable(table_entry=var_entry, + units=units, + axis_ids=cmor_axes, + type=s.typecode(), + missing_value=s.missing_value, + **kw) + + # And finally write the data + data2 = s.filled(s.missing_value) + cmor.write(var_id, data2, ntimes_passed=ntimes) + + # Close cmor + path = cmor.close(var_id, file_name=True) + if season.lower() == "ann": + suffix = "ac" + else: + suffix = season + path2 = path.replace("-clim.nc", "-clim-%s.nc" % suffix) + os.rename(path, path2) + if A.verbose: + print("Saved to:", path2) + + cmor.close() + if A.verbose: + print("closed cmor") + + +def checkCMORAttribute(att, source=filein): + res = getattr(A, att) + if res is None: + if hasattr(source, att): + res = getattr(source, att) + else: + raise RuntimeError("Could not figure out the CMOR '%s'" % att) + return res + + +def store_globals(file): + globals = {} + for att in file.listglobal(): + globals[att] = getattr(file, att) + return globals + + +def store_attributes(var): + attributes = {} + for att in var.listattributes(): + attributes[att] = getattr(var, att) + return attributes + + +fvars = list(filein.variables.keys()) +v = A.var +if v not in fvars: + raise RuntimeError( + "Variable '%s' is not contained in input file(s)" % + v) +V = filein[v] +tim = V.getTime().clone() +# "monthly" +if A.bounds: + cdutil.times.setTimeBoundsMonthly(tim) +# Now make sure we can get the requested period +if A.start is None: + i0 = 0 +else: # Ok user specified a start time + if A.index == "index": # index-based slicing + if int(A.start) >= len(tim): + raise RuntimeError( + "For variable %s you requested start time to be at index: %i but the file only has %i time steps" % + (v, int( + A.start), len(tim))) + i0 = int(A.start) + elif A.index == "value": # actual value used for slicing + v0 = float(A.start) + try: + i0, tmp = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find value %s for start time for variable %s" % + (A.start, v)) + elif A.index == "date": + v0 = A.start + # When too close from bounds it messes it up, adding a minute seems to help + v0 = cdtime.s2c(A.start) + v0 = v0.add(1, cdtime.Minute) + try: + i0, tmp = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find start time %s for variable: %s" % + (A.start, v)) + +if A.end is None: + i1 = None +else: # Ok user specified a end time + if A.index == "index": # index-based slicing + if int(A.end) >= len(tim): + raise RuntimeError( + "For variable %s you requested end time to be at index: %i but the file only has %i time steps" % + (v, int( + A.end), len(tim))) + i1 = int(A.end) + elif A.index == "value": # actual value used for slicing + v0 = float(A.end) + try: + tmp, i1 = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find value %s for end time for variable %s" % + (A.end, v)) + elif A.index == "date": + v0 = A.end + # When too close from bounds it messes it up, adding a minute seems to help + v0 = cdtime.s2c(A.end) + v0 = v0.add(1, cdtime.Minute) + try: + tmp, i1 = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find end time %s for variable: %s" % + (A.end, v)) +# Read in data +data = V(time=slice(i0, i1)) +if A.verbose: + print("DATA:", data.shape, data.getTime().asComponentTime() + [0], data.getTime().asComponentTime()[-1]) +if A.bounds: + cdutil.times.setTimeBoundsMonthly(data) +# Now we can actually read and compute the climo +seasons = [s.lower() for s in A.seasons] +if "all" in seasons: + seasons = ["djf", "mam", "jja", "son", "year", "ann"] + +for season in seasons: + s = season_function[season].climatology( + data, criteriaarg=[A.threshold, None]) + g = season_function[season].get(data, criteriaarg=[A.threshold, None]) + # Ok we know we have monthly data + # We want to tweak bounds + T = data.getTime() + Tg = g.getTime() + istart = 0 + while numpy.ma.allequal(g[istart].mask, True): + istart += 1 + iend = -1 + while numpy.ma.allequal(g[iend].mask, True): + iend -= 1 + if iend == -1: + iend = None + else: + iend += 1 + Tg = Tg.subAxis(istart, iend) + + cal = T.getCalendar() + cal_name = getCalendarName(cal) + Tunits = T.units + bnds = T.getBounds() + tc = T.asComponentTime() + + if A.verbose: + print("TG:", Tg.asComponentTime()[0]) + print("START END THRESHOLD:", istart, iend, A.threshold, len(Tg)) + # print "SEASON:", season, "ORIGINAL:", T.asComponentTime() + b1 = cdtime.reltime(Tg.getBounds()[0][0], Tg.units) + b2 = cdtime.reltime(Tg.getBounds()[-1][1], Tg.units) + + # First and last time points + y1 = cdtime.reltime(Tg[0], T.units) + y2 = cdtime.reltime(Tg[-1], T.units) + + # Mid year is: + yr = (y2.value + y1.value) / 2. + y = cdtime.reltime(yr, T.units).tocomp(cal).year + + if A.verbose: + print("We found data from ", y1.tocomp(cal), + "to", y2.tocomp(cal), "MID YEAR:", y) + print("bounds:", b1.tocomp(cal), b2.tocomp(cal)) + + values = [] + bounds = [] + + # Loop thru clim month and set value and bounds appropriately + ts = s.getTime().asComponentTime() + for ii in range(s.shape[0]): + t = ts[ii] + t.year = y + values.append(t.torel(Tunits, cal).value) + if (s.shape[0] > 1): + B1 = b1.tocomp(cal).add(ii, cdtime.Month) + B2 = b2.tocomp(cal).add(ii - s.shape[0] + 1, cdtime.Month) + else: + B1 = b1 + B2 = b2 + # b2.year = y + # b1.year = y + # if b1.cmp(b2) > 0: # ooops + # if b1.month>b2.month and b1.month-b2.month!=11: + # b1.year -= 1 + # else: + # b2.year += 1 + # if b1.month == b2.month: + # b2.year = b1.year+1 + if A.verbose: + print(B1.tocomp(cal), "<", t, "<", B2.tocomp(cal)) + bounds.append([B1.torel(Tunits, cal).value, + B2.torel(Tunits, cal).value]) + +model_id = checkCMORAttribute("model_id") +exp = checkCMORAttribute("experiment_id") +r = checkCMORAttribute("realization") +i = checkCMORAttribute("initialization_method") +p = checkCMORAttribute("physics_version") +if A.cmor and hasCMOR: + dump_cmor(A, s, values, bounds) +else: + if A.cmor and not hasCMOR: + print("Your Python does not have CMOR, using regular cdms to write out files") + print("MODEL ID:", model_id) + if not os.path.exists(A.results_dir): + os.makedirs(A.results_dir) + end_tc = tc[-1].add(1, cdtime.Month) + nm = os.path.join(A.results_dir, "{}_PMP_{}_{}_r{}i{}p{}_{}{:02d}-{}{:02d}-clim-{}.nc".format( + v, model_id, exp, r, i, p, tc[0].year, tc[0].month, end_tc.year, end_tc.month, season)) + f = cdms2.open(nm, "w") + # Global attributes copied + for att, value in store_globals(filein).items(): + setattr(f, att, value) + t = cdms2.createAxis(values) + t.setBounds(numpy.array(bounds)) + t.designateTime() + t.id = "time" + s.setAxis(0, t) + # copy orignal attributes + for att, value in store_attributes(V).items(): + setattr(s, att, value) + f.write(s, dtype=data.dtype) + f.close() + print("Results out to:", nm) diff --git a/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py b/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py index 1618660e5..835a59893 100644 --- a/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py +++ b/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py @@ -1,24 +1,20 @@ #!/usr/bin/env python -import argparse +from __future__ import print_function import os -import sys -import glob import tempfile -import subprocess -import shlex import cdms2 import cdutil import numpy import cdtime - +from pcmdi_metrics.driver.pmp_parser import PMPParser try: import cmor + hasCMOR = True except Exception: - raise RuntimeError("Your UV-CDAT is not built with cmor") + hasCMOR = False -parser = argparse.ArgumentParser( - description='Generates Climatologies from files') +parser = PMPParser(description='Generates Climatologies from files') p = parser.add_argument_group('processing') p.add_argument( @@ -32,12 +28,11 @@ action="store_false", dest="verbose", help="quiet output") -p.add_argument("-v", "--vars", - nargs="*", - dest="vars", +p.add_argument("-v", "--var", + dest="var", default=None, - required=True, - help="variables to use for climatology") + # required=True, + help="variable to use for climatology") p.add_argument("-t", "--threshold", dest='threshold', default=.5, @@ -68,40 +63,34 @@ default="date", choices=["date", "value", "index"], help="indexation type") -p.add_argument("-f", "--files", - dest="files", - help="Input file", - nargs="+") +p.add_argument("-f", "--file", + dest="file", + help="Input file") p.add_argument("-b", "--bounds", action="store_true", dest="bounds", default=False, help="reset bounds to monthly") +# parser.use("results_dir", p) +parser.use("results_dir") c = parser.add_argument_group("CMOR options") -c.add_argument("-O", "--output-directory", - dest="output_directory", - default=".", - help="output directory") +c.add_argument("--use-cmor", dest="cmor", default=False, action="store_true") c.add_argument("-D", "--drs", action="store_true", dest="drs", default=False, help="Use drs for output path" ) -c.add_argument("-T", "--tables", - dest="tables", - help="path where CMOR tables reside (directory or table)", - default=os.path.join(sys.prefix, "share", "pmp", "pcmdi_metrics_table")) +c.add_argument("-T", "--table", + dest="table", + nargs="+", + help="CMOR table") c.add_argument("-U", "--units", dest="units", - nargs="*", - help="variable(s) units, in same order " + - "as -v argument") + help="variable(s) units") c.add_argument("-V", "--cf-var", dest="cf_var", - nargs="*", - help="variable(s) name in CMOR tables, in same order " + - "as -v argument") + help="variable name in CMOR tables") c.add_argument("-E", "--experiment_id", default=None, help="'experiment id' for this run (will try to get from input file", ) @@ -129,32 +118,12 @@ help="'%s' for this run (will try to get from input file" % x ) -A = parser.parse_args(sys.argv[1:]) -if len(A.files) == 0: +A = parser.get_parameter() +if len(A.file) == 0: raise RuntimeError("You need to provide at least one file for input") -if len(A.files) == 1: - A.files = glob.glob(A.files[0]) - -for f in A.files: - if not os.path.exists(f): - raise RuntimeError("file '%s' doe not exits" % f) -if len(A.files) > 1: - if A.verbose: - print("Multiple files sent, running cdscan on them") - xml = tempfile.mkstemp(suffix=".xml")[1] - P = subprocess.Popen( - shlex.split( - "cdscan -x %s %s" % - (xml, - " ".join( - A.files)))) - P.wait() - A.files = xml -else: - A.files = A.files[0] - xml = None - +if not os.path.exists(A.file): + raise RuntimeError("file '%s' doe not exits" % A.file) # season dictionary season_function = { @@ -165,7 +134,201 @@ "ann": cdutil.times.ANNUALCYCLE, "year": cdutil.times.YEAR, } -filein = cdms2.open(A.files) + +filein = cdms2.open(A.file) + + +def getCalendarName(cal): + for att in dir(cdtime): + if getattr(cdtime, att) == cal: + return att[:-8].lower() + + +def dump_cmor(A, s, time, bounds): + inst = checkCMORAttribute("institution") + src = checkCMORAttribute("source") + exp = checkCMORAttribute("experiment_id") + xtra = {} + for x in cmor_xtra_args: + try: + xtra[x] = checkCMORAttribute(x) + except Exception: + pass + cal = data.getTime().getCalendar() # cmor understand cdms calendars + cal_name = getCalendarName(cal) + if A.verbose: + cmor_verbose = cmor.CMOR_NORMAL + else: + cmor_verbose = cmor.CMOR_QUIET + tables_dir = os.path.dirname(A.table) + cmor.setup( + inpath=tables_dir, + netcdf_file_action=cmor.CMOR_REPLACE, + set_verbosity=cmor_verbose, + exit_control=cmor.CMOR_NORMAL, + # logfile='logfile', + create_subdirectories=int(A.drs)) + + tmp = tempfile.NamedTemporaryFile(mode="w") + tmp.write("""{{ + "_control_vocabulary_file": "CMIP6_CV.json", + "_AXIS_ENTRY_FILE": "CMIP6_coordinate.json", + "_FORMULA_VAR_FILE": "CMIP6_formula_terms.json", + "_cmip6_option": "CMIP6", + + "tracking_prefix": "hdl:21.14100", + "activity_id": "ISMIP6", + + + "#output": "Root directory where files are written", + "outpath": "{}", + + "#experiment_id": "valid experiment_ids are found in CMIP6_CV.json", + "experiment_id": "{}", + "sub_experiment_id": "none", + "sub_experiment": "none", + + "source_type": "AOGCM", + "mip_era": "CMIP6", + "calendar": "{}", + + "realization_index": "{}", + "initialization_index": "{}", + "physics_index": "{}", + "forcing_index": "1", + + "#contact ": "Not required", + "contact ": "Python Coder (coder@a.b.c.com)", + + "#history": "not required, supplemented by CMOR", + "history": "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.", + + "#comment": "Not required", + "comment": "", + "#references": "Not required", + "references": "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html 2XCO2 simulation described in Dorkey et al +. '(Clim. Dyn., 2003, 323-357.)'", + + "grid": "gs1x1", + "grid_label": "gr", + "nominal_resolution": "5 km", + + "institution_id": "{}", + + "parent_experiment_id": "histALL", + "parent_activity_id": "ISMIP6", + "parent_mip_era": "CMIP6", + + "parent_source_id": "PCMDI-test-1-0", + "parent_time_units": "days since 1970-01-01", + "parent_variant_label": "r123i1p33f5", + + "branch_method": "Spin-up documentation", + "branch_time_in_child": 2310.0, + "branch_time_in_parent": 12345.0, + + + "#run_variant": "Description of run variant (Recommended).", + "run_variant": "forcing: black carbon aerosol only", + + "#source_id": "Model Source", + "source_id": "{}", + + "#source": "source title, first part is source_id", + "source": "PCMDI's PMP", + + + "_history_template": "%s ;rewrote data to be consistent with for variable found in table .", + "#output_path_template": "Template for output path directory using tables keys or global attributes", + "output_path_template": "<_member_id>
", + "output_file_template": "
<_member_id>", + "license": "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." +}} +""".format(A.results_dir, exp, cal_name, r, i, p, inst.split()[0], src)) # noqa + + tmp.flush() + cmor.dataset_json(tmp.name) + if not os.path.exists(A.table): + raise RuntimeError( + "No such file or directory for tables: %s" % A.table) + + print("Loading table: {}".format(os.path.abspath(A.table))) + table_content = open(A.table).read().replace("time", "time2") + table_content = table_content.replace("time22", "time2") + table = tempfile.NamedTemporaryFile("w") + table.write(table_content) + table.flush() + for table_name in ["formula_terms", "coordinate"]: + nm = "CMIP6_{}.json".format(table_name) + with open(os.path.join(os.path.dirname(table.name), nm), "w") as tmp: + tmp.write(open(os.path.join(tables_dir, nm)).read()) + + table = cmor.load_table(table.name) + + # Ok CMOR is ready let's create axes + cmor_axes = [] + for ax in s.getAxisList(): + if ax.isLatitude(): + table_entry = "latitude" + elif ax.isLongitude(): + table_entry = "longitude" + elif ax.isLevel(): # Need work here for sigma + table_entry = "plevs" + if ax.isTime(): + table_entry = "time2" + ntimes = len(ax) + axvals = numpy.array(values) + axbnds = numpy.array(bounds) + axunits = Tunits + else: + axvals = ax[:] + axbnds = ax.getBounds() + axunits = ax.units + ax_id = cmor.axis(table_entry=table_entry, + units=axunits, + coord_vals=axvals, + cell_bounds=axbnds + ) + cmor_axes.append(ax_id) + # Now create the variable itself + if A.cf_var is not None: + var_entry = A.cf_var + else: + var_entry = data.id + + units = A.units + if units is None: + units = data.units + + kw = eval(A.variable_extra_args) + if not isinstance(kw, dict): + raise RuntimeError( + "invalid evaled type for -X args, should be evaled as a dict, e.g: -X '{\"positive\":\"up\"}'") + var_id = cmor.variable(table_entry=var_entry, + units=units, + axis_ids=cmor_axes, + type=s.typecode(), + missing_value=s.missing_value, + **kw) + + # And finally write the data + data2 = s.filled(s.missing_value) + cmor.write(var_id, data2, ntimes_passed=ntimes) + + # Close cmor + path = cmor.close(var_id, file_name=True) + if season.lower() == "ann": + suffix = "ac" + else: + suffix = season + path2 = path.replace("-clim.nc", "-clim-%s.nc" % suffix) + os.rename(path, path2) + if A.verbose: + print("Saved to:", path2) + + cmor.close() + if A.verbose: + print("closed cmor") def checkCMORAttribute(att, source=filein): @@ -178,264 +341,206 @@ def checkCMORAttribute(att, source=filein): return res +def store_globals(file): + globals = {} + for att in file.listglobal(): + globals[att] = getattr(file, att) + return globals + + +def store_attributes(var): + attributes = {} + for att in var.listattributes(): + attributes[att] = getattr(var, att) + return attributes + + fvars = list(filein.variables.keys()) -for ivar, v in enumerate(A.vars): - if v not in fvars: - raise RuntimeError( - "Variable '%s' is not contained in input file(s)" % - v) - V = filein[v] - tim = V.getTime().clone() - # "monthly" - if A.bounds: - cdutil.times.setTimeBoundsMonthly(tim) - # Now make sure we can get the requested period - if A.start is None: - i0 = 0 - else: # Ok user specified a start time - if A.index == "index": # index-based slicing - if int(A.start) >= len(tim): - raise RuntimeError( - "For variable %s you requested start time to be at index: %i but the file only has %i time steps" % - (v, int( - A.start), len(tim))) - i0 = int(A.start) - elif A.index == "value": # actual value used for slicing - v0 = float(A.start) - try: - i0, tmp = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find value %s for start time for variable %s" % - (A.start, v)) - elif A.index == "date": - v0 = A.start - # When too close from bounds it messes it up, adding a minute seems to help - v0 = cdtime.s2c(A.start) - v0 = v0.add(1, cdtime.Minute) - try: - i0, tmp = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find start time %s for variable: %s" % - (A.start, v)) - - if A.end is None: - i1 = None - else: # Ok user specified a end time - if A.index == "index": # index-based slicing - if int(A.end) >= len(tim): - raise RuntimeError( - "For variable %s you requested end time to be at index: %i but the file only has %i time steps" % - (v, int( - A.end), len(tim))) - i1 = int(A.end) - elif A.index == "value": # actual value used for slicing - v0 = float(A.end) - try: - tmp, i1 = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find value %s for end time for variable %s" % - (A.end, v)) - elif A.index == "date": - v0 = A.end - # When too close from bounds it messes it up, adding a minute seems to help - v0 = cdtime.s2c(A.end) - v0 = v0.add(1, cdtime.Minute) - try: - tmp, i1 = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find end time %s for variable: %s" % - (A.end, v)) - # Read in data - data = V(time=slice(i0, i1)) - if A.verbose: - print("DATA:", data.shape, data.getTime().asComponentTime()[0], data.getTime().asComponentTime()[-1]) - if A.bounds: - cdutil.times.setTimeBoundsMonthly(data) - # Now we can actually read and compute the climo - seasons = [s.lower() for s in A.seasons] - if "all" in seasons: - seasons = ["djf", "mam", "jja", "son", "year", "ann"] - - for season in seasons: - s = season_function[season].climatology(data, criteriaarg=[A.threshold, None]) - g = season_function[season].get(data, criteriaarg=[A.threshold, None]) - # Ok we know we have monthly data - # We want to tweak bounds - T = data.getTime() - Tg = g.getTime() - istart = 0 - while numpy.ma.allequal(g[istart].mask, True): - istart += 1 - iend = -1 - while numpy.ma.allequal(g[iend].mask, True): - iend -= 1 - if iend == -1: - iend = None - else: - iend += 1 - Tg = Tg.subAxis(istart, iend) +v = A.var +if v not in fvars: + raise RuntimeError( + "Variable '%s' is not contained in input file(s)" % + v) +V = filein[v] +tim = V.getTime().clone() +# "monthly" +if A.bounds: + cdutil.times.setTimeBoundsMonthly(tim) +# Now make sure we can get the requested period +if A.start is None: + i0 = 0 +else: # Ok user specified a start time + if A.index == "index": # index-based slicing + if int(A.start) >= len(tim): + raise RuntimeError( + "For variable %s you requested start time to be at index: %i but the file only has %i time steps" % + (v, int( + A.start), len(tim))) + i0 = int(A.start) + elif A.index == "value": # actual value used for slicing + v0 = float(A.start) + try: + i0, tmp = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find value %s for start time for variable %s" % + (A.start, v)) + elif A.index == "date": + v0 = A.start + # When too close from bounds it messes it up, adding a minute seems to help + v0 = cdtime.s2c(A.start) + v0 = v0.add(1, cdtime.Minute) + try: + i0, tmp = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find start time %s for variable: %s" % + (A.start, v)) - cal = T.getCalendar() - Tunits = T.units - bnds = T.getBounds() - tc = T.asComponentTime() +if A.end is None: + i1 = None +else: # Ok user specified a end time + if A.index == "index": # index-based slicing + if int(A.end) >= len(tim): + raise RuntimeError( + "For variable %s you requested end time to be at index: %i but the file only has %i time steps" % + (v, int( + A.end), len(tim))) + i1 = int(A.end) + elif A.index == "value": # actual value used for slicing + v0 = float(A.end) + try: + tmp, i1 = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find value %s for end time for variable %s" % + (A.end, v)) + elif A.index == "date": + v0 = A.end + # When too close from bounds it messes it up, adding a minute seems to help + v0 = cdtime.s2c(A.end) + v0 = v0.add(1, cdtime.Minute) + try: + tmp, i1 = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find end time %s for variable: %s" % + (A.end, v)) +# Read in data +data = V(time=slice(i0, i1)) +if A.verbose: + print("DATA:", data.shape, data.getTime().asComponentTime() + [0], data.getTime().asComponentTime()[-1]) +if A.bounds: + cdutil.times.setTimeBoundsMonthly(data) +# Now we can actually read and compute the climo +seasons = [s.lower() for s in A.seasons] +if "all" in seasons: + seasons = ["djf", "mam", "jja", "son", "year", "ann"] - if A.verbose: - print("TG:", Tg.asComponentTime()[0]) - print("START END THRESHOLD:", istart, iend, A.threshold, len(Tg)) - # print "SEASON:", season, "ORIGINAL:", T.asComponentTime() - b1 = cdtime.reltime(Tg.getBounds()[0][0], Tg.units) - b2 = cdtime.reltime(Tg.getBounds()[-1][1], Tg.units) +for season in seasons: + s = season_function[season].climatology( + data, criteriaarg=[A.threshold, None]) + g = season_function[season].get(data, criteriaarg=[A.threshold, None]) + # Ok we know we have monthly data + # We want to tweak bounds + T = data.getTime() + Tg = g.getTime() + istart = 0 + while numpy.ma.allequal(g[istart].mask, True): + istart += 1 + iend = -1 + while numpy.ma.allequal(g[iend].mask, True): + iend -= 1 + if iend == -1: + iend = None + else: + iend += 1 + Tg = Tg.subAxis(istart, iend) - # First and last time points - y1 = cdtime.reltime(Tg[0], T.units) - y2 = cdtime.reltime(Tg[-1], T.units) + cal = T.getCalendar() + cal_name = getCalendarName(cal) + Tunits = T.units + bnds = T.getBounds() + tc = T.asComponentTime() - # Mid year is: - yr = (y2.value + y1.value) / 2. - y = cdtime.reltime(yr, T.units).tocomp(cal).year + if A.verbose: + print("TG:", Tg.asComponentTime()[0]) + print("START END THRESHOLD:", istart, iend, A.threshold, len(Tg)) + # print "SEASON:", season, "ORIGINAL:", T.asComponentTime() + b1 = cdtime.reltime(Tg.getBounds()[0][0], Tg.units) + b2 = cdtime.reltime(Tg.getBounds()[-1][1], Tg.units) - if A.verbose: - print("We found data from ", y1.tocomp(cal), "to", y2.tocomp(cal), "MID YEAR:", y) - print("bounds:", b1.tocomp(cal), b2.tocomp(cal)) - - values = [] - bounds = [] - - # Loop thru clim month and set value and bounds appropriately - ts = s.getTime().asComponentTime() - for ii in range(s.shape[0]): - t = ts[ii] - t.year = y - values.append(t.torel(Tunits, cal).value) - if (s.shape[0] > 1): - B1 = b1.tocomp(cal).add(ii, cdtime.Month) - B2 = b2.tocomp(cal).add(ii - s.shape[0] + 1, cdtime.Month) - else: - B1 = b1 - B2 = b2 - # b2.year = y - # b1.year = y - # if b1.cmp(b2) > 0: # ooops - # if b1.month>b2.month and b1.month-b2.month!=11: - # b1.year -= 1 - # else: - # b2.year += 1 - # if b1.month == b2.month: - # b2.year = b1.year+1 - if A.verbose: - print(B1.tocomp(cal), "<", t, "<", B2.tocomp(cal)) - bounds.append([B1.torel(Tunits, cal).value, - B2.torel(Tunits, cal).value]) - - inst = checkCMORAttribute("institution") - src = checkCMORAttribute("source") - exp = checkCMORAttribute("experiment_id") - xtra = {} - for x in cmor_xtra_args: - try: - xtra[x] = checkCMORAttribute(x) - except Exception: - pass - cal = data.getTime().getCalendar() # cmor understand cdms calendars - if A.verbose: - cmor_verbose = cmor.CMOR_NORMAL - else: - cmor_verbose = cmor.CMOR_QUIET - error_flag = cmor.setup( - inpath='.', - netcdf_file_action=cmor.CMOR_REPLACE, - set_verbosity=cmor_verbose, - exit_control=cmor.CMOR_NORMAL, - # logfile='logfile', - create_subdirectories=int(A.drs)) - error_flag = cmor.dataset( - experiment_id=exp, - outpath=A.output_directory, - institution=inst, - source=src, - calendar=cal, - **xtra - ) - if not os.path.exists(A.tables): - raise RuntimeError("No such file or directory for tables: %s" % A.tables) - if os.path.isdir(A.tables): - table = os.path.join(A.tables, "pcmdi_metrics_table") - else: - table = A.tables - table = cmor.load_table(table) - - # Ok CMOR is ready let's create axes - cmor_axes = [] - for ax in s.getAxisList(): - if ax.isLatitude(): - table_entry = "latitude" - elif ax.isLongitude(): - table_entry = "longitude" - elif ax.isLevel(): # Need work here for sigma - table_entry = "plevs" - if ax.isTime(): - table_entry = "time2" - ntimes = len(ax) - axvals = numpy.array(values) - axbnds = numpy.array(bounds) - axunits = Tunits - else: - axvals = ax[:] - axbnds = ax.getBounds() - axunits = ax.units - ax_id = cmor.axis(table_entry=table_entry, - units=axunits, - coord_vals=axvals, - cell_bounds=axbnds - ) - cmor_axes.append(ax_id) - # Now create the variable itself - if A.cf_var is not None: - var_entry = A.cf_var[ivar] - else: - var_entry = data.id + # First and last time points + y1 = cdtime.reltime(Tg[0], T.units) + y2 = cdtime.reltime(Tg[-1], T.units) - units = A.units - if units is None: - units = data.units - else: - units = units[ivar] - kw = eval(A.variable_extra_args) - if not isinstance(kw, dict): - raise RuntimeError( - "invalid evaled type for -X args, should be evaled as a dict, e.g: -X '{\"positive\":\"up\"}'") - var_id = cmor.variable(table_entry=var_entry, - units=units, - axis_ids=cmor_axes, - type=s.typecode(), - missing_value=s.missing_value, - **kw) - - # And finally write the data - data2 = s.filled(s.missing_value) - cmor.write(var_id, data2, ntimes_passed=ntimes) - - # Close cmor - path = cmor.close(var_id, file_name=True) - if season.lower() == "ann": - suffix = "ac" - else: - suffix = season - path2 = path.replace("-clim.nc", "-clim-%s.nc" % suffix) - os.rename(path, path2) - if A.verbose: - print("Saved to:", path2) + # Mid year is: + yr = (y2.value + y1.value) / 2. + y = cdtime.reltime(yr, T.units).tocomp(cal).year - cmor.close() - if A.verbose: - print("closed cmor") + if A.verbose: + print("We found data from ", y1.tocomp(cal), + "to", y2.tocomp(cal), "MID YEAR:", y) + print("bounds:", b1.tocomp(cal), b2.tocomp(cal)) + values = [] + bounds = [] -# clean up -if xml is not None: - os.remove(xml) + # Loop thru clim month and set value and bounds appropriately + ts = s.getTime().asComponentTime() + for ii in range(s.shape[0]): + t = ts[ii] + t.year = y + values.append(t.torel(Tunits, cal).value) + if (s.shape[0] > 1): + B1 = b1.tocomp(cal).add(ii, cdtime.Month) + B2 = b2.tocomp(cal).add(ii - s.shape[0] + 1, cdtime.Month) + else: + B1 = b1 + B2 = b2 + # b2.year = y + # b1.year = y + # if b1.cmp(b2) > 0: # ooops + # if b1.month>b2.month and b1.month-b2.month!=11: + # b1.year -= 1 + # else: + # b2.year += 1 + # if b1.month == b2.month: + # b2.year = b1.year+1 + if A.verbose: + print(B1.tocomp(cal), "<", t, "<", B2.tocomp(cal)) + bounds.append([B1.torel(Tunits, cal).value, + B2.torel(Tunits, cal).value]) + +model_id = checkCMORAttribute("model_id") +exp = checkCMORAttribute("experiment_id") +r = checkCMORAttribute("realization") +i = checkCMORAttribute("initialization_method") +p = checkCMORAttribute("physics_version") +if A.cmor and hasCMOR: + dump_cmor(A, s, values, bounds) +else: + if A.cmor and not hasCMOR: + print("Your Python does not have CMOR, using regular cdms to write out files") + print("MODEL ID:", model_id) + if not os.path.exists(A.results_dir): + os.makedirs(A.results_dir) + end_tc = tc[-1].add(1, cdtime.Month) + nm = os.path.join(A.results_dir, "{}_PMP_{}_{}_r{}i{}p{}_{}{:02d}-{}{:02d}-clim-{}.nc".format( + v, model_id, exp, r, i, p, tc[0].year, tc[0].month, end_tc.year, end_tc.month, season)) + f = cdms2.open(nm, "w") + # Global attributes copied + for att, value in store_globals(filein).items(): + setattr(f, att, value) + t = cdms2.createAxis(values) + t.setBounds(numpy.array(bounds)) + t.designateTime() + t.id = "time" + s.setAxis(0, t) + # copy orignal attributes + for att, value in store_attributes(V).items(): + setattr(s, att, value) + f.write(s, dtype=data.dtype) + f.close() + print("Results out to:", nm) diff --git a/tests/pmp_runtests.json b/tests/pmp_runtests.json new file mode 100644 index 000000000..302585fbd --- /dev/null +++ b/tests/pmp_runtests.json @@ -0,0 +1,14 @@ +{ + "--update": { + "action": "store_true", + "default": false, + "help": "update baselines", + "type": null + }, + "--traceback": { + "action": "store_true", + "default": false, + "help": "show traceback on test failures", + "type": null + } +} From 765c3688c02267b2a129f97a00a5953144796f9d Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 8 Aug 2018 19:35:47 -0700 Subject: [PATCH 26/84] =?UTF-8?q?fixed=20parallelize=5Fdriver,=20changed?= =?UTF-8?q?=20climo=20to=20take=20model=20and=20filename=20te=E2=80=A6=20(?= =?UTF-8?q?#561)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixed parallelize_driver, changed climo to take model and filename template as input rather than input file * doc for parallelizing * autodetect executables * had not updated param file * result dir can now be a templated string * result dir can get template type, example updated also changed --var to --variable * flake8-ed * first step toward auto gen funcc * added option to dump commands to a file to parallelize_driver.py * func at the right place * fix monsoon test * no basestring in py3 * needs a noqa * ok now it seems we need to eval again... * work around for system that have cdp returning list --- .../Embarassingly_parallelize_drivers.ipynb | 165 ++++++++++++++++++ doc/jupyter/sample_parameter_file.py | 3 + doc/jupyter/sample_parameter_file_updated.py | 4 + examples/parameter_files/cmip_clims_param.py | 22 +-- setup.py | 1 + src/python/misc/scripts/parallelize_driver.py | 34 +++- .../monsoon_wang/scripts/mpindex_compute.py | 9 +- .../pcmdi/scripts/driver/pmp_parameter.py | 41 +++++ src/python/pcmdi/scripts/driver/pmp_parser.py | 5 + .../scripts/pcmdi_compute_climatologies.py | 42 +++-- tests/test_pmp_parser.py | 18 ++ 11 files changed, 303 insertions(+), 41 deletions(-) create mode 100644 doc/jupyter/Embarassingly_parallelize_drivers.ipynb create mode 100644 doc/jupyter/sample_parameter_file.py create mode 100644 doc/jupyter/sample_parameter_file_updated.py create mode 100644 tests/test_pmp_parser.py diff --git a/doc/jupyter/Embarassingly_parallelize_drivers.ipynb b/doc/jupyter/Embarassingly_parallelize_drivers.ipynb new file mode 100644 index 000000000..f89d93d9b --- /dev/null +++ b/doc/jupyter/Embarassingly_parallelize_drivers.ipynb @@ -0,0 +1,165 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Embarassingly parallelize drivers\n", + "\n", + "Often enough a *driver* or *diagnostic* use case can be considered as **embarassingly parallel** for example the code loops over several *models* or *variables* or *scenarios*, etc...\n", + "\n", + "In some case it makes sense to include the loop as part of the driver in order to optimize data re-use (e.g all model will be compared to the same set of observation and these require heavy pre-processing.\n", + "\n", + "But sometimes this is not necessary and all the added loops can make the code cumbersome and hard to read.\n", + "\n", + "The pcmdi_metrics package offers a simple solution for emabrassingly parallel code provided they are based on the [Community Diagnosis Package](https://cdp.readthedocs.io/en/latest/)'s arguments parser.\n", + "\n", + "The idea is simple, identify parameters over which your code is embarassingly parallel. Make sure these parameters are declared as argument inputs to your driver, define the ***granularize** option to your input parsameter file and use **parallelize_driver.py** to run your driver in an embarassingly parallel way.\n", + "\n", + "# Example\n", + "\n", + "## A simple example\n", + "\n", + "### Driver\n", + "\n", + "The following is a mock driver\n", + "\n", + "This driver is accessible [here](mock_driver.py)\n", + "\n", + "```python\n", + "#!/usr/bin/env python\n", + "from __future__ import print_function\n", + "\n", + "# Prepare the parser\n", + "from pcmdi_metrics.driver.pmp_parser import PMPParser\n", + "parser = PMPParser(description='A mock driver')\n", + "\n", + "# Some parameters that could be embarassingly parallelized\n", + "parser.add_argument(\"--model\", help=\"model to run over\")\n", + "parser.add_argument(\"--variable\", help=\"variable to process\")\n", + "parser.add_argument(\"--analysis\", help=\"analysis to run\")\n", + "\n", + "p = parser.get_parameter()\n", + "\n", + "print(\"We are running analysis {} on model {}, using variable {}\".format(p.analysis, p.model, p.variable))\n", + "```\n", + "\n", + "### Parameter file\n", + "\n", + "You can access the sample parameter file [here](sample_parameter_file.py)\n", + "\n", + "```python\n", + "model = \"model_a\"\n", + "variable = \"variable_1\"\n", + "analysis = \"analysis 1\"\n", + "```\n", + "\n", + "### Running\n", + "\n", + "```\n", + "python mock_driver.py -p sample_parameter_file.py\n", + "```\n", + "\n", + "prints\n", + "\n", + "```\n", + "We are running analysis analysis 1 on model model_a, using variable variable_1\n", + "```\n", + "\n", + "## Parallelization\n", + "\n", + "We need to edit our parameter file as follow\n", + " * Add the *granularize* keyword to indicate which arguments we are parallelizing over\n", + " * For each of the above parameter, convert them to a list of the values we need (it could be a list of list or anything)\n", + " \n", + "The updated parameter file can be obtained [here](sample_parameter_file_updated.py)\n", + "\n", + "```python\n", + "granularize = [\"model\", \"analysis\"]\n", + "model = [\"model_a\", \"second model\", 3] # Mixing type is possible\n", + "variable = \"variable_1\"\n", + "analysis = [\"analysis {}\".format(i) for i in range(2)]\n", + "```\n", + "\n", + "And use the `parallelize_driver.py` script:\n", + "\n", + "```\n", + "parallelize_driver.py --driver mock_driver.py -p sample_parameter_file_updated.py\n", + "```\n", + "\n", + "```\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmp7Pc8tg.py\n", + "True\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpENSvHq.py\n", + "True\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpvqeJjP.py\n", + "True\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpIGakna.py\n", + "True\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpBsuuEs.py\n", + "True\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpCOOKbc.py\n", + "True\n", + "We are running analysis analysis 0 on model model_a, using variable variable_1\n", + "We are running analysis analysis 0 on model second model, using variable variable_1\n", + "We are running analysis analysis 1 on model model_a, using variable variable_1\n", + "We are running analysis analysis 1 on model 3, using variable variable_1\n", + "We are running analysis analysis 1 on model second model, using variable variable_1\n", + "We are running analysis analysis 0 on model 3, using variable variable_1\n", + "```\n", + "\n", + "By default it launches as many process as your system's number of processors, but you can control this via the `--num_workers` argument (command line or in parameter file)\n", + "\n", + "\n", + "```\n", + "parallelize_driver.py --driver mock_driver.py -p sample_parameter_file_updated.py --num_workers=2\n", + "```\n", + "\n", + "```\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpETNvYa.py\n", + "True\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmp8DQiEr.py\n", + "True\n", + "We are running analysis analysis 0 on model second model, using variable variable_1\n", + "We are running analysis analysis 0 on model model_a, using variable variable_1\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpTeSVsm.py\n", + "Executing: True/Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpcwKzCp.py\n", + "\n", + "True\n", + "We are running analysis analysis 1 on model model_a, using variable variable_1\n", + "We are running analysis analysis 0 on model 3, using variable variable_1\n", + "Executing: /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpnEXyBa.py\n", + "TrueExecuting:\n", + " /Users/doutriaux1/anaconda2/envs/nightly/bin/python mock_driver.py -p /var/folders/nv/3xl0t1xx4yxb6tyd0yqdm238001cpd/T/tmpeynGmt.py\n", + "True\n", + "We are running analysis analysis 1 on model 3, using variable variable_1\n", + "We are running analysis analysis 1 on model second model, using variable variable_1\n", + "```\n", + "\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.15" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/jupyter/sample_parameter_file.py b/doc/jupyter/sample_parameter_file.py new file mode 100644 index 000000000..7eecfa381 --- /dev/null +++ b/doc/jupyter/sample_parameter_file.py @@ -0,0 +1,3 @@ +model = "model_a" +variable = "variable_1" +analysis="analysis 1" \ No newline at end of file diff --git a/doc/jupyter/sample_parameter_file_updated.py b/doc/jupyter/sample_parameter_file_updated.py new file mode 100644 index 000000000..ac8112297 --- /dev/null +++ b/doc/jupyter/sample_parameter_file_updated.py @@ -0,0 +1,4 @@ +granularize = ["model", "analysis"] +model = ["model_a", "second model", 3] # Mixing type is possible +variable = "variable_1" +analysis = ["analysis {}".format(i) for i in range(2)] \ No newline at end of file diff --git a/examples/parameter_files/cmip_clims_param.py b/examples/parameter_files/cmip_clims_param.py index b89dfdb61..d1cac097c 100644 --- a/examples/parameter_files/cmip_clims_param.py +++ b/examples/parameter_files/cmip_clims_param.py @@ -1,28 +1,20 @@ import os import glob -vars = ['pr','rlut', 'rsut','rsutcs','rlutcs','tas','prw','tauu','tauv','uas','vas','psl','hus','ta','ua','va', 'zg'] -#vars = ['rlut'] -var = ['rlut'] realm = 'atm' MIP = 'cmip5' exp = 'historical' -modpath = os.path.join('/work', 'cmip5', exp, realm, 'mo_new') +modpath = os.path.join('/work', 'cmip5-test', exp, realm, 'mo') +filename_template = "%(variable)/cmip5.%(model).%(experiment).r1i1p1.mo.atm.Amon.%(variable).ver-%(version).latestX.xml" -filename_template = MIP + '.*' + '.' + exp + '.r1i1p1.mo.' + realm + '.Amon.' + '*' + '.ver-*.latestX.xml' - -glb = os.path.join(modpath,"rlut",filename_template) -files = glob.glob(glb) - -file = files[:5] -#var= vars[:3] -climout = 'cmip5clims_newsystem_' + exp + '/' +variable= 'rlut' +climout = './example_results/%(variable)/%(model)/' results_dir = climout - +model = "CNRM-CM5-2" start = '1981' end = '2005-12-31' - -granularize = ["file", "var"] +num_workers = 3 +granularize = ["variable", "model"] diff --git a/setup.py b/setup.py index fdce189e9..c262fc24f 100755 --- a/setup.py +++ b/setup.py @@ -60,6 +60,7 @@ 'src/python/pcmdi/scripts/pcmdi_metrics_driver_legacy.py', 'src/python/pcmdi/scripts/pcmdi_compute_climatologies.py', 'src/python/misc/scripts/install_metrics_from_branches.py', + 'src/python/misc/scripts/parallelize_driver.py', 'demo/pmp_demo_1.py', 'demo/pmp_demo.py', 'src/python/monsoon_wang/scripts/mpindex_compute.py', diff --git a/src/python/misc/scripts/parallelize_driver.py b/src/python/misc/scripts/parallelize_driver.py index d1d60a2ce..6b3b4af53 100644 --- a/src/python/misc/scripts/parallelize_driver.py +++ b/src/python/misc/scripts/parallelize_driver.py @@ -9,10 +9,13 @@ import tempfile import cdp import shlex - +import copy +import distutils.spawn +import stat parser = PMPParser(description='Parallelize a driver over some arguments') parser.add_argument("--driver", help="driver to prallelize") +parser.add_argument("--bash", help="generate a bash script rather than running in parallel", action="store_true") parser.use("num_workers") p = parser.get_parameter() @@ -29,8 +32,10 @@ def build(variables, parameters, params=[{}]): var = variables.pop(0) values = getattr(parameters, var) len_in = len(params) - if len(values) > 1: - params = params * len(values) + count = len(values) + nparms = len(params) + while len(params) < count*nparms: + params += copy.deepcopy(params[:nparms]) for i in range(len_in): for j in range(len(values)): params[j*len_in+i][var] = values[j] @@ -48,15 +53,20 @@ def build_command_lines(driver, parameters, matrix): val = getattr(parameters, att) if inspect.ismodule(val) or inspect.isbuiltin(val) or \ inspect.ismethod(val) or inspect.isfunction(val): - continue + continue if att in ['granularize']: continue if att in mydict: val = mydict[att] print(att, "=", repr(val), file=f) f.close() - cmds.append( - "{}/bin/python {} -p {}".format(sys.prefix, driver, filename)) + cmd = "{} -p {}".format(driver, filename) + if os.path.exists(driver): + cmd = "{}/bin/python {}".format(sys.prefix, cmd) + elif distutils.spawn.find_executable(driver) is None: + raise RuntimeError( + "cannot find driver: '{}', it does not appear to be an executable on your path either".format(driver)) + cmds.append(cmd) return cmds @@ -70,4 +80,14 @@ def run_command(cmd): matrix = build(p.granularize, parameters) cmds = build_command_lines(p.driver, parameters, matrix) -cdp.cdp_run.multiprocess(run_command, cmds, num_workers=p.num_workers) +if p.bash: + bash_filename = os.path.splitext(os.path.basename(p.driver))[0]+"_bash.bash" + with open(bash_filename, "w") as fout: + print("#!/usr/bin/env bash", file=fout) + print("\n".join(cmds), file=fout) + print("Bash file stored in: {}".format(os.path.abspath(bash_filename))) + st = os.stat(bash_filename) + os.chmod(bash_filename, st.st_mode | stat.S_IEXEC) +else: + cdp.cdp_run.multiprocess(run_command, cmds, num_workers=p.num_workers) +print("Done") diff --git a/src/python/monsoon_wang/scripts/mpindex_compute.py b/src/python/monsoon_wang/scripts/mpindex_compute.py index 44cef641d..a4c0b1a7a 100644 --- a/src/python/monsoon_wang/scripts/mpindex_compute.py +++ b/src/python/monsoon_wang/scripts/mpindex_compute.py @@ -58,7 +58,10 @@ modpath = args.modpath outpathjsons = args.outpathjsons outpathdata = args.results_dir -mods = eval(args.modnames) +if isinstance(args.modnames, str): + mods = eval(args.modnames) +else: + mods = args.modnames json_filename = args.jsonname @@ -157,12 +160,9 @@ # CONFIRM DATA FOR MODS IS AVAIL AND REMOVE THOSE IT IS NOT gmods = [] # "Got" these MODS -print("MODS:", mods) -print("LST:", lst) for mod in mods: for l in lst: l1 = modpath.replace('MODS', mod) - print("L!:", l1) if os.path.isfile(l1) is True: if mod not in gmods: gmods.append(mod) @@ -228,7 +228,6 @@ doms = ['AllMW', 'AllM', 'NAMM', 'SAMM', 'NAFM', 'SAFM', 'ASM', 'AUSM'] mpi_stats_dic = {} -print("GMODS:", gmods) for mod in gmods: modelFile = modpath.replace('MODS', mod) diff --git a/src/python/pcmdi/scripts/driver/pmp_parameter.py b/src/python/pcmdi/scripts/driver/pmp_parameter.py index a49c214ad..5d3a705c1 100755 --- a/src/python/pcmdi/scripts/driver/pmp_parameter.py +++ b/src/python/pcmdi/scripts/driver/pmp_parameter.py @@ -2,12 +2,53 @@ import logging import cdp.cdp_parameter from pcmdi_metrics import LOG_LEVEL +import genutil + + +try: + basestring # noqa +except Exception: + basestring = str class PMPParameter(cdp.cdp_parameter.CDPParameter): def __init__(self): logging.getLogger("pmp").setLevel(LOG_LEVEL) + def process_templated_argument(self, name, default_value="*", extras=None): + """Applies arg parse values to a genutil.StringConstructor template type argument + Input: + name: name of the argument to process + extra: other object(s) to get keys from, superseeds argparse object + Output: + formatted argument as a genutil.StringConstructor + """ + + process = getattr(self, name, None) + if process is None: # Ok not an argument from arg_parse maybe a template or string constructor itself + if isinstance(name, basestring): + process = name + elif isinstance(name, genutil.StringConstructor): + process = name.template + else: + raise RuntimeError("Could not figure out how to process argument {}".format(name)) + + if not isinstance(process, basestring): + raise RuntimeError( + "Could not figure out how to process argument {}".format(name)) + + if extras is None: + sources = [] + elif not isinstance(extras, (list, tuple)): + sources = [extras] + + sources.insert(0, self) # will use itself as default source + process = genutil.StringConstructor(process) + for key in process.keys(): + for source in sources: + setattr(process, key, getattr(source, key, default_value)) + return process + class PMPMetricsParameter(cdp.cdp_parameter.CDPParameter): def __init__(self): diff --git a/src/python/pcmdi/scripts/driver/pmp_parser.py b/src/python/pcmdi/scripts/driver/pmp_parser.py index ae922e3c8..a29e5f300 100644 --- a/src/python/pcmdi/scripts/driver/pmp_parser.py +++ b/src/python/pcmdi/scripts/driver/pmp_parser.py @@ -3,6 +3,11 @@ import os import sys +try: + basestring # noqa +except Exception: + basestring = str + class PMPParser(cdp.cdp_parser.CDPParser): def __init__(self, *args, **kwargs): diff --git a/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py b/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py index 835a59893..2585b7211 100644 --- a/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py +++ b/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py @@ -7,6 +7,7 @@ import numpy import cdtime from pcmdi_metrics.driver.pmp_parser import PMPParser +import glob try: import cmor @@ -28,8 +29,8 @@ action="store_false", dest="verbose", help="quiet output") -p.add_argument("-v", "--var", - dest="var", +p.add_argument("-v", "--variable", + dest="variable", default=None, # required=True, help="variable to use for climatology") @@ -63,9 +64,12 @@ default="date", choices=["date", "value", "index"], help="indexation type") -p.add_argument("-f", "--file", - dest="file", - help="Input file") +p.add_argument("-f", "--filename_template", + dest="filename_template", + help="Input file template") +p.add_argument("-m", "--model", + dest="model", + help="Model Name") p.add_argument("-b", "--bounds", action="store_true", dest="bounds", @@ -73,6 +77,7 @@ help="reset bounds to monthly") # parser.use("results_dir", p) parser.use("results_dir") +parser.use("modpath") c = parser.add_argument_group("CMOR options") c.add_argument("--use-cmor", dest="cmor", default=False, action="store_true") c.add_argument("-D", "--drs", @@ -119,11 +124,6 @@ ) A = parser.get_parameter() -if len(A.file) == 0: - raise RuntimeError("You need to provide at least one file for input") - -if not os.path.exists(A.file): - raise RuntimeError("file '%s' doe not exits" % A.file) # season dictionary season_function = { @@ -135,7 +135,19 @@ "year": cdutil.times.YEAR, } -filein = cdms2.open(A.file) +results_dir = A.process_templated_argument("results_dir") +A.results_dir = results_dir() + +filename_in = A.process_templated_argument(os.path.join(A.modpath, A.filename_template)) + +if A.verbose: + print("filename in after templating:", filename_in()) +filename = glob.glob(filename_in())[0] + +if not os.path.exists(filename): + raise RuntimeError("file '{}' doe not exits".format(filename)) + +filein = cdms2.open(filename) def getCalendarName(cal): @@ -356,7 +368,7 @@ def store_attributes(var): fvars = list(filein.variables.keys()) -v = A.var +v = A.variable if v not in fvars: raise RuntimeError( "Variable '%s' is not contained in input file(s)" % @@ -523,7 +535,8 @@ def store_attributes(var): else: if A.cmor and not hasCMOR: print("Your Python does not have CMOR, using regular cdms to write out files") - print("MODEL ID:", model_id) + if A.verbose: + print("MODEL ID:", model_id) if not os.path.exists(A.results_dir): os.makedirs(A.results_dir) end_tc = tc[-1].add(1, cdtime.Month) @@ -543,4 +556,5 @@ def store_attributes(var): setattr(s, att, value) f.write(s, dtype=data.dtype) f.close() - print("Results out to:", nm) + if A.verbose: + print("Results out to:", nm) diff --git a/tests/test_pmp_parser.py b/tests/test_pmp_parser.py new file mode 100644 index 000000000..817ea199b --- /dev/null +++ b/tests/test_pmp_parser.py @@ -0,0 +1,18 @@ +from __future__ import print_function +import unittest +import os +from pcmdi_metrics.driver.pmp_parser import PMPParser + +class PMPParserTest(unittest.TestCase): + def testProcessTemplatedArgument(self): + parser = PMPParser(description='Test') + + parser.add_argument("--something", default="something") + parser.add_argument("--someone", default="someone") + parser.add_argument("--template", default="%(something)/abc/%(someone)") + parser.add_argument("-s") # for nosetest + + A = parser.get_parameter() + + self.assertEqual(A.process_templated_argument("template")(),"something/abc/someone") + self.assertEqual(A.process_templated_argument("%(someone)/cba/%(something)")(),"someone/cba/something") \ No newline at end of file From 37dd40b0d7db6b7b631a21bfc256296b618ca9bc Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 30 Aug 2018 14:57:33 -0700 Subject: [PATCH 27/84] updates to account for new default in cdp (#571) --- src/python/pcmdi/scripts/pcmdi_metrics_driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py index f1ddce32b..c7ec61fc3 100644 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py +++ b/src/python/pcmdi/scripts/pcmdi_metrics_driver.py @@ -393,7 +393,7 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): help='Provide a short description to help identify this run of the PMP mean climate.', required=False) -parameter = parser.get_parameter(cmd_default_vars=False) +parameter = parser.get_parameter(cmd_default_vars=False, argparse_vals_only=False) driver = PMPDriver(parameter) driver.run_diags() From 3d0ade51ce679250b9680a489e421c2b3f40e818 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Wed, 12 Sep 2018 10:28:12 -0700 Subject: [PATCH 28/84] 404 jwl pentmonsoon (#563) * place holder * renamed * place holder * renamed * extracting time series for each year * add getting precip ave from pentad chunk * clean up conflicts * add testing plot * minor bug fix for plot file name * add for testing purpose archive * rename plot file * rename plot file saving * minor change for test plot name * add composite of year by year pentad time sereies * minor clean up * debug test plot for multiple lines * Delete cmip5_CNRM-CM5_historical_r9i1p1_ASM_1850.png * add sample nc output for develop process * clarify variable name for monsoon regions * minor fix * use one testing plot for multiple monsoon regions * unify coordinate axis between individual year and composite time series * minor fix * test with multiple models * fix for testing plot when analyzing multiple model * minor fix for plot legend * minor: fix legend box location to lower right * add result example for develop process * start merging pmpparser capability * download complete for CPC daily ref dataset * issue list added in classical way * add comment for issue list note * add comment on issue note * minor revise for comment * comment adding for issue list note * land only (mask out ocean area) * d.unit to d.units * reduce redundancy of type conversion to MV2.array for pentad_time_series * reduce hardcorded part * merge debugging part to shorten code * add issue list * rename testing output dir * working on leap year issue * add Sperber monsoon domains * move divide chunk to lib and draft leap year handling * advance chunk dividing, but still need to correct * bug fix for leap year chunk getting * bug fix for leap year chunk getting * clean up * remove redundant debug print * mark completed task in issue list * minor: plot legend location change * test modpath, update issue list * reduce debug print * update model list as available * Get modnames from myParam.py * test with multi runs * add numpy cumsum for cumulative pentad time series * clean up * check with r1i1p1 when testing * add JSON and fractional accumulation for metrics calculation * add metrics calc * minor grammer fix * add copyfile import * add json import * add description at top * advance json structure * disable try statement when debugging * minor fix for chunk average * test run * test run * plot option from myParam.py applied for plotting part * test with multiple regions * advance print statements * clean up * clean up * code clean up * add map to visualize geographical location of monsoon domains * show plot legend for only one panel * GoG domain monsoon decay at 60% * start pendtad ts from 7/1 for SH monsoon domains * shorten code * advance * add check time spend for each run * add check time spend for each run (typo fix) * advance code efficiency (load lf once per model, close xml files after used) * minor fix * bug fix for plotting * simplify plot and code for it * BNU-ESM returned axis no match error: make sure array to have consistent axes after get through the function * plot label fix * code clean up * put place holder for 72 to 73 interpolation for 360 day/year model (e.g., HadGEM2 family) * add 360 day calendar handling: 1d interpolation * minor bug fix for string joining * adjust 1d interp process * minor fix * minor fix 2 * update issue list * tweaks to cleanup PR before going to master * partial fixes to @lee1043 PR * example of string contructor template as argument * move domain check plotting files to doc directory * Delete monsoon_domain_map.png moved to doc * Delete plot_monsoon_domain.py moved to doc * remove test output files * few changes: add sperber_metrics for importing, replace StringConstructor to param.process_templated_argument * some clean up and add inline document * clean up and typo fix * Include OBS dataset for metric calculation * bug fix for when daily file saved as e.g., 1997-1-1 0:0:0.0 * bug fix for when daily file saved as e.g., 1997-1-1 0:0:0.0 (cont) * obs capability add bug fix * to work with obs * turn off debugging mode * enable option for run across cmip5 * add switch to decide include obs or not * clean up * add import sys for case being called * HadGEM2 model family 360 calendar handling case when bound not properly saved * clean up * define modpath_lf for parser * add one more try level for model, not only for realizations, because there was a case that failure of loading modpath_lf caused entire loop stop * typo fix * use relative path for default_regions.py when testing purpose * add import numpy as np * add debugging message * json structure revised * Improve start and end year getting part * minor: add inline description * improve inline description * minor: remove repeated blank line * remove importing divide_chunks which no more used * move f_lf close upward * simplify if statement for plot and nc_out * clean up inline description * jiwoo branch ready? * mac ffmpeg issue fix * travis mac ffmpeg fix * add debug print * fix little flake8 tweak * I had FFMPEG env defined at the wrong place for circleci and not used for travis... * magic conda pkg combination? * travis needs scipy * correct bash... --- .circleci/config.yml | 6 +- .travis.yml | 8 +- setup.py | 2 + share/default_regions.py | 20 +- share/test_data_files.txt | 4 +- src/python/monsoon_sperber/doc/myParam.py | 53 ++ .../doc/plot_monsoon_domain.py | 47 ++ src/python/monsoon_sperber/lib/__init__.py | 4 + .../monsoon_sperber/lib/argparse_functions.py | 71 +++ .../monsoon_sperber/lib/calc_metrics.py | 34 ++ .../monsoon_sperber/lib/divide_chunks.py | 88 +++ .../monsoon_sperber/lib/model_land_only.py | 76 +++ .../scripts/check_available_models.py | 24 + .../scripts/driver_monsoon_sperber.py | 559 ++++++++++++++++++ .../sperber_monsoon/test_monsoon_sperber.json | 74 +++ tests/test_pmp_monsoon_sperber.py | 86 +++ 16 files changed, 1148 insertions(+), 8 deletions(-) create mode 100644 src/python/monsoon_sperber/doc/myParam.py create mode 100644 src/python/monsoon_sperber/doc/plot_monsoon_domain.py create mode 100644 src/python/monsoon_sperber/lib/__init__.py create mode 100644 src/python/monsoon_sperber/lib/argparse_functions.py create mode 100644 src/python/monsoon_sperber/lib/calc_metrics.py create mode 100644 src/python/monsoon_sperber/lib/divide_chunks.py create mode 100644 src/python/monsoon_sperber/lib/model_land_only.py create mode 100644 src/python/monsoon_sperber/scripts/check_available_models.py create mode 100644 src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py create mode 100644 tests/sperber_monsoon/test_monsoon_sperber.json create mode 100644 tests/test_pmp_monsoon_sperber.py diff --git a/.circleci/config.yml b/.circleci/config.yml index 14a464ba1..8b5df5b79 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -22,8 +22,8 @@ aliases: conda config --set always_yes yes --set changeps1 no conda update -y -q conda conda config --set anaconda_upload no - conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib cia testsrunner "proj4<5" "python<3" - conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib cia testsrunner "proj4<5" "python>3" + conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib matplotlib scipy cia testsrunner "proj4<5" "python<3" $FFMPEG + conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib matplotlib scipy cia testsrunner "proj4<5" "python>3" $FFMPEG - &setup_pmp name: setup_pmp @@ -101,6 +101,7 @@ jobs: environment: WORKDIR: "workspace/test_macos_pmp" OS: "osx-64" + FFMPEG: "'ffmpeg>4' 'libpng>1.6.34'" steps: - checkout - run: *setup_miniconda @@ -120,6 +121,7 @@ jobs: environment: WORKDIR: "workspace/test_linux_pmp" OS: "linux-64" + FFMPEG: "ffmpeg" steps: - checkout - run: *setup_miniconda diff --git a/.travis.yml b/.travis.yml index 445479476..90e4d15dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,9 +16,11 @@ before_install: - conda update -y -q conda script: - - export UVCDAT_ANONYMOUS_LOG="False" - - conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" "python<3" - - conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" "python>3" + - export CDAT_ANONYMOUS_LOG="False" + - export FFMPEG="ffmpeg" + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export FFMPEG="'ffmpeg>4' 'libpng>1.6.34'"; fi + - conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" "python<3" scipy $FFMPEG + - conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" "python>3" scipy $FFMPEG # Useful for debugging any issues with conda - conda info -a - source activate py2 diff --git a/setup.py b/setup.py index c262fc24f..ae0260c1e 100755 --- a/setup.py +++ b/setup.py @@ -55,6 +55,7 @@ 'pcmdi_metrics.graphics': 'src/python/graphics', 'pcmdi_metrics.driver': 'src/python/pcmdi/scripts/driver', 'pcmdi_metrics.monsoon_wang': 'src/python/monsoon_wang/lib', + 'pcmdi_metrics.monsoon_sperber': 'src/python/monsoon_sperber/lib', } scripts = ['src/python/pcmdi/scripts/pcmdi_metrics_driver.py', 'src/python/pcmdi/scripts/pcmdi_metrics_driver_legacy.py', @@ -64,6 +65,7 @@ 'demo/pmp_demo_1.py', 'demo/pmp_demo.py', 'src/python/monsoon_wang/scripts/mpindex_compute.py', + 'src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py', ] scripts += glob.glob("src/python/diurnal/scripts/*.py") diff --git a/share/default_regions.py b/share/default_regions.py index f5477b97e..18112b9de 100755 --- a/share/default_regions.py +++ b/share/default_regions.py @@ -18,13 +18,15 @@ 'ocean_SHEX': {'value': 0, 'domain': cdutil.region.domain(latitude=(-90., -30))}, 'ocean_TROPICS': {'value': 0, 'domain': cdutil.region.domain(latitude=(30., 30))}, "ocean": {'value': 0, }, - # Below is for modes of variability + + # Modes of variability "NAM": {'domain': cdutil.region.domain(latitude=(20., 90), longitude=(-180, 180))}, "NAO": {'domain': cdutil.region.domain(latitude=(20., 80), longitude=(-90, 40))}, "SAM": {'domain': cdutil.region.domain(latitude=(-20., -90), longitude=(0, 360))}, "PNA": {'domain': cdutil.region.domain(latitude=(20., 85), longitude=(120, 240))}, "PDO": {'domain': cdutil.region.domain(latitude=(20., 70), longitude=(110, 260))}, - # Below is for monsoon domains + + # Monsoon domains for Wang metrics # All monsoon domains 'AllMW': {'domain': cdutil.region.domain(latitude=(-40., 45.), longitude=(0., 360.))}, 'AllM': {'domain': cdutil.region.domain(latitude=(-45., 45.), longitude=(0., 360.))}, @@ -40,6 +42,20 @@ 'ASM': {'domain': cdutil.region.domain(latitude=(0., 45.), longitude=(60., 180.))}, # Australian Monsoon 'AUSM': {'domain': cdutil.region.domain(latitude=(-45., 0.), longitude=(90., 160.))}, + + # Monsoon domains for Sperber metrics + # All India rainfall + 'AIR': {'domain': cdutil.region.domain(latitude=(7., 25.), longitude=(65., 85.))}, + # North Australian + 'AUS': {'domain': cdutil.region.domain(latitude=(-20., -10.), longitude=(120., 150.))}, + # Sahel + 'Sahel': {'domain': cdutil.region.domain(latitude=(13., 18.), longitude=(-10., 10.))}, + # Gulf of Guinea + 'GoG': {'domain': cdutil.region.domain(latitude=(0., 5.), longitude=(-10., 10.))}, + # North American monsoon + 'NAmo': {'domain': cdutil.region.domain(latitude=(20., 37.), longitude=(-112., -103.))}, + # South American monsoon + 'SAmo': {'domain': cdutil.region.domain(latitude=(-20., 2.5), longitude=(-65., -40.))}, } default_regions = ['global', 'NHEX', 'SHEX', 'TROPICS'] diff --git a/share/test_data_files.txt b/share/test_data_files.txt index 0d098a998..fafa8ddc1 100644 --- a/share/test_data_files.txt +++ b/share/test_data_files.txt @@ -1,2 +1,4 @@ https://cdat.llnl.gov/cdat/pmp -60582c6986451ffd4925a303c4f0040a sample_data_pr_CMCC.nc +60582c6986451ffd4925a303c4f0040a sample_data_pr_CMCC.nc +37acc58e3ba0acd6b35ad3439ee96453 test_monsoon_sperber_input.nc +3731b19e00226bb6a482c27e19bc1d91 test_monsoon_sperber_input_lf.nc \ No newline at end of file diff --git a/src/python/monsoon_sperber/doc/myParam.py b/src/python/monsoon_sperber/doc/myParam.py new file mode 100644 index 000000000..c846e915c --- /dev/null +++ b/src/python/monsoon_sperber/doc/myParam.py @@ -0,0 +1,53 @@ + +# ================================================= +# Background Information +# ------------------------------------------------- +mip = 'cmip5' +exp = 'historical' +frequency = 'da' +realm = 'atm' + +# ================================================= +# Observation +# ------------------------------------------------- +reference_data_name = 'GPCP' +reference_data_path = '/p/user_pub/pmp/pmp_results/tree_v0.3/pmp_v1.1.2/data/PMPObs/PMPObs_v1.3/atmos/day/pr/GPCP-1-3/gn/v20180816/pr_day_GPCP-1-3_BE_gn_19961002-20170101.nc' # noqa +reference_data_lf_path = '/work/lee1043/DATA/LandSeaMask_1x1_NCL/NCL_LandSeaMask_rewritten.nc' + +varOBS = 'pr' +ObsUnitsAdjust = (True, 'multiply', 86400.0) # kg m-2 s-1 to mm day-1 + +osyear = 1996 +oeyear = 2016 + +includeOBS = True + +# ================================================= +# Models +# ------------------------------------------------- +modpath = '/work/lee1043/ESGF/xmls/cmip5/historical/day/pr/cmip5.%(model).%(exp).%(realization).day.pr.xml' +modpath_lf = '/work/lee1043/ESGF/xmls/cmip5/fx/fx/sftlf/cmip5.%(model).fx.r0i0p0.fx.sftlf.xml' + +modnames = ['ACCESS1-0', 'ACCESS1-3', 'BCC-CSM1-1', 'BCC-CSM1-1-M', 'BNU-ESM', 'CanCM4', 'CanESM2', 'CCSM4', 'CESM1-BGC', 'CESM1-CAM5', 'CESM1-FASTCHEM', 'CMCC-CESM', 'CMCC-CM', 'CMCC-CMS', 'CNRM-CM5', 'CSIRO-Mk3-6-0', 'EC-EARTH', 'FGOALS-g2', 'GFDL-CM3', 'GFDL-ESM2G', 'GFDL-ESM2M', 'GISS-E2-H', 'GISS-E2-R', 'HadGEM2-AO', 'HadGEM2-CC', 'HadGEM2-ES', 'INMCM4', 'IPSL-CM5A-LR', 'IPSL-CM5A-MR', 'IPSL-CM5B-LR', 'MIROC-ESM', 'MIROC-ESM-CHEM', 'MIROC4h', 'MIROC5', 'MPI-ESM-MR', 'MPI-ESM-P', 'MRI-CGCM3', 'MRI-ESM1', 'NorESM1-M'] # noqa + +realization = 'r1i1p1' + +varModel = 'pr' +ModUnitsAdjust = (True, 'multiply', 86400.0) # kg m-2 s-1 to mm day-1 +units = 'mm/d' + +msyear = 1961 +meyear = 1999 + +# ================================================= +# Output +# ------------------------------------------------- +results_dir = '/work/lee1043/imsi/result_test/monsoon_sperber' +nc_out = True # Write output in NetCDF +plot = True # Create map graphics + +# ================================================= +# Miscellaneous +# ------------------------------------------------- +update_json = True +debug = False diff --git a/src/python/monsoon_sperber/doc/plot_monsoon_domain.py b/src/python/monsoon_sperber/doc/plot_monsoon_domain.py new file mode 100644 index 000000000..e96532fd7 --- /dev/null +++ b/src/python/monsoon_sperber/doc/plot_monsoon_domain.py @@ -0,0 +1,47 @@ +from mpl_toolkits.basemap import Basemap +import matplotlib.pyplot as plt +from matplotlib.patches import Polygon + + +def draw_screen_poly(lats, lons, m): + x, y = m(lons, lats) + xy = zip(x, y) + poly = Polygon(xy, facecolor='red', alpha=0.4, + edgecolor='red', linewidth=2) + plt.gca().add_patch(poly) + + +lats = {} +lons = {} + +lats['AIR'] = [7, 25, 25, 7] +lons['AIR'] = [65, 65, 85, 85] + +lats['AUS'] = [-20, -10, -10, -20] +lons['AUS'] = [120, 120, 150, 150] + +lats['Sahel'] = [13, 18, 18, 13] +lons['Sahel'] = [-10, -10, 10, 10] + +lats['GoG'] = [0, 5, 5, 0] +lons['GoG'] = [-10, -10, 10, 10] + +lats['NAM'] = [20, 37, 37, 20] +lons['NAM'] = [-112, -112, -103, -103] + +lats['SAM'] = [-20, -2.5, -2.5, -20] +lons['SAM'] = [-65, -65, -40, -40] + +regions = lats.keys() + +plt.figure(figsize=(12, 6)) + +m = Basemap(lon_0=0) +m.drawmapboundary(fill_color='aqua') +m.fillcontinents(color='grey', lake_color='aqua') +m.drawcoastlines() + +for region in regions: + draw_screen_poly(lats[region], lons[region], m) + +plt.savefig('monsoon_domain_map.png') diff --git a/src/python/monsoon_sperber/lib/__init__.py b/src/python/monsoon_sperber/lib/__init__.py new file mode 100644 index 000000000..d78ca5730 --- /dev/null +++ b/src/python/monsoon_sperber/lib/__init__.py @@ -0,0 +1,4 @@ +from .argparse_functions import AddParserArgument, YearCheck # noqa +from .calc_metrics import sperber_metrics # noqa +from .model_land_only import model_land_only # noqa +from .divide_chunks import divide_chunks, divide_chunks_advanced, interp1d # noqa \ No newline at end of file diff --git a/src/python/monsoon_sperber/lib/argparse_functions.py b/src/python/monsoon_sperber/lib/argparse_functions.py new file mode 100644 index 000000000..907476469 --- /dev/null +++ b/src/python/monsoon_sperber/lib/argparse_functions.py @@ -0,0 +1,71 @@ +def AddParserArgument(P): + # Load pre-defined parsers + P.use("--mip") + P.use("--exp") + P.use("--results_dir") + P.use("--reference_data_path") + P.use("--modpath") + # Add parsers for options + P.add_argument("--frequency", default="da") + P.add_argument("--realm", default="atm") + P.add_argument("--reference_data_name", + type=str, + help="Name of reference data set") + P.add_argument("--reference_data_lf_path", + type=str, + help="Path of landsea mask for reference data set") + P.add_argument("--modpath_lf", + type=str, + help="Path of landsea mask for model data set") + P.add_argument("--varobs", dest="varOBS", type=str, + help="Variable name in reference data set") + P.add_argument("--varmod", dest="varMOD", type=str, + help="Variable name in model data set") + P.add_argument("--obs_units_adjust", dest="ObsUnitsAdjust", type=tuple, + help="Unit conversion\n" + "- if needed: e.g., (True, 'multiply', 86400.),\n" + "- no needed: (False, 0, 0)") + P.add_argument("--mod_units_adjust", dest="ModUnitsAdjust", type=tuple, + help="Unit conversion\n" + "- if needed: e.g., (True, 'multiply', 86400.),\n" + "- no needed: (False, 0, 0)") + P.add_argument("--units", dest="units", type=str, + help="Final units for the variable") + P.add_argument("--osyear", dest="osyear", type=int, + help="Start year for reference data set") + P.add_argument("--msyear", dest="msyear", type=int, + help="Start year for model data set") + P.add_argument("--oeyear", dest="oeyear", type=int, + help="End year for reference data set") + P.add_argument("--meyear", dest="meyear", type=int, + help="End year for model data set") + P.add_argument("--modnames", + type=list, + default=None, + help="List of models") + P.add_argument("-r", "--realization", + type=str, + default="r1i1p1", + help="Consider all accessible realizations as idividual\n" + "- r1i1p1: default, consider only 'r1i1p1' member\n" + " Or, specify realization, e.g, r3i1p1'\n" + "- *: consider all available realizations") + # Add parsers as switches + P.add_argument("-d", "--debug", + type=bool, + default=False, + help="Option for debug: False (defualt) or True") + P.add_argument("--nc_out", dest="nc_out", + help="record netcdf output", action="store_true", default=False) + P.add_argument("--plot", dest="plot", help="produce plots", + action="store_true", default=False) + P.add_argument("--include_obs", dest="includeOBS", + help="include observation", action="store_true", default=False) + return P + + +def YearCheck(syear, eyear, P): + if syear >= eyear: + P.error('Given starting year {} is later than given ending year,\ {}'.format(syear, eyear)) + else: + pass diff --git a/src/python/monsoon_sperber/lib/calc_metrics.py b/src/python/monsoon_sperber/lib/calc_metrics.py new file mode 100644 index 000000000..366340779 --- /dev/null +++ b/src/python/monsoon_sperber/lib/calc_metrics.py @@ -0,0 +1,34 @@ +""" Calculate metrics based on Sperber and Annamalai 2014 Clim. Dyn., +which are: +- onset pentad index: when fractional accumulation hit 20% +- decay pentad index: when fractional accumulation hit 80% +- slope: slope between onset and decay pentad time step indices +calculated from cumulative pentad time series + +Jiwoo Lee, 2018-07 + +Note: Code for picking onset/decay index inspired by +https://stackoverflow.com/questions/2236906/first-python-list-index-greater-than-x +""" + +import MV2 + + +def sperber_metrics(d, region, debug=False): + """ d: input, 1d array of cumulative pentad time series """ + # Convert accumulation to fractional accumulation; normalize by sum + d_sum = d[-1] + frac_accum = MV2.divide(d, d_sum) + onset_index = next(i for i, v in enumerate(frac_accum) if v >= 0.2) + if region == 'GoG': + decay_threshold = 0.6 + else: + decay_threshold = 0.8 + decay_index = next(i for i, v in enumerate( + frac_accum) if v >= decay_threshold) + slope = (frac_accum[decay_index] - frac_accum[onset_index]) \ + / float(decay_index - onset_index) + return {'frac_accum': frac_accum, + 'onset_index': onset_index, + 'decay_index': decay_index, + 'slope': slope} diff --git a/src/python/monsoon_sperber/lib/divide_chunks.py b/src/python/monsoon_sperber/lib/divide_chunks.py new file mode 100644 index 000000000..7575895ab --- /dev/null +++ b/src/python/monsoon_sperber/lib/divide_chunks.py @@ -0,0 +1,88 @@ +from __future__ import print_function +import numpy as np +import scipy.interpolate as interp +import sys + +""" For pentad, +Code taken from https://www.geeksforgeeks.org/break-list-chunks-size-n-python/ +""" +# Yield successive n-sized +# chunks from data. + + +def divide_chunks(data, n): + # looping till length data + for i in range(0, len(data), n): + yield data[i:i+n] + + +""" Above code advanced considering leap year +""" + + +def divide_chunks_advanced(data, n, debug=False): + # Double check first date should be Jan 1 (except for SH monsoon) + tim = data.getTime() + calendar = tim.calendar + month = tim.asComponentTime()[0].month + day = tim.asComponentTime()[0].day + if debug: + print('debug: first day of year is '+str(month)+'/'+str(day)) + if month not in [1, 7] or day != 1: + sys.exit('error: first day of year time series is ' + + str(month)+'/'+str(day)) + + # Check number of days in given year + nday = len(data) + + if nday in [365, 360]: + # looping till length data + for i in range(0, nday, n): + yield data[i:i+n] + elif nday == 366: + # until leap year day detected + for i in range(0, nday, n): + # Check if leap year date included + leap_detect = False + for ii in range(i, i+n): + date = data.getTime().asComponentTime()[ii] + month = date.month + day = date.day + if month == 2 and day > 28: + if debug: + print('debug: leap year detected:', month, '/', day) + leap_detect = True + if leap_detect: + yield data[i:i+n+1] + tmp = i+n+1 + break + else: + yield data[i:i+n] + # after leap year day passed + if leap_detect: + for i in range(tmp, nday, n): + yield data[i:i+n] + elif nday == 361 and calendar == '360_day': + # Speacial case handling for HadGEM2 family where time bounds was not + # properly saved, so include next year's first day in time series + if debug: + print('debug: 361 to 360 revise: l.shape, before:', data.shape) + data = data[0:360] + if debug: + print('debug: 361 to 360 revise: l.shape, after:', data.shape) + # looping till length data + for i in range(0, nday, n): + yield data[i:i+n] + else: + sys.exit('error: number of days in year is '+str(nday)) + + +def interp1d(data, ref_length, debug=False): + data = np.array(data) + data_interp = interp.interp1d(np.arange(data.size), data) + data2 = data_interp(np.linspace(0, data.size-1, ref_length)) + if debug: + print('debug: 1d interpolation') + print('debug: length before interp: ', len(data)) + print('debug: length after interp: ', len(data2)) + return data2 diff --git a/src/python/monsoon_sperber/lib/model_land_only.py b/src/python/monsoon_sperber/lib/model_land_only.py new file mode 100644 index 000000000..0682cea20 --- /dev/null +++ b/src/python/monsoon_sperber/lib/model_land_only.py @@ -0,0 +1,76 @@ +from __future__ import print_function + +import genutil +import MV2 + + +def model_land_only(model, model_timeseries, lf, debug=False): + # ------------------------------------------------- + # Mask out over ocean grid + # - - - - - - - - - - - - - - - - - - - - - - - - - + if debug: + print('debug: plot for beforeMask start') + import vcs + x = vcs.init() + x.plot(model_timeseries) + x.png('_'.join(['test', model, 'beforeMask.png'])) + print('debug: plot for beforeMask done') + + # Check land fraction variable to see if it meet criteria + # (0 for ocean, 100 for land, no missing value) + lat_c = lf.getAxis(0) + lon_c = lf.getAxis(1) + lf_id = lf.id + + lf = MV2.array(lf.filled(0.)) + + lf.setAxis(0, lat_c) + lf.setAxis(1, lon_c) + lf.id = lf_id + + if float(MV2.max(lf)) == 1.: + lf = MV2.multiply(lf, 100.) + + # Matching dimension + if debug: + print('debug: match dimension in model_land_only') + model_timeseries, lf_timeConst = genutil.grower(model_timeseries, lf) + + # Conserve axes + time_c = model_timeseries.getAxis(0) + lat_c2 = model_timeseries.getAxis(1) + lon_c2 = model_timeseries.getAxis(2) + + opt1 = False + + if opt1: # Masking out partial ocean grids as well + # Mask out ocean even fractional (leave only pure ocean grid) + model_timeseries_masked = MV2.masked_where( + lf_timeConst < 100, model_timeseries) + else: # Mask out only full ocean grid & use weighting for partial ocean grid + model_timeseries_masked = MV2.masked_where( + lf_timeConst == 0, model_timeseries) # mask out pure ocean grids + if model == 'EC-EARTH': + # Mask out over 90% land grids for models those consider river as + # part of land-sea fraction. So far only 'EC-EARTH' does.. + model_timeseries_masked = MV2.masked_where( + lf_timeConst < 90, model_timeseries) + lf2 = MV2.divide(lf, 100.) + model_timeseries, lf2_timeConst = genutil.grower( + model_timeseries, lf2) # Matching dimension + model_timeseries_masked = MV2.multiply( + model_timeseries_masked, lf2_timeConst) # consider land fraction like as weighting + + # Make sure to have consistent axes + model_timeseries_masked.setAxis(0, time_c) + model_timeseries_masked.setAxis(1, lat_c2) + model_timeseries_masked.setAxis(2, lon_c2) + + if debug: + x.clear() + x.plot(model_timeseries_masked) + x.png('_'.join(['test', model, 'afterMask.png'])) + x.close() + print('debug: plot for afterMask done') + + return(model_timeseries_masked) diff --git a/src/python/monsoon_sperber/scripts/check_available_models.py b/src/python/monsoon_sperber/scripts/check_available_models.py new file mode 100644 index 000000000..5e48beb92 --- /dev/null +++ b/src/python/monsoon_sperber/scripts/check_available_models.py @@ -0,0 +1,24 @@ +from __future__ import print_function +import os +import glob + +pathin = '/work/lee1043/ESGF/xmls/cmip5/historical/day/pr' +lst = glob.glob(os.path.join(pathin, '*.xml')) +print(lst) + +models = set([]) +model_runs = set([]) + +for l in sorted(lst): + print(l) + mip = l.split('/')[-1].split('.')[0] + model = l.split('/')[-1].split('.')[1] + exp = l.split('/')[-1].split('.')[2] + run = l.split('/')[-1].split('.')[3] + models.add(model) + model_runs.add(model+'_'+run) + +print('num models: ', len(list(models))) +print('models: ', sorted(list(models), key=lambda s: s.lower())) +print('num model_runs: ', len(list(model_runs))) +print('model_runs: ', sorted(list(model_runs), key=lambda s: s.lower())) diff --git a/src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py b/src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py new file mode 100644 index 000000000..936065e30 --- /dev/null +++ b/src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py @@ -0,0 +1,559 @@ +#!/usr/bin/env python +""" Calculate monsoon metrics + +Jiwoo Lee (lee1043@llnl.gov) + +Reference: +Sperber, K. and H. Annamalai, 2014: +The use of fractional accumulated precipitation for the evaluation of the +annual cycle of monsoons. Climate Dynamics, 43:3219-3244, +doi: 10.1007/s00382-014-2099-3 + +Auspices: +This work was performed under the auspices of the U.S. Department of +Energy by Lawrence Livermore National Laboratory under Contract +DE-AC52-07NA27344. Lawrence Livermore National Laboratory is operated by +Lawrence Livermore National Security, LLC, for the U.S. Department of Energy, +National Nuclear Security Administration under Contract DE-AC52-07NA27344. + +Disclaimer: +This document was prepared as an account of work sponsored by an +agency of the United States government. Neither the United States government +nor Lawrence Livermore National Security, LLC, nor any of their employees +makes any warranty, expressed or implied, or assumes any legal liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents that its +use would not infringe privately owned rights. Reference herein to any specific +commercial product, process, or service by trade name, trademark, manufacturer, +or otherwise does not necessarily constitute or imply its endorsement, +recommendation, or favoring by the United States government or Lawrence +Livermore National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the United States +government or Lawrence Livermore National Security, LLC, and shall not be used +for advertising or product endorsement purposes. +""" + +from __future__ import print_function + +import cdms2 +import cdtime +import cdutil +import copy +import json +import math +import matplotlib.pyplot as plt +import MV2 +import numpy as np +import os +import pcmdi_metrics +import sys +import time + +from argparse import RawTextHelpFormatter +from collections import defaultdict +from shutil import copyfile +from pcmdi_metrics.monsoon_sperber import AddParserArgument, YearCheck +from pcmdi_metrics.monsoon_sperber import model_land_only +from pcmdi_metrics.monsoon_sperber import divide_chunks_advanced, interp1d +from pcmdi_metrics.monsoon_sperber import sperber_metrics + +# ================================================= +# Hard coded options... will be moved out later +# ------------------------------------------------- +list_monsoon_regions = ['AIR', 'AUS', 'Sahel', 'GoG', 'NAmo', 'SAmo'] + +# How many elements each +# list should have +n = 5 # pentad + +# ================================================= +# Collect user defined options +# ------------------------------------------------- +P = pcmdi_metrics.driver.pmp_parser.PMPParser( + description='Runs PCMDI Monsoon Sperber Computations', + formatter_class=RawTextHelpFormatter) +P = AddParserArgument(P) +param = P.get_parameter() + +# Pre-defined options +mip = param.mip +exp = param.exp +fq = param.frequency +realm = param.realm + +# On/off switches +nc_out = param.nc_out # Record NetCDF output +plot = param.plot # Generate plots +includeOBS = param.includeOBS # Loop run for OBS or not + +# Path to reference data +reference_data_name = param.reference_data_name +reference_data_path = param.reference_data_path +reference_data_lf_path = param.reference_data_lf_path + +# Path to model data as string template +modpath = param.process_templated_argument("modpath") +modpath_lf = param.process_templated_argument("modpath_lf") + +# Check given model option +models = param.modnames +print('models:', models) + +# Realizations +realization = param.realization +print('realization: ', realization) + +# Output +outdir = param.results_dir +print('outdir: ', outdir) + +# Create output directory +if not os.path.exists(outdir): + os.makedirs(outdir) + +# Debug +debug = param.debug +print('debug: ', debug) + +# Variables +varModel = param.varModel +varOBS = param.varOBS + +# Year +# model +msyear = param.msyear +meyear = param.meyear +YearCheck(msyear, meyear, P) +# obs +osyear = param.osyear +oeyear = param.oeyear +YearCheck(osyear, oeyear, P) + +# Units +units = param.units +# model +ModUnitsAdjust = param.ModUnitsAdjust +# obs +ObsUnitsAdjust = param.ObsUnitsAdjust + +# JSON update +update_json = param.update_json + +# ================================================= +# Declare dictionary for .json record +# ------------------------------------------------- + + +def tree(): + return defaultdict(tree) + + +monsoon_stat_dic = tree() + +# Define output json file +json_filename = '_'.join(['monsoon_sperber_stat', + mip, exp, fq, realm, str(msyear)+'-'+str(meyear)]) +json_file = os.path.join(outdir, json_filename + '.json') +json_file_org = os.path.join( + outdir, '_'.join([json_filename, 'org', str(os.getpid())])+'.json') + +# Save pre-existing json file against overwriting +if os.path.isfile(json_file) and os.stat(json_file).st_size > 0: + copyfile(json_file, json_file_org) + if update_json: + fj = open(json_file) + monsoon_stat_dic = json.loads(fj.read()) + fj.close() + +if 'REF' not in list(monsoon_stat_dic.keys()): + monsoon_stat_dic['REF'] = {} +if 'RESULTS' not in list(monsoon_stat_dic.keys()): + monsoon_stat_dic['RESULTS'] = {} + +# ================================================= +# Loop start for given models +# ------------------------------------------------- +regions_specs = {} +exec(compile(open(os.path.join(sys.prefix, "share", + "pmp", "default_regions.py")).read(), + os.path.join(sys.prefix, "share", "pmp", + "default_regions.py"), 'exec')) + +if includeOBS: + models.insert(0, 'obs') + +for model in models: + print(' ----- ', model, ' ---------------------') + + try: + + if model == 'obs': + var = varOBS + UnitsAdjust = ObsUnitsAdjust + syear = osyear + eyear = oeyear + + model_path_list = [reference_data_path] + model_lf_path = reference_data_lf_path + + if reference_data_name not in list(monsoon_stat_dic['REF'].keys()): + monsoon_stat_dic['REF'][reference_data_name] = {} + + else: # for rest of models + var = varModel + UnitsAdjust = ModUnitsAdjust + syear = msyear + eyear = meyear + + if model not in list(monsoon_stat_dic['RESULTS'].keys()): + monsoon_stat_dic['RESULTS'][model] = {} + + model_path_list = os.popen( + 'ls '+modpath(model=model, exp=exp, realization=realization, + variable=var)).readlines() + + if debug: + print('debug: model_path_list: ', model_path_list) + + model_lf_path = modpath_lf(model=model) + if os.path.isfile(model_lf_path): + pass + else: + model_lf_path = modpath_lf(model=model.upper()) + + print(model_lf_path) + + # Read model's land fraction + f_lf = cdms2.open(model_lf_path) + lf = f_lf('sftlf', latitude=(-90, 90)) + f_lf.close() + + # ------------------------------------------------- + # Loop start - Realization + # ------------------------------------------------- + for model_path in model_path_list: + + timechk1 = time.time() + try: + if model == 'obs': + run = 'obs' + else: + run = model_path.split('/')[-1].split('.')[3] + + if run not in monsoon_stat_dic['RESULTS'][model]: + monsoon_stat_dic['RESULTS'][model][run] = {} + + print(' --- ', run, ' ---') + print(model_path) + + # Get time coordinate information + fc = cdms2.open(model_path) + # NOTE: square brackets does not bring data into memory + # only coordinates! + d = fc[var] + t = d.getTime() + c = t.asComponentTime() + + # Get starting and ending year and month + startYear = c[0].year + startMonth = c[0].month + endYear = c[-1].year + endMonth = c[-1].month + + # Adjust years to consider only when they + # have entire calendar months + if startMonth > 1: + startYear += 1 + if endMonth < 12: + endYear -= 1 + + # Final selection of starting and ending years + startYear = max(syear, startYear) + endYear = min(eyear, endYear) + + # Check calendar (just checking..) + calendar = t.calendar + print('check: calendar: ', calendar) + + if debug: + print('debug: startYear: ', type(startYear), startYear) + print('debug: startMonth: ', type(startMonth), startMonth) + print('debug: endYear: ', type(endYear), endYear) + print('debug: endMonth: ', type(endMonth), endMonth) + endYear = startYear + 1 + + # Archive individual year pentad time series for composite + list_pentad_time_series = {} + list_pentad_time_series_cumsum = {} # Cumulative time series + for region in list_monsoon_regions: + list_pentad_time_series[region] = [] + list_pentad_time_series_cumsum[region] = [] + + # Write individual year time series for each monsoon domain + # in a netCDF file + if nc_out: + output_filename = "{}_{}_{}_{}_{}_{}_{}".format( + mip, model, exp, + run, 'monsoon_sperber', startYear, endYear) + fout = cdms2.open(os.path.join( + outdir, output_filename+'.nc'), 'w') + + # Plotting setup + if plot: + ax = {} + if len(list_monsoon_regions) > 1: + nrows = math.ceil(len(list_monsoon_regions)/2.) + ncols = 2 + else: + nrows = 1 + ncols = 1 + + fig = plt.figure() + plt.subplots_adjust(hspace=0.25) + + for i, region in enumerate(list_monsoon_regions): + ax[region] = plt.subplot(nrows, ncols, i+1) + print('plot: region', region, 'nrows', + nrows, 'ncols', ncols, 'index', i+1) + if nrows > 1 and math.ceil((i+1)/float(ncols)) < nrows: + ax[region].set_xticks([]) + + fig.text(0.5, 0.04, 'pentad count', ha='center') + fig.text(0.03, 0.5, 'pentad precip mm/d', + va='center', rotation='vertical') + + # ------------------------------------------------- + # Loop start - Year + # ------------------------------------------------- + temporary = {} + + # year loop, endYear+1 to include last year + for year in range(startYear, endYear+1): + d = fc(var, + time=(cdtime.comptime(year, 1, 1, 0, 0, 0), + cdtime.comptime(year, 12, 31, 23, 59, 59)), + latitude=(-90, 90)) + + # unit change + if UnitsAdjust[0]: + """ Below two lines are identical to following: + # d = MV2.multiply(d, 86400.) + # d.units = 'mm/d' + """ + d = getattr(MV2, UnitsAdjust[1])(d, UnitsAdjust[2]) + d.units = units + + # land only + d_land = model_land_only(model, d, lf, debug=debug) + + print('check: year, d.shape: ', year, d.shape) + + # - - - - - - - - - - - - - - - - - - - - - - - - - + # Loop start - Monsoon region + # - - - - - - - - - - - - - - - - - - - - - - - - - + for region in list_monsoon_regions: + # extract for monsoon region + if region in ['GoG', 'NAmo']: + # all grid point rainfall + d_sub = d(regions_specs[region]['domain']) + else: # land-only rainfall + d_sub = d_land(regions_specs[region]['domain']) + # area average + d_sub_aave = cdutil.averager( + d_sub, axis='xy', weights='weighted') + + if debug: + print('debug: region:', region) + print('debug: d_sub.shape:', d_sub.shape) + print('debug: d_sub_aave.shape:', d_sub_aave.shape) + + # Southern Hemisphere monsoon domain + # set time series as 7/1~6/30 + if region in ['AUS', 'SAmo']: + if year == startYear: + start_t = cdtime.comptime(year, 7, 1) + end_t = cdtime.comptime( + year, 12, 31, 23, 59, 59) + temporary[region] = d_sub_aave( + time=(start_t, end_t)) + continue + else: + # n-1 year 7/1~12/31 + part1 = copy.copy(temporary[region]) + # n year 1/1~6/30 + part2 = d_sub_aave(time=(cdtime.comptime( + year), cdtime.comptime(year, 6, 30, 23, + 59, 59))) + start_t = cdtime.comptime(year, 7, 1) + end_t = cdtime.comptime( + year, 12, 31, 23, 59, 59) + temporary[region] = d_sub_aave( + time=(start_t, end_t)) + d_sub_aave = MV2.concatenate( + [part1, part2], axis=0) + if debug: + print('debug: ', region, year, + d_sub_aave.getTime().asComponentTime()) + + # get pentad time series + list_d_sub_aave_chunks = list( + divide_chunks_advanced(d_sub_aave, n, debug=debug)) + pentad_time_series = [] + for d_sub_aave_chunk in list_d_sub_aave_chunks: + # ignore when chunk length is shorter than defined + if d_sub_aave_chunk.shape[0] >= n: + ave_chunk = MV2.average( + d_sub_aave_chunk, axis=0) + pentad_time_series.append(float(ave_chunk)) + if debug: + print('debug: pentad_time_series length: ', + len(pentad_time_series)) + + # Keep pentad time series length in consistent + ref_length = int(365/n) + if len(pentad_time_series) < ref_length: + pentad_time_series = interp1d( + pentad_time_series, ref_length, debug=debug) + + pentad_time_series = MV2.array(pentad_time_series) + pentad_time_series.units = d.units + pentad_time_series_cumsum = np.cumsum( + pentad_time_series) + + if nc_out: + # Archive individual year time series in netCDF file + fout.write(pentad_time_series, + id=region+'_'+str(year)) + fout.write(pentad_time_series_cumsum, + id=region+'_'+str(year)+'_cumsum') + + if plot: + # Add grey line for individual year in plot + if year == startYear: + label = 'Individual yr' + else: + label = '' + ax[region].plot( + np.array(pentad_time_series_cumsum), c='grey', label=label) + + # Save for following composite + list_pentad_time_series[region].append( + pentad_time_series) + list_pentad_time_series_cumsum[region].append( + pentad_time_series_cumsum) + + # --- Monsoon region loop end + # --- Year loop end + fc.close() + + # --- Monsoon region loop start without year loop + if debug: + print('debug: composite start') + + for region in list_monsoon_regions: + # Get composite for each region + composite_pentad_time_series = cdutil.averager( + MV2.array(list_pentad_time_series[region]), + axis=0, + weights='unweighted') + + # Get accumulation ts from the composite + composite_pentad_time_series_cumsum = np.cumsum( + composite_pentad_time_series) + + # Maintain axis information + axis0 = pentad_time_series.getAxis(0) + composite_pentad_time_series.setAxis(0, axis0) + composite_pentad_time_series_cumsum.setAxis(0, axis0) + + # Metrics for composite + metrics_result = sperber_metrics( + composite_pentad_time_series_cumsum, region, debug=debug) + + # Archive as dict for JSON + if model == 'obs': + if region not in list(monsoon_stat_dic['REF'][reference_data_name].keys()): + monsoon_stat_dic['REF'][reference_data_name][region] = {} + monsoon_stat_dic['REF'][reference_data_name][region]['onset_index'] = \ + metrics_result['onset_index'] + monsoon_stat_dic['REF'][reference_data_name][region]['decay_index'] = \ + metrics_result['decay_index'] + monsoon_stat_dic['REF'][reference_data_name][region]['slope'] = \ + metrics_result['slope'] + else: + if region not in list(monsoon_stat_dic['RESULTS'][model][run].keys()): + monsoon_stat_dic['RESULTS'][model][run][region] = { + } + monsoon_stat_dic['RESULTS'][model][run][region]['onset_index'] = \ + metrics_result['onset_index'] + monsoon_stat_dic['RESULTS'][model][run][region]['decay_index'] = \ + metrics_result['decay_index'] + monsoon_stat_dic['RESULTS'][model][run][region]['slope'] = \ + metrics_result['slope'] + + # Archice in netCDF file + if nc_out: + fout.write(composite_pentad_time_series, + id=region+'_comp') + fout.write(composite_pentad_time_series_cumsum, + id=region+'_comp_cumsum') + fout.write( + metrics_result['frac_accum'], id=region+'_comp_cumsum_frac') + if region == list_monsoon_regions[-1]: + fout.close() + + # Add line in plot + if plot: + ax[region].plot( + # np.array(composite_pentad_time_series), + np.array(composite_pentad_time_series_cumsum), + c='red', + label='Composite') + ax[region].set_title(region) + if region == list_monsoon_regions[0]: + ax[region].legend(loc=2) + if region == list_monsoon_regions[-1]: + fig.suptitle( + 'Precipitation pentad time series\n' + + ', '.join([mip, model, exp, run, str(startYear)+'-'+str(endYear)])) + plt.subplots_adjust(top=0.85) + plt.savefig(os.path.join( + outdir, output_filename+'.png')) + plt.close() + + # ================================================= + # Write dictionary to json file + # (let the json keep overwritten in model loop) + # ------------------------------------------------- + JSON = pcmdi_metrics.io.base.Base(outdir, json_filename) + JSON.write(monsoon_stat_dic, + json_structure=["model", + "realization", + "monsoon_region", + "metric"], + sort_keys=True, + indent=4, + separators=(',', ': ')) + + except Exception as err: + if debug: + raise + else: + print('warning: faild for ', model, run, err) + pass + + timechk2 = time.time() + timechk = timechk2 - timechk1 + print('timechk: ', model, run, timechk) + # --- Realization loop end + + except Exception as err: + if debug: + raise + else: + print('warning: faild for ', model, err) + pass +# --- Model loop end + +if not debug: + sys.exit('done') diff --git a/tests/sperber_monsoon/test_monsoon_sperber.json b/tests/sperber_monsoon/test_monsoon_sperber.json new file mode 100644 index 000000000..71a58b2ad --- /dev/null +++ b/tests/sperber_monsoon/test_monsoon_sperber.json @@ -0,0 +1,74 @@ +{ + "RESULTS": { + "REF": { + "GPCP": { + "AIR": { + "decay_index": 57, + "onset_index": 36, + "slope": 0.027147479285038894 + } + } + } + }, + "json_structure": [ + "model", + "realization", + "monsoon_region", + "metric" + ], + "json_version": 3.0, + "provenance": { + "commandLine": "/home/doutriaux1/anaconda2/envs/nightly_py2_cdat_openblas/bin/nosetests -s tests/test_pmp_monsoon_sperber.py", + "conda": { + "Platform": "linux-64", + "PythonVersion": "2.7.15.final.0", + "Version": "4.5.11", + "buildVersion": "3.14.0" + }, + "date": "2018-09-06 15:53:25", + "openGL": { + "GLX": { + "client": { + "vendor": "Mesa Project and SGI", + "version": "1.4" + }, + "server": { + "vendor": "SGI", + "version": "1.4" + }, + "version": "1.4" + }, + "renderer": "AMD TURKS (DRM 2.50.0 / 4.15.0-32-generic, LLVM 6.0.0)", + "shading language version": "1.30", + "vendor": "X.Org", + "version": "3.0 Mesa 18.0.5" + }, + "osAccess": false, + "packages": { + "CDP": "1.3.3.2018.08.30.21.17", + "PMP": "g2071a81", + "PMPObs": null, + "blas": "0.2.20", + "cdms": "3.0.2018.06.13.00.45.gf6c041d", + "cdtime": "3.0.2018.06.13.01.07.g0ec5ac8.np1.11", + "cdutil": "8.0.2018.07.17.18.48.gb8e38d6", + "clapack": "3.2.1", + "esmf": "7.1.0r", + "esmpy": "7.1.0r", + "genutil": "8.1.2018.07.24.00.41.gc18c308.npy1.14", + "lapack": "3.6.1", + "matplotlib": "2.2.3", + "mesalib": "17.3.9", + "numpy": "1.15.0", + "python": "2.7.15", + "vcs": "8.0.2018.07.03.06.36.g5bc0c4f8", + "vtk": "8.0.1.8.0" + }, + "platform": { + "Name": "drdoom", + "OS": "Linux", + "Version": "4.15.0-32-generic" + }, + "userId": "doutriaux1" + } +} \ No newline at end of file diff --git a/tests/test_pmp_monsoon_sperber.py b/tests/test_pmp_monsoon_sperber.py new file mode 100644 index 000000000..9060dd7ae --- /dev/null +++ b/tests/test_pmp_monsoon_sperber.py @@ -0,0 +1,86 @@ +from __future__ import print_function + +import cdms2 +import cdutil +import json +import MV2 +import numpy as np +import os +import pcmdi_metrics +import basepmp +from collections import defaultdict +from pcmdi_metrics.monsoon_sperber import model_land_only, divide_chunks_advanced, sperber_metrics +import cdat_info + + +class PMPMonsoonSperberTest(basepmp.PMPTest): + def testSperber(self): + # GPCP 1 year + inputfile = os.path.join(cdat_info.get_sampledata_path(), + 'test_monsoon_sperber_input.nc') + model = 'obs' + reference_data_name = 'GPCP' + var = 'pr' + # Landsea mask rewitten from NCL's 1x1 + inputfile_lf = os.path.join(cdat_info.get_sampledata_path(), + 'test_monsoon_sperber_input_lf.nc') + region = 'AIR' + n = 5 + debug = False + + # Read daily data + f = cdms2.open(inputfile) + d = f(var) + + # Read land fraction + f_lf = cdms2.open(inputfile_lf) + lf = f_lf('sftlf') + + # unit change + d = MV2.multiply(d, 86400.) + d.units = 'mm/d' + + # land only + d_land = model_land_only(model, d, lf, debug=debug) + + # extract for monsoon region + d_sub = d_land + + # area average + d_sub_aave = cdutil.averager(d_sub, axis='xy', weights='weighted') + + # get pentad time series + list_d_sub_aave_chunks = list(divide_chunks_advanced(d_sub_aave, n, debug=debug)) + pentad_time_series = [] + for d_sub_aave_chunk in list_d_sub_aave_chunks: + if d_sub_aave_chunk.shape[0] >= n: # ignore when chunk length is shorter than defined + ave_chunk = MV2.average(d_sub_aave_chunk, axis=0) + pentad_time_series.append(float(ave_chunk)) + + pentad_time_series = MV2.array(pentad_time_series) + pentad_time_series.units = d.units + pentad_time_series_cumsum = np.cumsum(pentad_time_series) + + # Metrics + metrics_result = sperber_metrics(pentad_time_series_cumsum, region, debug=debug) + + # Dict + def tree(): + return defaultdict(tree) + + monsoon_stat_dic = tree() + monsoon_stat_dic["RESULTS"]['REF'][reference_data_name][region]['onset_index'] = metrics_result['onset_index'] + monsoon_stat_dic["RESULTS"]['REF'][reference_data_name][region]['decay_index'] = metrics_result['decay_index'] + monsoon_stat_dic["RESULTS"]['REF'][reference_data_name][region]['slope'] = metrics_result['slope'] + + # Archive in JSOS + JSON = pcmdi_metrics.io.base.Base('.', 'test_monsoon_sperber.json') + JSON.write(monsoon_stat_dic, + json_structure=["model", + "realization", + "monsoon_region", + "metric"], + sort_keys=True, + indent=4, + separators=(',', ': ')) + self.assertSimilarJsons('test_monsoon_sperber.json', 'tests/sperber_monsoon/test_monsoon_sperber.json') From 898e089b85ec9ddaf27e3540f1d603fda9a5acb4 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 12 Sep 2018 12:20:29 -0700 Subject: [PATCH 29/84] Adding official pmp meta.yaml file --- recipes/pcmdi_metrics/meta.1.2.yaml | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 recipes/pcmdi_metrics/meta.1.2.yaml diff --git a/recipes/pcmdi_metrics/meta.1.2.yaml b/recipes/pcmdi_metrics/meta.1.2.yaml new file mode 100644 index 000000000..f2061c293 --- /dev/null +++ b/recipes/pcmdi_metrics/meta.1.2.yaml @@ -0,0 +1,34 @@ +package: + name: pcmdi_metrics + version: 1.2 + +source: + git_url: git://github.com/PCMDI/pcmdi_metrics + git_rev: v1.2 + +build: + script: python setup.py install + number: 0 + +requirements: + build: + - python {{ python}} + - setuptools + - numpy + run: + - python {{ python }} + - vcs ==8.0 + - vcsaddons ==8.0 + - cdms2 ==3.0.1 + - genutil ==8.1 + - cdutil ==8.0 + - cdp >=1.4.0 + - numpy + - cia ==0.0.6 + - proj4 <5 + + +about: + home: http://gitub.com/PCMDI/pcmdi_metrics + summary: The PCMDI metrics package is used to objectively compare results from climate models with observations using well-established statistical tests. Results are produced in the context of all model simulations contributed to CMIP5 and earlier CMIP phases. Among other purposes, this enables modeling groups to evaluate changes during the development cycle in the context of the structural error distribution of the multi-model ensemble. Currently, the comparisons are focused on large- to global-scale annual cycle performance metrics. + From fcf0d0d674a720f818063b2d591a62107bf96e8c Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 12 Sep 2018 12:35:54 -0700 Subject: [PATCH 30/84] correct version requirements --- recipes/pcmdi_metrics/meta.1.2.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/pcmdi_metrics/meta.1.2.yaml b/recipes/pcmdi_metrics/meta.1.2.yaml index f2061c293..6d3bde534 100644 --- a/recipes/pcmdi_metrics/meta.1.2.yaml +++ b/recipes/pcmdi_metrics/meta.1.2.yaml @@ -20,7 +20,7 @@ requirements: - vcs ==8.0 - vcsaddons ==8.0 - cdms2 ==3.0.1 - - genutil ==8.1 + - genutil - cdutil ==8.0 - cdp >=1.4.0 - numpy From 556132fa10edbaea6fb55275117e991979ae676a Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 12 Sep 2018 12:36:53 -0700 Subject: [PATCH 31/84] correct default version --- setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.py b/setup.py index ae0260c1e..1d14b30bc 100755 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ else: install_dev = False -Version = "0.6.0" +Version = "1.2" p = subprocess.Popen( ("git", "describe", @@ -25,7 +25,6 @@ if Version == "": Version = descr except: - Version = "0.9.pre-release" descr = Version p = subprocess.Popen( From 65cd0751c2dacd74ec8c296e5c62bbce642dd97c Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 12 Sep 2018 12:57:10 -0700 Subject: [PATCH 32/84] Updated DOI in README, updated label for nightly uploads --- .circleci/config.yml | 2 +- recipes/pcmdi_metrics/meta.yaml | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8b5df5b79..6ba2e3990 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -64,7 +64,7 @@ aliases: cd conda-recipes rm -rf cdp cp -r ../../recipes/pcmdi_metrics . - python ./prep_for_build.py -l 1.1.2 + python ./prep_for_build.py -l 1.2 conda build pcmdi_metrics -c conda-forge -c cdat -c pcmdi --python=27 conda build pcmdi_metrics -c conda-forge -c cdat -c pcmdi --python=36 anaconda -t $CONDA_UPLOAD_TOKEN upload -u pcmdi -l nightly $CONDA_BLD_PATH/$OS/$PKG_NAME-*tar.bz2 --force diff --git a/recipes/pcmdi_metrics/meta.yaml b/recipes/pcmdi_metrics/meta.yaml index 5b8df6582..6d3bde534 100644 --- a/recipes/pcmdi_metrics/meta.yaml +++ b/recipes/pcmdi_metrics/meta.yaml @@ -1,10 +1,10 @@ package: name: pcmdi_metrics - version: 1.1.2.2018.03.29.13.52.{{ GIT_DESCRIBE_HASH }} + version: 1.2 source: git_url: git://github.com/PCMDI/pcmdi_metrics - git_rev: master + git_rev: v1.2 build: script: python setup.py install @@ -17,15 +17,14 @@ requirements: - numpy run: - python {{ python }} - - vcs >=2.10 - - vcsaddons >=2.10 - - cdms2 >=2.10 - - genutil >=2.10 - - cdutil >=2.10 - - cdp >=1.3.2 - - matplotlib + - vcs ==8.0 + - vcsaddons ==8.0 + - cdms2 ==3.0.1 + - genutil + - cdutil ==8.0 + - cdp >=1.4.0 - numpy - - cia + - cia ==0.0.6 - proj4 <5 From ee63bd9c1b88ec76b39d2fa23283b52518773d61 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 12 Sep 2018 13:51:23 -0700 Subject: [PATCH 33/84] updated README and osx env yaml files --- README.md | 6 +- recipes/conda-envs/pmp-1.2_osx_py2.yaml | 125 ++++++++++++++++++++++++ recipes/conda-envs/pmp-1.2_osx_py3 | 0 recipes/conda-envs/pmp-1.2_osx_py3.yaml | 120 +++++++++++++++++++++++ 4 files changed, 249 insertions(+), 2 deletions(-) create mode 100644 recipes/conda-envs/pmp-1.2_osx_py2.yaml create mode 100644 recipes/conda-envs/pmp-1.2_osx_py3 create mode 100644 recipes/conda-envs/pmp-1.2_osx_py3.yaml diff --git a/README.md b/README.md index 1398fb0d3..d648be736 100755 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ PCMDI metrics package (PMP) ====== -[![stable version](https://img.shields.io/badge/stable%20version-1.1.2-brightgreen.svg)](https://github.com/PCMDI/pcmdi_metrics/releases/tag/1.1.2) +[![stable version](https://img.shields.io/badge/stable%20version-1.2-brightgreen.svg)](https://github.com/PCMDI/pcmdi_metrics/releases/tag/1.2) ![repo size](https://reposs.herokuapp.com/?path=PCMDI/pcmdi_metrics) ![platforms](https://img.shields.io/badge/platforms-linux%20|%20osx-lightgrey.svg) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.809463.svg)](https://doi.org/10.5281/zenodo.809463) @@ -16,7 +16,7 @@ The PCMDI metrics package is used to objectively compare results from climate mo The metrics package consists of four parts: 1) Analysis software, 2) an observationally-based database of global (or near global, land or ocean) annual cycle climatologies, 3) a database of performance metrics computed for CMIP models and 4) package documentation. The package expects model data to be [CF-compliant](http://cfconventions.org/). To successfully use the package some input data "conditioning" may be required. We provide several demo scripts within the package to facilitate new users. -**Users of the current release (v1.1.2) will need to contact the PMP developers (pcmdi-metrics@llnl.gov) to obtain supporting datasets and get started using the package.** +**Users of the current release (v1.2) will need to contact the PMP developers (pcmdi-metrics@llnl.gov) to obtain supporting datasets and get started using the package.** GETTING STARTED @@ -37,3 +37,5 @@ v1.0 - Prototype version of the PMP v1.1 - First public release, emphasizing climatological statistics, with development branches for ENSO and regional monsoon precipitation indices v1.1.2 - Now managed through Anaconda, and tied to UV-CDAT 2.10. Weights on bias statistic added. Extensive provenance information incorporated into json files. + +v1.2 - Tied to CDAT 8.0. Diurnal Cycle metrics, Sperber/Lee Monsoon statistics, Monsoon Wang metrics \ No newline at end of file diff --git a/recipes/conda-envs/pmp-1.2_osx_py2.yaml b/recipes/conda-envs/pmp-1.2_osx_py2.yaml new file mode 100644 index 000000000..41706f6ed --- /dev/null +++ b/recipes/conda-envs/pmp-1.2_osx_py2.yaml @@ -0,0 +1,125 @@ +name: pmp_1.2_osx_py2 +channels: + - pcmdi + - cdat + - conda-forge + - defaults +dependencies: + - cdp=1.4.0=py27_0 + - dv3d=8.0=py27_0 + - output_viewer=1.2.5=py27_0 + - vcs=8.0=py27_0 + - vcsaddons=8.0=py27_0 + - vtk-cdat=8.0.1.8.0=py27_3 + - asn1crypto=0.24.0=py27_3 + - backports_abc=0.5=py_1 + - bokeh=0.13.0=py27_0 + - bzip2=1.0.6=1 + - ca-certificates=2018.8.24=ha4d7672_0 + - cdat_info=8.0=py27_0 + - cdms2=3.0.1=py27hfa2f21f_1 + - cdtime=3.0=py27hfa2f21f_1 + - cdutil=8.0=py27_1 + - certifi=2018.8.24=py27_1 + - cffi=1.11.5=py27h5e8e0c9_1 + - chardet=3.0.4=py27_3 + - clapack=3.2.1=h470a237_1 + - click=6.7=py_1 + - cloudpickle=0.5.5=py_0 + - cryptography=2.3.1=py27hdffb7b8_0 + - cryptography-vectors=2.3.1=py27_0 + - curl=7.61.0=h93b3f91_2 + - cytoolz=0.9.0.1=py27h470a237_0 + - dask=0.19.1=py_0 + - dask-core=0.19.1=py_0 + - distarray=2.12.2=py27_0 + - distributed=1.23.1=py27_0 + - enum34=1.1.6=py27_1 + - esmf=7.1.0r=1 + - esmpy=7.1.0r=py27_1 + - expat=2.2.5=hfc679d8_2 + - ffmpeg=4.0.2=ha6a6e2b_0 + - freetype=2.8.1=hfa320df_1 + - future=0.16.0=py27_2 + - futures=3.2.0=py27_0 + - g2clib=1.6.0=3 + - genutil=8.1.np1.14=py27he59b558_0 + - gettext=0.19.8.1=h1f1d5ed_1 + - gmp=6.1.2=hfc679d8_0 + - gnutls=3.5.19=h2a4e5f8_1 + - hdf4=4.2.13=h951d187_2 + - hdf5=1.10.1=2 + - heapdict=1.0.0=py27_0 + - idna=2.7=py27_2 + - ipaddress=1.0.22=py_1 + - jasper=1.900.1=hff1ad4c_5 + - jinja2=2.10=py_1 + - jpeg=9c=h470a237_1 + - krb5=1.14.6=0 + - lapack=3.6.1=1 + - libcdms=3.0.1=hdc02c5d_2 + - libcf=1.0.1=py27_5 + - libdrs=3.0.1=hc35d564_3 + - libdrs_f=3.0.1=h9aa2bbb_2 + - libffi=3.2.1=hfc679d8_5 + - libgcc=4.8.5=hdbeacc1_10 + - libiconv=1.15=h470a237_3 + - libnetcdf=4.6.1=2 + - libpng=1.6.35=ha92aebf_2 + - libssh2=1.8.0=h5b517e9_2 + - libtiff=4.0.9=he6b73bb_2 + - locket=0.2.0=py_2 + - markupsafe=1.0=py27h470a237_1 + - mkl_fft=1.0.6=py27_0 + - mkl_random=1.0.1=py27_0 + - mpi=1.0=mpich + - mpich=3.2.1=h26a2512_4 + - msgpack-python=0.5.6=py27h2d50403_2 + - ncurses=6.1=hfc679d8_1 + - netcdf-fortran=4.4.4=7 + - nettle=3.3=0 + - openh264=1.7.0=0 + - openssl=1.0.2p=h470a237_0 + - ossuuid=1.6.2=hfc679d8_0 + - packaging=17.1=py_0 + - pandas=0.23.4=py27hf8a1672_0 + - partd=0.3.8=py_1 + - proj4=4.9.3=h470a237_8 + - psutil=5.4.7=py27h470a237_1 + - pycparser=2.18=py_1 + - pyopenssl=18.0.0=py27_0 + - pyparsing=2.2.0=py_1 + - pysocks=1.6.8=py27_2 + - python=2.7.15=h43f7c74_0 + - python-dateutil=2.7.3=py_0 + - pytz=2018.5=py_0 + - pyyaml=3.13=py27h470a237_1 + - readline=7.0=haf1bffa_1 + - requests=2.19.1=py27_1 + - setuptools=40.2.0=py27_0 + - singledispatch=3.4.0.3=py27_0 + - six=1.11.0=py27_1 + - sortedcontainers=2.0.4=py_1 + - sqlite=3.24.0=h2f33b56_1 + - tblib=1.3.2=py_1 + - tk=8.6.8=0 + - toolz=0.9.0=py_0 + - tornado=5.1=py27h470a237_1 + - udunits2=2.2.27.6=h3a4f0e9_1 + - urllib3=1.23=py27_1 + - x264=1!152.20180717=h470a237_0 + - xz=5.2.4=h470a237_1 + - yaml=0.1.7=h470a237_1 + - zict=0.1.3=py_0 + - zlib=1.2.11=h470a237_3 + - blas=1.0=mkl + - intel-openmp=2018.0.3=0 + - libgfortran=3.0.1=h93005f0_2 + - libgfortran-ng=3.0.1=h93005f0_2 + - mkl=2018.0.3=1 + - numpy=1.15.1=py27h6a91979_0 + - numpy-base=1.15.1=py27h8a80b8c_0 + - cia=0.0.6=0 + - pcmdi_metrics=1.2=py27h39e3cac_0 +prefix: /Users/doutriaux1/anaconda2/envs/pmp_1.2_osx_py2 + diff --git a/recipes/conda-envs/pmp-1.2_osx_py3 b/recipes/conda-envs/pmp-1.2_osx_py3 new file mode 100644 index 000000000..e69de29bb diff --git a/recipes/conda-envs/pmp-1.2_osx_py3.yaml b/recipes/conda-envs/pmp-1.2_osx_py3.yaml new file mode 100644 index 000000000..16e786663 --- /dev/null +++ b/recipes/conda-envs/pmp-1.2_osx_py3.yaml @@ -0,0 +1,120 @@ +name: pmp_1.2_osx_py3 +channels: + - pcmdi + - cdat + - conda-forge + - defaults +dependencies: + - cdp=1.4.0=py36_0 + - dv3d=8.0=py36_0 + - output_viewer=1.2.5=py36_0 + - vcs=8.0=py36_0 + - vcsaddons=8.0=py36_0 + - vtk-cdat=8.0.1.8.0=py36_3 + - asn1crypto=0.24.0=py36_3 + - bokeh=0.13.0=py36_0 + - bzip2=1.0.6=1 + - ca-certificates=2018.8.24=ha4d7672_0 + - cdat_info=8.0=py36_0 + - cdms2=3.0.1=py36hfa2f21f_1 + - cdtime=3.0=py36hfa2f21f_1 + - cdutil=8.0=py36_1 + - certifi=2018.8.24=py36_1 + - cffi=1.11.5=py36h5e8e0c9_1 + - chardet=3.0.4=py36_3 + - clapack=3.2.1=h470a237_1 + - click=6.7=py_1 + - cloudpickle=0.5.5=py_0 + - cryptography=2.3.1=py36hdffb7b8_0 + - cryptography-vectors=2.3.1=py36_0 + - curl=7.61.0=h93b3f91_2 + - cytoolz=0.9.0.1=py36h470a237_0 + - dask=0.19.1=py_0 + - dask-core=0.19.1=py_0 + - distarray=2.12.2=py36_0 + - distributed=1.23.1=py36_0 + - esmf=7.1.0r=1 + - esmpy=7.1.0r=py36_1 + - expat=2.2.5=hfc679d8_2 + - ffmpeg=4.0.2=ha6a6e2b_0 + - freetype=2.8.1=hfa320df_1 + - future=0.16.0=py36_2 + - g2clib=1.6.0=3 + - genutil=8.1.np1.14=py36he59b558_0 + - gettext=0.19.8.1=h1f1d5ed_1 + - gmp=6.1.2=hfc679d8_0 + - gnutls=3.5.19=h2a4e5f8_1 + - hdf4=4.2.13=h951d187_2 + - hdf5=1.10.1=2 + - heapdict=1.0.0=py36_0 + - idna=2.7=py36_2 + - jasper=1.900.1=hff1ad4c_5 + - jinja2=2.10=py_1 + - jpeg=9c=h470a237_1 + - krb5=1.14.6=0 + - lapack=3.6.1=1 + - libcdms=3.0.1=hdc02c5d_2 + - libcf=1.0.1=py36_5 + - libdrs=3.0.1=hc35d564_3 + - libdrs_f=3.0.1=h9aa2bbb_2 + - libffi=3.2.1=hfc679d8_5 + - libgcc=4.8.5=hdbeacc1_10 + - libiconv=1.15=h470a237_3 + - libnetcdf=4.6.1=2 + - libpng=1.6.35=ha92aebf_2 + - libssh2=1.8.0=h5b517e9_2 + - libtiff=4.0.9=he6b73bb_2 + - locket=0.2.0=py_2 + - markupsafe=1.0=py36h470a237_1 + - mkl_fft=1.0.6=py36_0 + - mkl_random=1.0.1=py36_0 + - mpi=1.0=mpich + - mpich=3.2.1=h26a2512_4 + - msgpack-python=0.5.6=py36h2d50403_2 + - ncurses=6.1=hfc679d8_1 + - netcdf-fortran=4.4.4=7 + - nettle=3.3=0 + - openh264=1.7.0=0 + - openssl=1.0.2p=h470a237_0 + - ossuuid=1.6.2=hfc679d8_0 + - packaging=17.1=py_0 + - pandas=0.23.4=py36hf8a1672_0 + - partd=0.3.8=py_1 + - proj4=4.9.3=h470a237_8 + - psutil=5.4.7=py36h470a237_1 + - pycparser=2.18=py_1 + - pyopenssl=18.0.0=py36_0 + - pyparsing=2.2.0=py_1 + - pysocks=1.6.8=py36_2 + - python=3.6.6=h5001a0f_0 + - python-dateutil=2.7.3=py_0 + - pytz=2018.5=py_0 + - pyyaml=3.13=py36h470a237_1 + - readline=7.0=haf1bffa_1 + - requests=2.19.1=py36_1 + - setuptools=40.2.0=py36_0 + - six=1.11.0=py36_1 + - sortedcontainers=2.0.4=py_1 + - sqlite=3.24.0=h2f33b56_1 + - tblib=1.3.2=py_1 + - tk=8.6.8=0 + - toolz=0.9.0=py_0 + - tornado=5.1=py36h470a237_1 + - udunits2=2.2.27.6=h3a4f0e9_1 + - urllib3=1.23=py36_1 + - x264=1!152.20180717=h470a237_0 + - xz=5.2.4=h470a237_1 + - yaml=0.1.7=h470a237_1 + - zict=0.1.3=py_0 + - zlib=1.2.11=h470a237_3 + - blas=1.0=mkl + - intel-openmp=2018.0.3=0 + - libgfortran=3.0.1=h93005f0_2 + - libgfortran-ng=3.0.1=h93005f0_2 + - mkl=2018.0.3=1 + - numpy=1.15.1=py36h6a91979_0 + - numpy-base=1.15.1=py36h8a80b8c_0 + - cia=0.0.6=0 + - pcmdi_metrics=1.2=py36h39e3cac_0 +prefix: /Users/doutriaux1/anaconda2/envs/pmp_1.2_osx_py3 + From 470c213b5f38f2b532da032894d79ad1ab814e11 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 12 Sep 2018 13:51:49 -0700 Subject: [PATCH 34/84] no need --- recipes/conda-envs/pmp-1.2_osx_py3 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 recipes/conda-envs/pmp-1.2_osx_py3 diff --git a/recipes/conda-envs/pmp-1.2_osx_py3 b/recipes/conda-envs/pmp-1.2_osx_py3 deleted file mode 100644 index e69de29bb..000000000 From 4a354df00b69d02b4b5861da6248b811f0e896c1 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 12 Sep 2018 14:13:57 -0700 Subject: [PATCH 35/84] linux yml files --- recipes/conda-envs/pmp-1.2_linux_py2.yaml | 128 ++++++++++++++++++++++ recipes/conda-envs/pmp-1.2_linux_py3.yaml | 123 +++++++++++++++++++++ 2 files changed, 251 insertions(+) create mode 100644 recipes/conda-envs/pmp-1.2_linux_py2.yaml create mode 100644 recipes/conda-envs/pmp-1.2_linux_py3.yaml diff --git a/recipes/conda-envs/pmp-1.2_linux_py2.yaml b/recipes/conda-envs/pmp-1.2_linux_py2.yaml new file mode 100644 index 000000000..240ee863c --- /dev/null +++ b/recipes/conda-envs/pmp-1.2_linux_py2.yaml @@ -0,0 +1,128 @@ +name: pmp_1.2_linux_py2 +channels: + - pcmdi + - cdat/label/nightly + - conda-forge + - cdat + - defaults +dependencies: + - cdp=1.4.0=py27_0 + - dv3d=8.0=py27_0 + - output_viewer=1.2.5=py27_0 + - vcs=8.0=py27_0 + - vcsaddons=8.0=py27_0 + - vtk-cdat=8.0.1.8.0=py27_2 + - asn1crypto=0.24.0=py27_3 + - backports_abc=0.5=py_1 + - bokeh=0.13.0=py27_0 + - bzip2=1.0.6=h470a237_2 + - ca-certificates=2018.8.24=ha4d7672_0 + - cdat_info=8.0=py27_0 + - cdms2=3.0.1=py27h6091dcd_1 + - cdtime=3.0=py27h6091dcd_1 + - cdutil=8.0=py27_1 + - certifi=2018.8.24=py27_1 + - cffi=1.11.5=py27h5e8e0c9_1 + - chardet=3.0.4=py27_3 + - clapack=3.2.1=h470a237_1 + - click=6.7=py_1 + - cloudpickle=0.5.5=py_0 + - cryptography=2.3.1=py27hdffb7b8_0 + - cryptography-vectors=2.3.1=py27_0 + - curl=7.61.0=h93b3f91_2 + - cytoolz=0.9.0.1=py27h470a237_0 + - dask=0.19.1=py_0 + - dask-core=0.19.1=py_0 + - distarray=2.12.2=py27_0 + - distributed=1.23.1=py27_0 + - enum34=1.1.6=py27_1 + - esmf=7.1.0r=1 + - esmpy=7.1.0r=py27_1 + - expat=2.2.5=hfc679d8_2 + - ffmpeg=4.0=hc8c182b_0 + - freetype=2.8.1=hfa320df_1 + - future=0.16.0=py27_2 + - futures=3.2.0=py27_0 + - g2clib=1.6.0=3 + - genutil=8.1.np1.14=py27he59b558_0 + - gmp=6.1.2=hfc679d8_0 + - gnutls=3.5.19=h2a4e5f8_1 + - hdf4=4.2.13=h951d187_2 + - hdf5=1.10.1=2 + - heapdict=1.0.0=py27_0 + - idna=2.7=py27_2 + - ipaddress=1.0.22=py_1 + - jasper=1.900.1=hff1ad4c_5 + - jinja2=2.10=py_1 + - jpeg=9c=h470a237_1 + - krb5=1.14.6=0 + - lapack=3.6.1=1 + - libcdms=3.0.1=h9ac9557_2 + - libcf=1.0.1=py27_2 + - libdrs=3.0.1=h6e3784b_3 + - libdrs_f=3.0.1=h2cd7f18_3 + - libffi=3.2.1=hfc679d8_5 + - libgcc=7.2.0=h69d50b8_2 + - libgcc-ng=7.2.0=hdf63c60_3 + - libgfortran=3.0.0=1 + - libgfortran-ng=7.2.0=hdf63c60_3 + - libiconv=1.15=h470a237_3 + - libnetcdf=4.6.1=2 + - libpng=1.6.35=ha92aebf_2 + - libssh2=1.8.0=h5b517e9_2 + - libstdcxx-ng=7.2.0=hdf63c60_3 + - libtiff=4.0.9=he6b73bb_2 + - locket=0.2.0=py_2 + - markupsafe=1.0=py27h470a237_1 + - mkl_fft=1.0.6=py27_0 + - mkl_random=1.0.1=py27_0 + - mpi=1.0=mpich + - mpich=3.2.1=h26a2512_4 + - msgpack-python=0.5.6=py27h2d50403_2 + - ncurses=6.1=hfc679d8_1 + - netcdf-fortran=4.4.4=7 + - nettle=3.3=0 + - openssl=1.0.2p=h470a237_0 + - ossuuid=1.6.2=hfc679d8_0 + - packaging=17.1=py_0 + - pandas=0.23.4=py27hf8a1672_0 + - partd=0.3.8=py_1 + - pip=18.0=py27_1 + - proj4=4.9.3=h470a237_8 + - psutil=5.4.7=py27h470a237_1 + - pycparser=2.18=py_1 + - pyopenssl=18.0.0=py27_0 + - pyparsing=2.2.0=py_1 + - pysocks=1.6.8=py27_2 + - python=2.7.15=h9fef7bc_0 + - python-dateutil=2.7.3=py_0 + - pytz=2018.5=py_0 + - pyyaml=3.13=py27h470a237_1 + - readline=7.0=haf1bffa_1 + - requests=2.19.1=py27_1 + - setuptools=40.2.0=py27_0 + - singledispatch=3.4.0.3=py27_0 + - six=1.11.0=py27_1 + - sortedcontainers=2.0.4=py_1 + - sqlite=3.24.0=h2f33b56_1 + - tblib=1.3.2=py_1 + - tk=8.6.8=0 + - toolz=0.9.0=py_0 + - tornado=5.1=py27h470a237_1 + - udunits2=2.2.27.6=h3a4f0e9_1 + - urllib3=1.23=py27_1 + - wheel=0.31.1=py27_1 + - x264=20131218=0 + - xz=5.2.4=h470a237_1 + - yaml=0.1.7=h470a237_1 + - zict=0.1.3=py_0 + - zlib=1.2.11=h470a237_3 + - blas=1.0=mkl + - intel-openmp=2018.0.3=0 + - mkl=2018.0.3=1 + - numpy=1.15.0=py27h1b885b7_0 + - numpy-base=1.15.0=py27h3dfced4_0 + - cia=0.0.6=0 + - pcmdi_metrics=1.2=py27h39e3cac_0 +prefix: /home/doutriaux1/miniconda/envs/pmp_1.2_linux_py2 + diff --git a/recipes/conda-envs/pmp-1.2_linux_py3.yaml b/recipes/conda-envs/pmp-1.2_linux_py3.yaml new file mode 100644 index 000000000..9dfa5591d --- /dev/null +++ b/recipes/conda-envs/pmp-1.2_linux_py3.yaml @@ -0,0 +1,123 @@ +name: pmp_1.2_linux_py3 +channels: + - pcmdi + - cdat/label/nightly + - conda-forge + - cdat + - defaults +dependencies: + - cdp=1.4.0=py36_0 + - dv3d=8.0=py36_0 + - output_viewer=1.2.5=py36_0 + - vcs=8.0=py36_0 + - vcsaddons=8.0=py36_0 + - vtk-cdat=8.0.1.8.0=py36_2 + - asn1crypto=0.24.0=py36_3 + - bokeh=0.13.0=py36_0 + - bzip2=1.0.6=h470a237_2 + - ca-certificates=2018.8.24=ha4d7672_0 + - cdat_info=8.0=py36_0 + - cdms2=3.0.1=py36h6091dcd_1 + - cdtime=3.0=py36h6091dcd_1 + - cdutil=8.0=py36_1 + - certifi=2018.8.24=py36_1 + - cffi=1.11.5=py36h5e8e0c9_1 + - chardet=3.0.4=py36_3 + - clapack=3.2.1=h470a237_1 + - click=6.7=py_1 + - cloudpickle=0.5.5=py_0 + - cryptography=2.3.1=py36hdffb7b8_0 + - cryptography-vectors=2.3.1=py36_0 + - curl=7.61.0=h93b3f91_2 + - cytoolz=0.9.0.1=py36h470a237_0 + - dask=0.19.1=py_0 + - dask-core=0.19.1=py_0 + - distarray=2.12.2=py36_0 + - distributed=1.23.1=py36_0 + - esmf=7.1.0r=1 + - esmpy=7.1.0r=py36_1 + - expat=2.2.5=hfc679d8_2 + - ffmpeg=4.0=hc8c182b_0 + - freetype=2.8.1=hfa320df_1 + - future=0.16.0=py36_2 + - g2clib=1.6.0=3 + - genutil=8.1.np1.14=py36he59b558_0 + - gmp=6.1.2=hfc679d8_0 + - gnutls=3.5.19=h2a4e5f8_1 + - hdf4=4.2.13=h951d187_2 + - hdf5=1.10.1=2 + - heapdict=1.0.0=py36_0 + - idna=2.7=py36_2 + - jasper=1.900.1=hff1ad4c_5 + - jinja2=2.10=py_1 + - jpeg=9c=h470a237_1 + - krb5=1.14.6=0 + - lapack=3.6.1=1 + - libcdms=3.0.1=h9ac9557_2 + - libcf=1.0.1=py36_5 + - libdrs=3.0.1=h6e3784b_3 + - libdrs_f=3.0.1=h2cd7f18_3 + - libffi=3.2.1=hfc679d8_5 + - libgcc=7.2.0=h69d50b8_2 + - libgcc-ng=7.2.0=hdf63c60_3 + - libgfortran=3.0.0=1 + - libgfortran-ng=7.2.0=hdf63c60_3 + - libiconv=1.15=h470a237_3 + - libnetcdf=4.6.1=2 + - libpng=1.6.35=ha92aebf_2 + - libssh2=1.8.0=h5b517e9_2 + - libstdcxx-ng=7.2.0=hdf63c60_3 + - libtiff=4.0.9=he6b73bb_2 + - locket=0.2.0=py_2 + - markupsafe=1.0=py36h470a237_1 + - mkl_fft=1.0.6=py36_0 + - mkl_random=1.0.1=py36_0 + - mpi=1.0=mpich + - mpich=3.2.1=h26a2512_4 + - msgpack-python=0.5.6=py36h2d50403_2 + - ncurses=6.1=hfc679d8_1 + - netcdf-fortran=4.4.4=7 + - nettle=3.3=0 + - openssl=1.0.2p=h470a237_0 + - ossuuid=1.6.2=hfc679d8_0 + - packaging=17.1=py_0 + - pandas=0.23.4=py36hf8a1672_0 + - partd=0.3.8=py_1 + - pip=18.0=py36_1 + - proj4=4.9.3=h470a237_8 + - psutil=5.4.7=py36h470a237_1 + - pycparser=2.18=py_1 + - pyopenssl=18.0.0=py36_0 + - pyparsing=2.2.0=py_1 + - pysocks=1.6.8=py36_2 + - python=3.6.6=h5001a0f_0 + - python-dateutil=2.7.3=py_0 + - pytz=2018.5=py_0 + - pyyaml=3.13=py36h470a237_1 + - readline=7.0=haf1bffa_1 + - requests=2.19.1=py36_1 + - setuptools=40.2.0=py36_0 + - six=1.11.0=py36_1 + - sortedcontainers=2.0.4=py_1 + - sqlite=3.24.0=h2f33b56_1 + - tblib=1.3.2=py_1 + - tk=8.6.8=0 + - toolz=0.9.0=py_0 + - tornado=5.1=py36h470a237_1 + - udunits2=2.2.27.6=h3a4f0e9_1 + - urllib3=1.23=py36_1 + - wheel=0.31.1=py36_1 + - x264=20131218=0 + - xz=5.2.4=h470a237_1 + - yaml=0.1.7=h470a237_1 + - zict=0.1.3=py_0 + - zlib=1.2.11=h470a237_3 + - blas=1.0=mkl + - intel-openmp=2018.0.3=0 + - mkl=2018.0.3=1 + - numpy=1.15.0=py36h1b885b7_0 + - numpy-base=1.15.0=py36h3dfced4_0 + - cia=0.0.6=0 + - pcmdi_metrics=1.2=py36h39e3cac_0 +prefix: /home/doutriaux1/miniconda/envs/pmp_1.2_linux_py3 + From c2684fa8db8960c61d9f31fdb67c85719ee6526b Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Fri, 14 Sep 2018 10:49:08 -0700 Subject: [PATCH 36/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d648be736..f2ea7ca5b 100755 --- a/README.md +++ b/README.md @@ -38,4 +38,4 @@ v1.1 - First public release, emphasizing climatological statistics, with develop v1.1.2 - Now managed through Anaconda, and tied to UV-CDAT 2.10. Weights on bias statistic added. Extensive provenance information incorporated into json files. -v1.2 - Tied to CDAT 8.0. Diurnal Cycle metrics, Sperber/Lee Monsoon statistics, Monsoon Wang metrics \ No newline at end of file +v1.2 - Tied to CDAT 8.0. Now includes extensive regression testing. New metrics: Diurnal Cycle, Sperber/Lee Monsoon, Monsoon Wang metrics From 899c5ab0be7effa8180bc0b598b37b54afc9811a Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Mon, 17 Sep 2018 10:56:38 -0700 Subject: [PATCH 37/84] using cdsat-forge channel --- recipes/conda-envs/pmp-1.2_linux_py2.yaml | 6 +----- recipes/conda-envs/pmp-1.2_linux_py3.yaml | 6 +----- recipes/conda-envs/pmp-1.2_osx_py2.yaml | 5 +---- recipes/conda-envs/pmp-1.2_osx_py3.yaml | 5 +---- 4 files changed, 4 insertions(+), 18 deletions(-) diff --git a/recipes/conda-envs/pmp-1.2_linux_py2.yaml b/recipes/conda-envs/pmp-1.2_linux_py2.yaml index 240ee863c..385c1e0f0 100644 --- a/recipes/conda-envs/pmp-1.2_linux_py2.yaml +++ b/recipes/conda-envs/pmp-1.2_linux_py2.yaml @@ -1,10 +1,6 @@ name: pmp_1.2_linux_py2 channels: - - pcmdi - - cdat/label/nightly - - conda-forge - - cdat - - defaults + - cdat-forge dependencies: - cdp=1.4.0=py27_0 - dv3d=8.0=py27_0 diff --git a/recipes/conda-envs/pmp-1.2_linux_py3.yaml b/recipes/conda-envs/pmp-1.2_linux_py3.yaml index 9dfa5591d..c3edce02f 100644 --- a/recipes/conda-envs/pmp-1.2_linux_py3.yaml +++ b/recipes/conda-envs/pmp-1.2_linux_py3.yaml @@ -1,10 +1,6 @@ name: pmp_1.2_linux_py3 channels: - - pcmdi - - cdat/label/nightly - - conda-forge - - cdat - - defaults + - cdat-forge dependencies: - cdp=1.4.0=py36_0 - dv3d=8.0=py36_0 diff --git a/recipes/conda-envs/pmp-1.2_osx_py2.yaml b/recipes/conda-envs/pmp-1.2_osx_py2.yaml index 41706f6ed..49b666005 100644 --- a/recipes/conda-envs/pmp-1.2_osx_py2.yaml +++ b/recipes/conda-envs/pmp-1.2_osx_py2.yaml @@ -1,9 +1,6 @@ name: pmp_1.2_osx_py2 channels: - - pcmdi - - cdat - - conda-forge - - defaults + - cdat-forge dependencies: - cdp=1.4.0=py27_0 - dv3d=8.0=py27_0 diff --git a/recipes/conda-envs/pmp-1.2_osx_py3.yaml b/recipes/conda-envs/pmp-1.2_osx_py3.yaml index 16e786663..76eef0291 100644 --- a/recipes/conda-envs/pmp-1.2_osx_py3.yaml +++ b/recipes/conda-envs/pmp-1.2_osx_py3.yaml @@ -1,9 +1,6 @@ name: pmp_1.2_osx_py3 channels: - - pcmdi - - cdat - - conda-forge - - defaults + - cdat-forge dependencies: - cdp=1.4.0=py36_0 - dv3d=8.0=py36_0 From 54c14b9384060007b0bf02558ba435335a0065ed Mon Sep 17 00:00:00 2001 From: Muryanto Date: Tue, 18 Sep 2018 13:45:25 -0700 Subject: [PATCH 38/84] add coverage & update .circleci/config.yml to only do py3 if py2 passes --- .circleci/config.yml | 131 ++++++++++++++++++++++++++----------------- 1 file changed, 79 insertions(+), 52 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ba2e3990..95af90694 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,48 +11,53 @@ aliases: command: | mkdir -p workspace git clone -b validateNightly git@github.com:CDAT/cdat workspace/cdat --depth=1 - ls workspace/cdat - # following will install miniconda3 under $WORKDIR/miniconda/bin python workspace/cdat/scripts/install_miniconda.py -w $WORKDIR -p 'py3' - &create_conda_env name: create_conda_env + environment: + PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5'" + CHANNELS: "-c cdat/label/nightly -c conda-forge -c cdat -c pcmdi" command: | export PATH=$WORKDIR/miniconda/bin:$PATH conda config --set always_yes yes --set changeps1 no conda update -y -q conda conda config --set anaconda_upload no - conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib matplotlib scipy cia testsrunner "proj4<5" "python<3" $FFMPEG - conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib matplotlib scipy cia testsrunner "proj4<5" "python>3" $FFMPEG + if [[ $PY_VER = "py2" ]]; then + conda create -q -n $PY_VER $CHANNELS $PKGS $FFMPEG "python<3" + else + conda create -q -n $PY_VER $CHANNELS $PKGS $FFMPEG "python>3" + fi - &setup_pmp name: setup_pmp command: | export PATH=$WORKDIR/miniconda/bin:$PATH - source activate py2 - python setup.py install - source activate py3 + source activate $PY_VER python setup.py install - &run_pmp_tests name: run_pmp_tests command: | export PATH=$WORKDIR/miniconda/bin:$PATH - export UVCDAT_ANONYMOUS_LOG=False - export UVCDAT_SETUP_PATH=${HOME} - source activate py2 - python run_tests.py -H -v2 + export CDAT_ANONYMOUS_LOG=False + export CDAT_SETUP_PATH=${HOME} + source activate $PY_VER + python run_tests.py -H -v2 $COVERAGE RESULT=$? - echo "py2 test command exit result:",$RESULT - source activate py3 - python run_tests.py -H -v2 - RESULT=$(( $RESULT + $? )) cd .. - echo "py3 test command exit result:",$RESULT + echo "*** $PY_VER test result: "${RESULT} - &conda_upload name: conda_upload + environment: + CHANNELS: "-c conda-forge -c cdat -c pcmdi" + PKG_NAME: "pcmdi_metrics" + LABEL: "linatest" command: | + if [[ $CIRCLE_BRANCH != 'add_coverage' ]]; then + exit 0 + fi export PATH=${HOME}/project/$WORKDIR/miniconda/bin:$PATH mkdir conda-bld cd conda-bld @@ -64,50 +69,75 @@ aliases: cd conda-recipes rm -rf cdp cp -r ../../recipes/pcmdi_metrics . - python ./prep_for_build.py -l 1.2 - conda build pcmdi_metrics -c conda-forge -c cdat -c pcmdi --python=27 - conda build pcmdi_metrics -c conda-forge -c cdat -c pcmdi --python=36 - anaconda -t $CONDA_UPLOAD_TOKEN upload -u pcmdi -l nightly $CONDA_BLD_PATH/$OS/$PKG_NAME-*tar.bz2 --force + python ./prep_for_build.py -l 1.1.2 -b 'add_coverage' + if [[ $PY_VER = 'py2' ]]; then + conda build $PKG_NAME $CHANNELS --python=27 + else + conda build $PKG_NAME $CHANNELS --python=36 + fi + anaconda -t $CONDA_UPLOAD_TOKEN upload -u pcmdi -l $LABEL $CONDA_BLD_PATH/$OS/$PKG_NAME-*tar.bz2 --force jobs: - deploy_mac: + macos_pmp_py2: macos: xcode: "9.2.0" environment: - WORKDIR: "workspace/test_macos_pmp" + WORKDIR: "test_macos_pmp_py2" OS: "osx-64" - PKG_NAME: "pcmdi_metrics" + PY_VER: "py2" + FFMPEG: "'ffmpeg>4' 'libpng>1.6.34'" steps: - checkout - run: *setup_miniconda + - run: *create_conda_env + - run: *setup_pmp + - run: *run_pmp_tests - run: *conda_upload + - store_artifacts: + path: tests_html + destination: tests_html + - store_artifacts: + path: tests_png + destination: tests_png - deploy_linux: - machine: - image: circleci/classic:latest + macos_pmp_py3: + macos: + xcode: "9.2.0" environment: - WORKDIR: "workspace/test_linux_pmp" - OS: "linux-64" - PKG_NAME: "pcmdi_metrics" + WORKDIR: "test_macos_pmp_py3" + OS: "osx-64" + PY_VER: "py3" + FFMPEG: "'ffmpeg>4' 'libpng>1.6.34'" steps: - checkout - run: *setup_miniconda + - run: *create_conda_env + - run: *setup_pmp + - run: *run_pmp_tests - run: *conda_upload + - store_artifacts: + path: tests_html + destination: tests_html + - store_artifacts: + path: tests_png + destination: tests_png - macos_pmp: - macos: - xcode: "9.2.0" + linux_pmp_py2: + machine: + image: circleci/classic:latest environment: - WORKDIR: "workspace/test_macos_pmp" - OS: "osx-64" - FFMPEG: "'ffmpeg>4' 'libpng>1.6.34'" + WORKDIR: "test_linux_pmp_py2" + OS: "linux-64" + PY_VER: "py2" + FFMPEG: "ffmpeg" steps: - checkout - run: *setup_miniconda - run: *create_conda_env - run: *setup_pmp - run: *run_pmp_tests + - run: *conda_upload - store_artifacts: path: tests_html destination: tests_html @@ -115,19 +145,22 @@ jobs: path: tests_png destination: tests_png - linux_pmp: + linux_pmp_py3: machine: image: circleci/classic:latest environment: - WORKDIR: "workspace/test_linux_pmp" + WORKDIR: "test_linux_pmp_py3" OS: "linux-64" + PY_VER: "py3" FFMPEG: "ffmpeg" + COVERAGE: "-c tests/coverage.json" steps: - checkout - run: *setup_miniconda - run: *create_conda_env - run: *setup_pmp - run: *run_pmp_tests + - run: *conda_upload - store_artifacts: path: tests_html destination: tests_html @@ -137,19 +170,13 @@ jobs: workflows: version: 2 - nightly: + pcmdi_metrics: jobs: - - macos_pmp - - deploy_mac: - filters: - branches: - only: master - requires: - - macos_pmp - - linux_pmp - - deploy_linux: - filters: - branches: - only: master - requires: - - linux_pmp + - macos_pmp_py2 + - macos_pmp_py3: + requires: + - macos_pmp_py2 + - linux_pmp_py2 + - linux_pmp_py3: + requires: + - linux_pmp_py2 From 47d25f9856b3dd1bb16866dd23c34ddf4f338a91 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Tue, 18 Sep 2018 14:11:41 -0700 Subject: [PATCH 39/84] add tests/all_coverage.json tests/coverage.json: --- tests/all_coverage.json | 3 +++ tests/coverage.json | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 tests/all_coverage.json create mode 100644 tests/coverage.json diff --git a/tests/all_coverage.json b/tests/all_coverage.json new file mode 100644 index 000000000..beefb900e --- /dev/null +++ b/tests/all_coverage.json @@ -0,0 +1,3 @@ +{ + "include": ["pcmdi_metrics", "cdat_info", "cdms2", "genutil", "vcs", "vtk"]] +} diff --git a/tests/coverage.json b/tests/coverage.json new file mode 100644 index 000000000..5180d58cd --- /dev/null +++ b/tests/coverage.json @@ -0,0 +1,3 @@ +{ + "include": ["pcmdi_metrics"] +} From 6186c12b2b995a55fe1ce0d1e5a19750e6d6d629 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Tue, 18 Sep 2018 14:47:45 -0700 Subject: [PATCH 40/84] install coverage and coveralls for linux py3; add status badges from coveralls and circleci to README.md --- .circleci/config.yml | 12 +++++++++++- README.md | 3 ++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 95af90694..3f6dbde50 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -26,7 +26,7 @@ aliases: if [[ $PY_VER = "py2" ]]; then conda create -q -n $PY_VER $CHANNELS $PKGS $FFMPEG "python<3" else - conda create -q -n $PY_VER $CHANNELS $PKGS $FFMPEG "python>3" + conda create -q -n $PY_VER $CHANNELS $PKGS $FFMPEG "python>3" $COVERAGE_PKGS fi - &setup_pmp @@ -48,6 +48,14 @@ aliases: cd .. echo "*** $PY_VER test result: "${RESULT} + - &run_coveralls + name: run_coveralls + command: | + export PATH=$WORKDIR/miniconda/bin:$PATH + source activate $PY_VER + coveralls + source deactivate + - &conda_upload name: conda_upload environment: @@ -154,6 +162,7 @@ jobs: PY_VER: "py3" FFMPEG: "ffmpeg" COVERAGE: "-c tests/coverage.json" + COVERAGE_PKGS: "coverage coveralls" steps: - checkout - run: *setup_miniconda @@ -161,6 +170,7 @@ jobs: - run: *setup_pmp - run: *run_pmp_tests - run: *conda_upload + - run: *run_coveralls - store_artifacts: path: tests_html destination: tests_html diff --git a/README.md b/README.md index f2ea7ca5b..3195936e8 100755 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ PCMDI metrics package (PMP) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.809463.svg)](https://doi.org/10.5281/zenodo.809463) [![Anaconda-Server Badge](https://anaconda.org/pcmdi/pcmdi_metrics/badges/installer/conda.svg)](https://conda.anaconda.org/pcmdi) [![Anaconda-Server Badge](https://anaconda.org/pcmdi/pcmdi_metrics/badges/downloads.svg)](https://anaconda.org/pcmdi/pcmdi_metrics) - +[![CircleCI](https://circleci.com/gh/PCMDI/pcmdi_metrics.svg?style=svg)](https://circleci.com/gh/PCMDI/pcmdi_metrics) +[![Coverage Status](https://coveralls.io/repos/github/PCMDI/pcmdi_metrics/badge.svg)](https://coveralls.io/github/PCMDI/pcmdi_metrics) The PCMDI metrics package is used to objectively compare results from climate models with observations using well-established statistical tests. Results are produced in the context of all model simulations contributed to CMIP5 and earlier CMIP phases. Among other purposes, this enables modeling groups to evaluate changes during the development cycle in the context of the structural error distribution of the multi-model ensemble. Currently, the comparisons emphasize large- to global-scale annual cycle performance metrics. Current work in v1.x development branches include established statistics for ENSO, regional monsoon precipitation, and the diurnal cycle of precipitation. These diagnostics will be included in a future PMP release. From c583e1c022fcdf70e15c6b2dca38ed52f30c8181 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Tue, 18 Sep 2018 15:12:30 -0700 Subject: [PATCH 41/84] retesting conda_upload -- temporarily upload to linatest --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3f6dbde50..1e1f86564 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -63,7 +63,7 @@ aliases: PKG_NAME: "pcmdi_metrics" LABEL: "linatest" command: | - if [[ $CIRCLE_BRANCH != 'add_coverage' ]]; then + if [[ $CIRCLE_BRANCH != 'add_coverage1' ]]; then exit 0 fi export PATH=${HOME}/project/$WORKDIR/miniconda/bin:$PATH @@ -77,7 +77,7 @@ aliases: cd conda-recipes rm -rf cdp cp -r ../../recipes/pcmdi_metrics . - python ./prep_for_build.py -l 1.1.2 -b 'add_coverage' + python ./prep_for_build.py -l 1.1.2 -b 'add_coverage1' if [[ $PY_VER = 'py2' ]]; then conda build $PKG_NAME $CHANNELS --python=27 else From 187a346a9680900332b55cc5eed762ca35cb01b9 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Wed, 19 Sep 2018 09:04:14 -0700 Subject: [PATCH 42/84] add coverage option in test_pmp_parser.html --- tests/test_pmp_parser.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/test_pmp_parser.py b/tests/test_pmp_parser.py index 817ea199b..bc1b42383 100644 --- a/tests/test_pmp_parser.py +++ b/tests/test_pmp_parser.py @@ -12,7 +12,11 @@ def testProcessTemplatedArgument(self): parser.add_argument("--template", default="%(something)/abc/%(someone)") parser.add_argument("-s") # for nosetest + parser.add_argument("--with-coverage", default=False, action="store_true", + help="run test with code coverage") + parser.add_argument("--cover-packages", help="package name to get code coverage on") + A = parser.get_parameter() self.assertEqual(A.process_templated_argument("template")(),"something/abc/someone") - self.assertEqual(A.process_templated_argument("%(someone)/cba/%(something)")(),"someone/cba/something") \ No newline at end of file + self.assertEqual(A.process_templated_argument("%(someone)/cba/%(something)")(),"someone/cba/something") From 5c6231b25f8f4b3442385bf58d97bd0bb335de63 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Wed, 19 Sep 2018 10:04:02 -0700 Subject: [PATCH 43/84] take out temporary changes for testing upload to linatest - ready for code review --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1e1f86564..369eb1edb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -61,9 +61,9 @@ aliases: environment: CHANNELS: "-c conda-forge -c cdat -c pcmdi" PKG_NAME: "pcmdi_metrics" - LABEL: "linatest" + LABEL: "nightly" command: | - if [[ $CIRCLE_BRANCH != 'add_coverage1' ]]; then + if [[ $CIRCLE_BRANCH != 'master' ]]; then exit 0 fi export PATH=${HOME}/project/$WORKDIR/miniconda/bin:$PATH @@ -77,7 +77,7 @@ aliases: cd conda-recipes rm -rf cdp cp -r ../../recipes/pcmdi_metrics . - python ./prep_for_build.py -l 1.1.2 -b 'add_coverage1' + python ./prep_for_build.py -l 1.1.2 if [[ $PY_VER = 'py2' ]]; then conda build $PKG_NAME $CHANNELS --python=27 else From e09c0569379815a7b46c403306862148ee372775 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Wed, 19 Sep 2018 11:24:48 -0700 Subject: [PATCH 44/84] removed extra bracket in tests/all_coverage.json --- tests/all_coverage.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/all_coverage.json b/tests/all_coverage.json index beefb900e..4437bc41c 100644 --- a/tests/all_coverage.json +++ b/tests/all_coverage.json @@ -1,3 +1,3 @@ { - "include": ["pcmdi_metrics", "cdat_info", "cdms2", "genutil", "vcs", "vtk"]] + "include": ["pcmdi_metrics", "cdat_info", "cdms2", "genutil", "vcs", "vtk"] } From f254cf54100faccc3ba903f50d70e4b12e6405b2 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Wed, 19 Sep 2018 12:53:43 -0700 Subject: [PATCH 45/84] update last_stable build to 1.2 when running prep_for_build.py --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 369eb1edb..60053db3c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -77,7 +77,7 @@ aliases: cd conda-recipes rm -rf cdp cp -r ../../recipes/pcmdi_metrics . - python ./prep_for_build.py -l 1.1.2 + python ./prep_for_build.py -l 1.2 if [[ $PY_VER = 'py2' ]]; then conda build $PKG_NAME $CHANNELS --python=27 else From 3252c17a0210c4e72b7757a4ec2bbda96bdc8db2 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Wed, 19 Sep 2018 14:31:49 -0700 Subject: [PATCH 46/84] testing a small edit to see if github's status check for linux_pmp and macos_pmp are removed, since they are not valid anymore --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 60053db3c..34753ec13 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -46,7 +46,7 @@ aliases: python run_tests.py -H -v2 $COVERAGE RESULT=$? cd .. - echo "*** $PY_VER test result: "${RESULT} + echo "**** $PY_VER test result: "${RESULT} - &run_coveralls name: run_coveralls From 3774b5503bc06f75b3b9d3cf6f14f5a8c972b339 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Wed, 19 Sep 2018 14:48:10 -0700 Subject: [PATCH 47/84] revert my last commit --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 34753ec13..60053db3c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -46,7 +46,7 @@ aliases: python run_tests.py -H -v2 $COVERAGE RESULT=$? cd .. - echo "**** $PY_VER test result: "${RESULT} + echo "*** $PY_VER test result: "${RESULT} - &run_coveralls name: run_coveralls From fafcb4198a7058faeb8c3b398514b9ab83d1337b Mon Sep 17 00:00:00 2001 From: Muryanto Date: Wed, 19 Sep 2018 16:37:16 -0700 Subject: [PATCH 48/84] added 'pcmdi_metrics/pcmdi' to tests/coverage.json so that we can see the coverage missing lines --- tests/coverage.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/coverage.json b/tests/coverage.json index 5180d58cd..1f485ccda 100644 --- a/tests/coverage.json +++ b/tests/coverage.json @@ -1,3 +1,3 @@ { - "include": ["pcmdi_metrics"] + "include": ["pcmdi_metrics", "pcmdi_metrics/pcmdi"] } From 35e9288ff04c4fff08a04d29878f3c10f5accc63 Mon Sep 17 00:00:00 2001 From: Muryanto Date: Thu, 20 Sep 2018 08:53:51 -0700 Subject: [PATCH 49/84] added pcmdi_metrics/pcmdi to tests/all_coverage.json --- tests/all_coverage.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/all_coverage.json b/tests/all_coverage.json index 4437bc41c..4ca48229a 100644 --- a/tests/all_coverage.json +++ b/tests/all_coverage.json @@ -1,3 +1,3 @@ { - "include": ["pcmdi_metrics", "cdat_info", "cdms2", "genutil", "vcs", "vtk"] + "include": ["pcmdi_metrics", "pcmdi_metrics/pcmdi", "cdat_info", "cdms2", "genutil", "vcs", "vtk"] } From 2770626e5c31703e3de020e4183138d225917f05 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 20 Sep 2018 16:24:34 -0700 Subject: [PATCH 50/84] renamed pcmdi_metrics_driver to mean_climate_driver (#574) --- demo/pmp_demo.py | 141 ---- demo/pmp_demo_1.py | 9 - setup.py | 6 +- .../scripts/install_metrics_from_branches.py | 146 ---- ...trics_driver.py => mean_climate_driver.py} | 0 .../scripts/pcmdi_metrics_driver_legacy.py | 759 ------------------ tests/basepmpdriver.py | 5 +- 7 files changed, 3 insertions(+), 1063 deletions(-) delete mode 100644 demo/pmp_demo.py delete mode 100644 demo/pmp_demo_1.py delete mode 100755 src/python/misc/scripts/install_metrics_from_branches.py rename src/python/pcmdi/scripts/{pcmdi_metrics_driver.py => mean_climate_driver.py} (100%) delete mode 100755 src/python/pcmdi/scripts/pcmdi_metrics_driver_legacy.py diff --git a/demo/pmp_demo.py b/demo/pmp_demo.py deleted file mode 100644 index 0e9d4e0b1..000000000 --- a/demo/pmp_demo.py +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/env python - -# This is a very simple demo for new users -import subprocess -import requests -import hashlib -import os -import sys -import shlex -import genutil -import argparse - -class bgcolor: - HEADER = '\033[95m' - OKBLUE = '\033[94m' - OKGREEN = '\033[92m' - WARNING = '\033[93m' - FAIL = '\033[91m' - ENDC = '\033[0m' - BOLD = '\033[1m' - UNDERLINE = '\033[4m' - - -def comment(text,cont="[Press enter]"): - print text - if cont is None: - return - else: - return raw_input(cont) - -def describe(demo_file,colorized=True): - f = open(demo_file) - for l in f.xreadlines(): # goes thru the file - ln = l.strip() - if ln=="": - continue - if ln[0]=="#": # comment - while ln[0]=="#": - ln=ln[1:] - if ln=="": - break - if colorized: - bc = bgcolor.OKBLUE - else: - bc = "" - comment(bc+ln.strip()+bgcolor.ENDC,None) - else: - if colorized: - bc = bgcolor.BOLD+bgcolor.UNDERLINE+bgcolor.HEADER - else: - bc = "" - print - comment(bc+ln+bgcolor.ENDC) - print - if colorized: - bc = bgcolor.OKBLUE - else: - bc = "" - comment(bc+"This ends this parameter file"+bgcolor.ENDC) - -def demo(demo_file,title,colorized=True): - parser = argparse.ArgumentParser(description='Just used for pointing to demo data') - parser.add_argument('-d', dest='demo_data_path', - help='Path to the tarball of demo data') - args = parser.parse_args() - - comment(""" - PMP Demo: %s - - This is a demonstration of the PMP - It will download some observation and model data for you - It will then demonstrate how to setup a parameter file to execute PMP on these - It will run the PMP - It will show you where to find the results and how to look at them""" % title) - - cont = comment("""We will now download and untar a small set of data for the demo - Data will be untarred in the 'pmp_demo' directory created in the current directory""","Continue? [Y/n]") - if cont.strip().lower() not in ["","y","yes"]: - sys.exit() - - ## Download data - demo_pth = os.path.join(os.getcwd(),"pmp_demo") - if not os.path.exists(demo_pth): - os.makedirs(demo_pth) - # http://oceanonly.llnl.gov/gleckler1/pmp-demo-data/pmpv1.1_demodata.tar - - if args.demo_data_path: - tar_pth = os.path.abspath(args.demo_data_path) - if not os.path.exists(tar_pth): - raise IOError('%s does not exist' % tar_pth) - - else: - tar_filename = "pmpv1.1_demodata.tar" - tar_pth = os.path.join(demo_pth,tar_filename) - - good_md5 = "a6ef8f15457378ff36fd46e8fbf5f157" - - attempts = 0 - while attempts < 3: - md5 = hashlib.md5() - if os.path.exists(tar_filename): - f = open(tar_filename) - md5.update(f.read()) - if md5.hexdigest() == good_md5: - attempts = 5 - continue - print "Downloading: ", tar_filename - r = requests.get("http://oceanonly.llnl.gov/gleckler1/pmp-demo-data/pmpv1.1_demodata.tar", stream=True) - with open(tar_pth, 'wb') as f: - for chunk in r.iter_content(chunk_size=1024): - if chunk: # filter local_filename keep-alive new chunks - f.write(chunk) - md5.update(chunk) - f.close() - if md5.hexdigest() == good_md5: - attempts = 5 - else: - attempts += 1 - - comment("Successfuly downloaded demo tarball\nNow untarring it", None) - - tar_process = subprocess.Popen(shlex.split("tar xvf %s"%tar_pth),cwd=demo_pth) - tar_process.wait() - - comment("Success! Files are now untarred in %s\nLet's run this demo!\n" % demo_pth,None) - comment("""The PMP package runs off a 'parameter' file which needs to be edited by the user - Please kindly take a look at our sample parameter file in: %s""" % demo_file) - - describe(demo_file) - cmd = "pcmdi_metrics_driver.py -p %s" % demo_file - comment("We will now run the pmp using this parameter file\nTo do so we are using the follwoing command\n%s" % cmd) - pmp = subprocess.Popen(shlex.split(cmd)) - sys.path.insert(0,os.path.dirname(demo_file)) - exec("import %s as pmp_param" % os.path.basename(demo_file)[:-3]) - pmp.wait() - loc = genutil.StringConstructor(os.path.join(pmp_param.metrics_output_path)) - for att in ["case_id","model_version","period","realization","period"]: - if hasattr(pmp_param,att): - setattr(loc,att,getattr(pmp_param,att)) - comment("You can now look at the results in: %s%s%s" % (bgcolor.HEADER+bgcolor.BOLD,loc(),bgcolor.ENDC)) - diff --git a/demo/pmp_demo_1.py b/demo/pmp_demo_1.py deleted file mode 100644 index 1663e02d7..000000000 --- a/demo/pmp_demo_1.py +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env python -import sys -import os - -bd,nm=os.path.split(sys.argv[0]) -print bd,nm -sys.path.insert(0,bd) -import pmp_demo -pmp_demo.demo(os.path.join(sys.prefix,"share","pmp","demo","pmp_input_parameters_demo1.py"),"simple-test1") diff --git a/setup.py b/setup.py index 1d14b30bc..496604bcc 100755 --- a/setup.py +++ b/setup.py @@ -56,13 +56,9 @@ 'pcmdi_metrics.monsoon_wang': 'src/python/monsoon_wang/lib', 'pcmdi_metrics.monsoon_sperber': 'src/python/monsoon_sperber/lib', } -scripts = ['src/python/pcmdi/scripts/pcmdi_metrics_driver.py', - 'src/python/pcmdi/scripts/pcmdi_metrics_driver_legacy.py', +scripts = ['src/python/pcmdi/scripts/mean_climate_driver.py', 'src/python/pcmdi/scripts/pcmdi_compute_climatologies.py', - 'src/python/misc/scripts/install_metrics_from_branches.py', 'src/python/misc/scripts/parallelize_driver.py', - 'demo/pmp_demo_1.py', - 'demo/pmp_demo.py', 'src/python/monsoon_wang/scripts/mpindex_compute.py', 'src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py', ] diff --git a/src/python/misc/scripts/install_metrics_from_branches.py b/src/python/misc/scripts/install_metrics_from_branches.py deleted file mode 100755 index 3cfe8b3a3..000000000 --- a/src/python/misc/scripts/install_metrics_from_branches.py +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/env python -from __future__ import print_function -import argparse -import time -import subprocess -import os -import sys -import shlex - - -loc = time.localtime() -today = "%s.%s.%s" % (loc.tm_year, loc.tm_mon, loc.tm_mday) - -P = argparse.ArgumentParser( - description='Merge many branches into a conda env', - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - -c = P.add_argument_group('CONDA') -c.add_argument("-e", "--env", default=today, help="conda env to install into") -c.add_argument("-x", "--extra", default="", help="extra packages and channels you need") -c.add_argument( - "-M", - "--no-mesa", - default=False, - action="store_true", - help="turn on/off mesa") -c.add_argument( - "-n", - "--no-nightly", - default=False, - action="store_true", - help="turn on/off mesa") -b = P.add_argument_group('Repositories') -b.add_argument( - "-m", - "--metrics", - default=["master"], - nargs="*", - help="metrics branches to merge in") -b.add_argument("-r", "--repo", default="PCMDI/pcmdi_metrics", - help="metrics repo to use") -b.add_argument( - "-v", - "--vcs", - default=["master"], - nargs="*", - help="vcs branches to merge") -b.add_argument( - "-c", - "--cdms", - default=["master"], - nargs="*", - help="cdms branches to merge") -loc = P.add_argument_group('Local Setup') -loc.add_argument("-g", "--git", default=os.path.expanduser("~/git"), - help="top directory where you will clone your git repos") - -args = P.parse_args(sys.argv[1:]) - -sp = args.repo.split("/") -metrics_repo = sp[0] -metrics_name = "/".join(sp[1:]) - - -def execute_cmd(cmd, path=os.getcwd()): - print(("Executing: %s in: %s" % (cmd, path))) - p = subprocess.Popen(shlex.split(cmd), cwd=path) - o, e = p.communicate() - return o, e - - -def merge_branches(repo_pth, branches): - execute_cmd("git checkout master", path=repo_pth) - execute_cmd("git reset --hard origin/master", path=repo_pth) - execute_cmd("git pull", path=repo_pth) - for b in branches: - execute_cmd("git merge --no-commit origin/%s" % b, path=repo_pth) - - -# Make sure we yank conda -execute_cmd("conda clean --lock") -execute_cmd("conda remove -n %s -y --all" % args.env) - -if args.no_mesa: - pname = "" -else: - pname = "-nox" - -if args.no_nightly: - nightly = "" -else: - nightly = "-c uvcdat/label/nightly" -# Create conda env -execute_cmd( - "conda create -y -n %s %s -c uvcdat %s ipython output_viewer eztemplate vcsaddons%s cdms2 vcs%s hdf5=1.8.16 " % - (args.env, nightly, args.extra, pname, pname)) - -# Setup GIT -if not os.path.exists(args.git): - os.makedirs(args.git) - -# Loop through vcs branches -execute_cmd("git clone git://github.com/UV-CDAT/vcs", path=args.git) -vcs_pth = os.path.join(args.git, "vcs") -merge_branches(vcs_pth, args.vcs) - -# Loop through cdms branches -execute_cmd("git clone git://github.com/UV-CDAT/cdms", path=args.git) -cdms_pth = os.path.join(args.git, "cdms") -merge_branches(cdms_pth, args.cdms) - -# Loop through metrics branches -execute_cmd("git clone git://github.com/%s" % metrics_repo, path=args.git) -metrics_pth = os.path.join(args.git, metrics_name) -merge_branches(metrics_pth, args.metrics) - -f = open("install_in_env.bash", "w") -print("#!/usr/bin/env bash", file=f) -print("source activate %s" % args.env, file=f) -print("conda uninstall -y openblas", file=f) -if args.vcs != ["master"]: - print("cd %s" % vcs_pth, file=f) - print("rm -rf build", file=f) - print("python setup.py install --old-and-unmanageable", file=f) -if args.cdms != ["master"]: - print("cd %s" % cdms_pth, file=f) - print("rm -rf build", file=f) - print("python setup.py install", file=f) -print("cd %s" % metrics_pth, file=f) -print("rm -rf build", file=f) -print("python setup.py install", file=f) -f.close() -execute_cmd("bash install_in_env.bash") - - -print(( - "You should be good to go, we merged vcs branches:" + - "'%s' cdms branches: '%s' and metrics branches '%s' into conda env: '%s'" % - (" ".join( - args.vcs), " ".join( - args.cdms), " ".join( - args.metrics), args.env))) - -print("now run") - -print(("source activate %s" % args.env)) diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver.py b/src/python/pcmdi/scripts/mean_climate_driver.py similarity index 100% rename from src/python/pcmdi/scripts/pcmdi_metrics_driver.py rename to src/python/pcmdi/scripts/mean_climate_driver.py diff --git a/src/python/pcmdi/scripts/pcmdi_metrics_driver_legacy.py b/src/python/pcmdi/scripts/pcmdi_metrics_driver_legacy.py deleted file mode 100755 index 7772a87a1..000000000 --- a/src/python/pcmdi/scripts/pcmdi_metrics_driver_legacy.py +++ /dev/null @@ -1,759 +0,0 @@ -#!/usr/bin/env python -# -# -# USER INPUT IS SET IN FILE "input_parameters.py" -# Identified via --parameters key at startup -# -# -from __future__ import print_function -import pcmdi_metrics -import sys -import argparse -import os -import json -import genutil -import warnings -import cdms2 -import MV2 -import cdutil -import collections -import cdat_info -import unidata - -# Statistical tracker -cdat_info.pingPCMDIdb("pcmdi_metrics", "pcmdi_metrics_driver") - -# Before we do anything else we need to create some units -# Salinity Units -try: - unidata.udunits_wrap.init() -except Exception: - import genutil as unidata - unidata.udunits_wrap.init() - -# Create a dimensionless units named dimless -unidata.addDimensionlessUnit("dimless") - -# Created scaled units for dimless -unidata.addScaledUnit("psu", .001, "dimless") -unidata.addScaledUnit("PSS-78", .001, "dimless") -unidata.addScaledUnit("Practical Salinity Scale 78", .001, "dimless") - -# Following are actually created in excfile bit, this is to make flae8 happy -regions_specs = {} -default_regions = [] -exec(compile(open(sys.prefix + "/share/pmp/default_regions.py").read(), - sys.prefix + "/share/pmp/default_regions.py", 'exec')) - -# Load the obs dictionary -fjson = open( - os.path.join( - sys.prefix, - "share", - "pmp", - "obs_info_dictionary.json")) -obs_dic = json.loads(fjson.read()) -fjson.close() - - -class DUP(object): - - def __init__(self, outfile): - self.outfile = outfile - self.tb = False - - def __call__(self, *args): - msg = "" - for a in args: - msg += " " + str(a) - if self.tb: - import traceback - exc_type, exc_value, exc_traceback = sys.exc_info() - print("<<<<<<<<<<<< BEG TRACEBACK >>>>>>>>>>>>>>>>>>") - traceback.print_tb(exc_traceback) - print("<<<<<<<<<<<< END TRACEBACK >>>>>>>>>>>>>>>>>>") - print("<<<<<<<<<<<< BEG TRACEBACK >>>>>>>>>>>>>>>>>>", file=self.outfile) - traceback.print_tb(exc_traceback, file=self.outfile) - print("<<<<<<<<<<<< END TRACEBACK >>>>>>>>>>>>>>>>>>", file=self.outfile) - print(msg) - print(msg, file=self.outfile) - - -def applyCustomKeys(O, custom_dict, var): - for k, v in custom_dict.items(): - key = custom_dict[k] - setattr(O, k, key.get(var, key.get(None, ""))) - - -P = argparse.ArgumentParser( - description='Runs PCMDI Metrics Computations', - formatter_class=argparse.ArgumentDefaultsHelpFormatter) - -P.add_argument( - "-p", - "--parameters", - dest="param", - default="input_parameters.py", - help="input parameter file containing local settings", - required=True) -P.add_argument( - "-d", - "--dry-run", - action="store_true", - default=False, - help="Do not run calculations, but check that everything should go smoothly") - -P.add_argument("-t", - "--traceback", - default=False, - action="store_true", - help="Print traceback on errors (helps developers to debug)") - -args = P.parse_args(sys.argv[1:]) - -pth, fnm = os.path.split(args.param) -if pth != "": - sys.path.append(pth) -if fnm.lower()[-3:] == ".py": - fnm = fnm[:-3] - ext = ".py" -else: - ext = "" -# We need to make sure there is no "dot" in filename or import will fail -if fnm.find(".") > -1: - raise ValueError( - "Sorry input parameter file name CANNOT contain" + - " 'dots' (.), please rename it (e.g: %s%s)" % - (fnm.replace( - ".", - "_"), - ext)) -sys.path.insert(0, os.getcwd()) -parameters = "" # dummy so flake8 knows about parameters -exec("import %s as parameters" % fnm) -if pth != "": - sys.path.pop(-1) - -# Checks a few things on the parameter file -if not hasattr(parameters, "metrics_output_path"): - raise RuntimeError("Your parameter file does not define the output_path, please define 'metrics_output_path'") - -# Checking if we have custom obs to add -if hasattr(parameters, "custom_observations"): - fjson2 = open(parameters.custom_observations) - obs_dic.update(json.load(fjson2)) - fjson2.close() - -# Checking if user has custom_keys -if not hasattr(parameters, "custom_keys"): - parameters.custom_keys = {} - -# See if we have model tweaks for ALL models -# If not makes it empty dictionary -if hasattr(parameters, "model_tweaks"): - tweaks_all = parameters.model_tweaks.get(None, {}) -else: - tweaks_all = {} - -out = pcmdi_metrics.io.base.Base( - os.path.abspath(os.path.join(parameters.metrics_output_path)), - "errors_log.txt") -case_id = getattr(parameters, "case_id", "") -period = getattr(parameters, "period", "") - -out.case_id = case_id -out = out() - -try: - os.makedirs( - os.path.dirname(out) - ) -except Exception: - pass - -Efile = open(out, "w") - -dup = DUP(Efile) - -# Loads a few default, that "should" be overwritten by parameter file -# But in case they're not defined in parameter file then -# The code will keep running happily -if getattr(parameters, "save_mod_clims", False): - if not hasattr(parameters, "model_clims_interpolated_output"): - parameters.model_clims_interpolated_output = model_clims_interpolated_output = os.path.join( - parameters.metrics_output_path, - 'interpolated_model_clims') - dup("WARNING: Your parameter file asks to save interpolated model climatologies," + - " but did not define a path for this\n" + - "We set 'model_clims_interpolated_output' to %s for you" % parameters.model_clims_interpolated_output) - if not hasattr(parameters, "filename_output_template"): - parameters.filename_output_template = "%(variable)%(level)_%(model_version)_%(table)_" +\ - "%(realization)_%(period).interpolated.%(regridMethod).%(targetGridName)-clim%(ext)" - dup("WARNING: Your parameter file asks to save interpolated model climatologies, " + - "but did not define a name template for this\n" + - "We set 'filename_output_template' to %s for you" % parameters.filename_output_template) - - -# First of all attempt to prepare sftlf before/after for all models -sftlf = {} -# LOOP THROUGH DIFFERENT MODEL VERSIONS OBTAINED FROM input_model_data.py -for model_version in parameters.model_versions: - sft = pcmdi_metrics.io.base.Base( - parameters.mod_data_path, - getattr( - parameters, - "sftlf_filename_template", - parameters.filename_template)) - sft.model_version = model_version - sft.table = "fx" - sft.realm = "atmos" - sft.period = period - sft.ext = "nc" - sft.case_id = case_id - sft.targetGrid = None - sft.realization = "r0i0p0" - applyCustomKeys(sft, parameters.custom_keys, "sftlf") - try: - sftlf[model_version] = {"raw": sft.get("sftlf")} - sftlf[model_version]["filename"] = os.path.basename(sft()) - sftlf[model_version]["md5"] = sft.hash() - except Exception: - # Hum no sftlf... - dup.tb = args.traceback - dup("No mask for ", sft()) - dup.tb = False - sftlf[model_version] = {"raw": None} - sftlf[model_version]["filename"] = None - sftlf[model_version]["md5"] = None -if parameters.targetGrid == "2.5x2.5": - tGrid = cdms2.createUniformGrid(-88.875, 72, 2.5, 0, 144, 2.5) -else: - tGrid = parameters.targetGrid - -sft = cdutil.generateLandSeaMask(tGrid) -sft[:] = sft.filled(1.) * 100. -sftlf["targetGrid"] = sft - -# At this point we need to create the tuples var/region to know if a -# variable needs to be ran over a specific region or global or both -regions = getattr(parameters, "regions", {}) -vars = [] - -# Update/overwrite default region_values keys with user ones -regions_values = {} -regions_values.update(getattr(parameters, "regions_values", {})) - -# need to convert from old format regions_values to newer region_specs -for reg in regions_values: - dic = {"value": regions_values[reg]} - if reg in regions_specs: - regions_specs[reg].update(dic) - else: - regions_specs[reg] = dic - -# Update/overwrite default region_specs keys with user ones -regions_specs.update(getattr(parameters, "regions_specs", {})) - -regions_dict = {} -for var in parameters.vars: - vr = var.split("_")[0] - rg = regions.get(vr, default_regions) - if not isinstance(rg, (list, tuple)): - rg = [rg, ] - # Ok None means use the default regions - if None in rg: - rg.remove(None) - for r in default_regions: - rg.insert(0, r) - regions_dict[vr] = rg - -saved_obs_masks = {} - -disclaimer = open( - os.path.join( - sys.prefix, - "share", - "pmp", - "disclaimer.txt")).read() - -for Var in parameters.vars: # CALCULATE METRICS FOR ALL VARIABLES IN vars - try: - metrics_dictionary = collections.OrderedDict() - metrics_def_dictionary = collections.OrderedDict() - metrics_dictionary["DISCLAIMER"] = disclaimer - metrics_dictionary["RESULTS"] = collections.OrderedDict() - # REGRID OBSERVATIONS AND MODEL DATA TO TARGET GRID (ATM OR OCN GRID) - sp = Var.split("_") - var = sp[0] - if len(sp) > 1: # User specified a level (in hPa) to read in - level = float(sp[-1]) * 100. # Converts level to Pa - else: - level = None - - if obs_dic[var][obs_dic[var]["default"]]["CMIP_CMOR_TABLE"] == "Omon": - regridMethod = parameters.regrid_method_ocn - regridTool = parameters.regrid_tool_ocn - table_realm = 'Omon' - realm = "ocn" - else: - regridMethod = parameters.regrid_method - regridTool = parameters.regrid_tool - table_realm = 'Amon' - realm = "atm" - grd = {} - grd["RegridMethod"] = regridMethod - grd["RegridTool"] = regridTool - grd["GridName"] = parameters.targetGrid - - # Ok at that stage we need to loop thru obs - dup('parameter file ref is: ', parameters.ref) - refs = parameters.ref - if isinstance(refs, list) and "all" in [x.lower() for x in refs]: - refs = "all" - if isinstance(refs, str): - # Is it "all" - if refs.lower() == "all": - Refs = list(obs_dic[var].keys()) - refs = [] - for r in Refs: - if isinstance(obs_dic[var][r], str): - refs.append(r) - dup("refs:", refs) - else: - refs = [refs, ] - dup('ref is: ', refs) - - OUT = pcmdi_metrics.io.base.Base( - parameters.metrics_output_path, - "%(var)%(level)_%(targetGridName)_" + - "%(regridTool)_%(regridMethod)_metrics") - OUT.set_target_grid(parameters.targetGrid, regridTool, regridMethod) - OUT.var = var - OUT.realm = realm - OUT.table = table_realm - OUT.case_id = case_id - OUT.regridTool = regridTool - OUT.regridMethod = regridMethod - OUT.targetGridName = parameters.targetGrid - applyCustomKeys(OUT, parameters.custom_keys, var) - metrics_dictionary["Variable"] = {} - metrics_dictionary["Variable"]["id"] = var - if level is not None: - metrics_dictionary["Variable"]["level"] = level - - metrics_dictionary["References"] = {} - metrics_dictionary["RegionalMasking"] = {} - for region in regions_dict[var]: - if isinstance(region, str): - region_name = region - region = regions_specs.get( - region_name, - regions_specs.get( - region_name.lower())) - region["id"] = region_name - elif region is None: - region_name = "global" - else: - raise Exception("Unknown region %s" % region) - - metrics_dictionary["RegionalMasking"][region_name] = region - - for ref in refs: - if ref[:9] in ["default", "alternate"]: - refabbv = ref + "Reference" - else: - refabbv = ref - if isinstance(obs_dic[var][ref], str): - obs_var_ref = obs_dic[var][obs_dic[var][ref]] - else: - obs_var_ref = obs_dic[var][ref] - metrics_dictionary["References"][ref] = obs_var_ref - try: - try: - oMask = pcmdi_metrics.pcmdi.io.OBS( - parameters.obs_data_path, - "sftlf", - obs_dic, - obs_var_ref["RefName"]) - oMasknm = oMask() - except Exception: - dup("couldn't figure out obs mask name from obs json file") - oMasknm = None - - if obs_var_ref["CMIP_CMOR_TABLE"] == "Omon": - OBS = pcmdi_metrics.pcmdi.io.OBS( - parameters.obs_data_path, - var, - obs_dic, - ref, - file_mask_template=oMasknm) - else: - OBS = pcmdi_metrics.pcmdi.io.OBS( - parameters.obs_data_path, - var, - obs_dic, - ref, - file_mask_template=oMasknm) - OBS.set_target_grid( - parameters.targetGrid, - regridTool, - regridMethod) - OBS.realm = realm - OBS.table = table_realm - OBS.case_id = case_id - applyCustomKeys(OBS, parameters.custom_keys, var) - if region is not None: - dup("REGION: %s" % region) - region_value = region.get("value", None) - if region_value is not None: - OBS.targetMask = MV2.not_equal( - sftlf["targetGrid"], - region_value) - try: - if level is not None: - do = OBS.get(var, level=level, region=region) - else: - do = OBS.get(var, region=region) - except Exception as err: - dup.tb = args.traceback - if level is not None: - dup('failed opening 4D OBS', var, ref, err) - else: - dup('failed opening 3D OBS', var, ref, err) - dup.tb = False - continue - grd["GridResolution"] = do.shape[1:] - metrics_dictionary["GridInfo"] = grd - - dup('OBS SHAPE IS ', do.shape) - - # LOOP THROUGH DIFFERENT MODEL VERSIONS OBTAINED FROM - # input_model_data.py - for model_version in parameters.model_versions: - success = True - # See if we have model tweaks for THIS model - # If not makes it empty dictionary - if hasattr(parameters, "model_tweaks"): - tweaks = parameters.model_tweaks.get( - model_version, - {}) - else: - tweaks = {} - - while success: - - MODEL = pcmdi_metrics.io.base.Base( - parameters.mod_data_path, - parameters.filename_template) - MODEL.model_version = model_version - MODEL.table = table_realm - MODEL.realm = realm - MODEL.period = period - MODEL.ext = "nc" - MODEL.case_id = case_id - MODEL.set_target_grid( - parameters.targetGrid, - regridTool, - regridMethod) - MODEL.realization = parameters.realization - applyCustomKeys(MODEL, parameters.custom_keys, var) - varInFile = tweaks.get( - "variable_mapping", - {}).get( - var, - None) - # ok no mapping for THIS model - if varInFile is None: - # Trying to get the "All models" mapping and - # fallback and var we are using - varInFile = tweaks_all.get( - "variable_mapping", - {}).get( - var, - var) - if region is not None: - region_value = region.get("value", None) - if region_value is not None: - if sftlf[model_version]["raw"] is None: - if not hasattr( - parameters, "generate_sftlf") or \ - parameters.generate_sftlf is False: - dup("Model %s does not have sftlf, " % model_version + - "skipping region: %s" % region) - success = False - continue - else: - # ok we can try to generate the sftlf - MODEL.variable = var - dup("auto generating sftlf " + - "for model %s " % - MODEL()) - if os.path.exists(MODEL()): - fv = cdms2.open(MODEL()) - Vr = fv[varInFile] - # Need to recover only first - # time/leve/etc... - N = Vr.rank() - 2 # minus lat/lon - sft = cdutil.generateLandSeaMask( - Vr(*(slice(0, 1),) * N)) * 100. - sft[:] = sft.filled(100.) - sftlf[model_version]["raw"] = sft - fv.close() - dup("auto generated sftlf" + - " for model %s " % - model_version) - - MODEL.mask = sftlf[model_version]["raw"] - MODEL.targetMask = MV2.not_equal( - sftlf["targetGrid"], - region_value) - try: - if level is None: - OUT.level = "" - dm = MODEL.get( - var, - varInFile=varInFile, - region=region) - else: - OUT.level = "-%i" % (int(level / 100.)) - # Ok now fetch this - dm = MODEL.get( - var, - varInFile=varInFile, - level=level, - region=region) - except Exception as err: - success = False - dup.tb = args.traceback - dup('Failed to get variable %s ' % var + - 'for version: %s, error:\n%s' % ( - model_version, err)) - dup.tb = False - break - - dup(var, - ' ', - model_version, - ' ', - dm.shape, - ' ', - do.shape, - ' ', - ref) - # - # Basic checks - # - if dm.shape != do.shape: - raise RuntimeError( - "Obs and Model -%s- have different" % model_version + - "shapes %s vs %s" % - (do.shape, dm.shape)) - # Ok possible issue with units - if hasattr(dm, "units") and do.units != dm.units: - u = genutil.udunits(1, dm.units) - try: - scaling, offset = u.how(do.units) - dm = dm * scaling + offset - wrn = "Model and observation units differed, converted model" +\ - "(%s) to observation unit (%s) scaling: %g offset: %g" % ( - dm.units, do.units, scaling, offset) - warnings.warn(wrn) - except Exception: - raise RuntimeError( - "Could not convert model units (%s) " % dm.units + - "to obs units: (%s)" % (do.units)) - - # - # OBS INFO FOR JSON/ASCII FILES - # - onm = obs_dic[var][ref] - - # - # METRICS CALCULATIONS - # - metrics_dictionary["RESULTS"][model_version] = \ - metrics_dictionary["RESULTS"].get( - model_version, - {}) - # Stores model's simul description - if "SimulationDescription" not in \ - metrics_dictionary["RESULTS"][model_version]: - descr = {"MIPTable": - obs_var_ref["CMIP_CMOR_TABLE"], - "Model": model_version, - } - - sim_descr_mapping = { - "ModelActivity": "project_id", - "ModellingGroup": "institute_id", - "Experiment": "experiment", - "ModelFreeSpace": "ModelFreeSpace", - "Realization": "realization", - "creation_date": "creation_date", - } - - sim_descr_mapping.update( - getattr( - parameters, - "simulation_description_mapping", - {})) - for att in list(sim_descr_mapping.keys()): - nm = sim_descr_mapping[att] - if not isinstance(nm, (list, tuple)): - nm = ["%s", nm] - fmt = nm[0] - vals = [] - for a in nm[1:]: - # First trying from parameter file - if hasattr(parameters, a): - vals.append(getattr(parameters, a)) - # Now fall back on file... - else: - f = cdms2.open(MODEL()) - if hasattr(f, a): - try: - vals.append( - float( - getattr( - f, - a))) - except Exception: - vals.append(getattr(f, a)) - # Ok couldn't find it anywhere - # setting to N/A - else: - vals.append("N/A") - f.close() - descr[att] = fmt % tuple(vals) - metrics_dictionary[ - "RESULTS"][ - model_version][ - "units"] = getattr( - dm, - "units", - "N/A") - metrics_dictionary["RESULTS"][model_version][ - "SimulationDescription"] = descr - metrics_dictionary["RESULTS"][model_version][ - "InputClimatologyFileName"] = \ - os.path.basename(MODEL()) - metrics_dictionary["RESULTS"][model_version][ - "InputClimatologyMD5"] = MODEL.hash() - # Not just global - if len(regions_dict[var]) > 1: - metrics_dictionary["RESULTS"][model_version][ - "InputRegionFileName"] = \ - sftlf[model_version]["filename"] - metrics_dictionary["RESULTS"][model_version][ - "InputRegionMD5"] = \ - sftlf[model_version]["md5"] - - if refabbv not in metrics_dictionary["RESULTS"][model_version]: - metrics_dictionary["RESULTS"][model_version][ - refabbv] = {'source': onm} - pr = metrics_dictionary["RESULTS"][model_version][refabbv].\ - get( - parameters.realization, - {}) - if not args.dry_run: - pr_rgn = pcmdi_metrics.pcmdi.compute_metrics( - Var, - dm, - do) - # Calling compute metrics with None for model and - # obs, triggers it to send back the defs. - metrics_def_dictionary.update( - pcmdi_metrics.pcmdi.compute_metrics( - Var, - None, - None)) - # - # The follwoing allow users to plug in a set of - # custom metrics - # Function needs to take in var name, - # model clim, obs clim - # - if hasattr(parameters, "compute_custom_metrics"): - pr_rgn.update( - parameters.compute_custom_metrics( - Var, - dm, - do)) - # Calling compute metrics with None - # for model and - # obs, triggers it to send back the defs. - # But we are wrapping this in an except/try in - # case user did not implement - try: - metrics_def_dictionary.update( - parameters.compute_custom_metrics( - Var, - None, - None)) - except Exception: - # Better than nothing we will use the doc - # string - metrics_def_dictionary.update( - {"custom": parameters. - compute_custom_metrics.__doc__}) - pr[region_name] = collections.OrderedDict( - (k, - pr_rgn[k]) for k in sorted( - pr_rgn.keys())) - metrics_dictionary["RESULTS"][model_version][refabbv][ - parameters.realization] = pr - - # OUTPUT INTERPOLATED MODEL CLIMATOLOGIES - # Only the first time thru an obs set (always the - # same after) - if not args.dry_run and hasattr(parameters, "save_mod_clims") and \ - parameters.save_mod_clims is True and ref == refs[0]: - CLIM = pcmdi_metrics.io.base.Base( - os.path.join(parameters. - model_clims_interpolated_output, region_name), - parameters.filename_output_template) - CLIM.level = OUT.level - CLIM.model_version = model_version - CLIM.table = table_realm - CLIM.period = period - CLIM.case_id = case_id - CLIM.set_target_grid( - parameters.targetGrid, - regridTool, - regridMethod) - CLIM.variable = var - CLIM.region = region_name - CLIM.realization = parameters.realization - applyCustomKeys( - CLIM, - parameters.custom_keys, - var) - CLIM.write(dm, type="nc", id=var) - - break - except Exception as err: - dup.tb = args.traceback - dup("Error while processing observation %s" % ref + - " for variable %s:\n\t%s" % ( - var, str(err))) - dup.tb = False - # Done with obs and models loops , let's dum before next var - # Ok at this point we need to add the metrics def in the dictionary so - # that it is stored - metrics_dictionary["METRICS"] = metrics_def_dictionary - # OUTPUT RESULTS IN PYTHON DICTIONARY TO BOTH JSON AND ASCII FILES - if not args.dry_run: - OUT.write( - metrics_dictionary, - json_structure=["model", "reference", "rip", "region", "statistic", "season"], - indent=4, - separators=( - ',', - ': ')) - # CREATE OUTPUT AS ASCII FILE - OUT.write(metrics_dictionary, mode="w", type="txt") - except Exception as err: - dup.tb = args.traceback - dup("Error while processing variable %s:\n\t%s" % (var, err)) - dup.tb = False -dup("Done. Check log at: %s" % Efile.name) diff --git a/tests/basepmpdriver.py b/tests/basepmpdriver.py index cd9319a64..d8b024886 100644 --- a/tests/basepmpdriver.py +++ b/tests/basepmpdriver.py @@ -31,8 +31,7 @@ def runPMP(self,parameterFile): print() subprocess.call( shlex.split( - #"pcmdi_metrics_driver_legacy.py -p %s %s" % - "pcmdi_metrics_driver.py -p %s %s" % + "mean_climate_driver.py -p %s %s" % (parameterFile, tb))) parameters,files = self.assertFilesOut(parameterFile) @@ -79,6 +78,6 @@ def assertFilesOut(self,parameterFile): pthout.case_id = parameters.case_id files = glob.glob(pthout()) if len(files) == 0: - raise Exception("could not find output files after running pcmdi_metrics_driver on parameter file: %s" % parameterFile) + raise Exception("could not find output files after running mean_climate_driver on parameter file: %s" % parameterFile) return parameters, files From 03d22fdc7abbbbfacf754dfa5c12d6ce2025c0ff Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 20 Sep 2018 16:34:13 -0700 Subject: [PATCH 51/84] tunring diurnal cycle tests back on --- tests/test_pmp_diurnal.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/test_pmp_diurnal.py b/tests/test_pmp_diurnal.py index 22f8cb690..26134fe35 100644 --- a/tests/test_pmp_diurnal.py +++ b/tests/test_pmp_diurnal.py @@ -31,14 +31,14 @@ def compare_nc(self,test_name): self.assertSame(test,good) - def teistDiurnaliComputeStdDailyMean(self): + def testDiurnaliComputeStdDailyMean(self): cmd = 'computeStdDailyMeansWrapped.py --mp test_data --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7' p = subprocess.Popen(shlex.split(cmd)) p.communicate() self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_std_of_dailymeans.nc") - def teistFourierDiurnalAllGridWrapped(self): + def testFourierDiurnalAllGridWrapped(self): cmd = 'fourierDiurnalAllGridWrapped.py --mp test_data/results/nc --rd test_data/results/nc -m7' p = subprocess.Popen(shlex.split(cmd)) p.communicate() @@ -46,7 +46,7 @@ def teistFourierDiurnalAllGridWrapped(self): self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_tS.nc") self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_S.nc") - def teistDiurnalStdDailyVariance(self): + def testDiurnalStdDailyVariance(self): self.runJsoner("std_of_dailymeansWrappedInOut.py","pr_Jul_1999_2005_std_of_dailymeans.json") def runJsoner(self,script,json_file): cmd = '{} --region_name=TROPICS --lat1=-30. --lat2=30. --lon1=0. --lon2=360 --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_S.nc"'.format(script) @@ -65,7 +65,7 @@ def runJsoner(self,script,json_file): good = json.load(good) self.assertEqual(test["RESULTS"],good["RESULTS"]) """ - def teistCompositeDiurnalStatisticsWrapped(self): + def testCompositeDiurnalStatisticsWrapped(self): cmd = 'compositeDiurnalStatisticsWrapped.py --mp test_data --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7' p = subprocess.Popen(shlex.split(cmd)) p.communicate() @@ -73,16 +73,16 @@ def teistCompositeDiurnalStatisticsWrapped(self): self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_diurnal_std.nc") self.compare_nc("results/nc/pr_CMCC_LocalSolarTimes.nc") - def teistStd_of_hourlyvaluesWrappedInOut(self): + def testStd_of_hourlyvaluesWrappedInOut(self): self.runJsoner("std_of_hourlyvaluesWrappedInOut.py","pr_Jul_1999-2005_std_of_hourlymeans.json") - def teistStd_of_meandiurnalcycWrappedInOut(self): + def testStd_of_meandiurnalcycWrappedInOut(self): self.runJsoner("std_of_meandiurnalcycWrappedInOut.py","pr_Jul_1999-2005_std_of_meandiurnalcyc.json") def testSavg_fourierWrappedInOut(self): self.runJsoner("savg_fourierWrappedInOut.py","pr_Jul_1999-2005_savg_DiurnalFourier.json") - def teistfourierDiurnalGridpoints(self): + def testfourierDiurnalGridpoints(self): cmd = 'fourierDiurnalGridpoints.py --mp tests/diurnal/results/nc --rd test_data/results/ascii' p = subprocess.Popen(shlex.split(cmd)) p.communicate() From d1c65e305ec9cabc09c262ca86c20023594e7378 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Mon, 24 Sep 2018 11:16:33 -0700 Subject: [PATCH 52/84] fixed dirunal cycle test suite Test were expecting same pattern for all json file, but it depends on the script ran, added a parm to runJSONEr for this Input datsa where expcted to be in some local directory but they are now pre-downloaded by test suite and in cdat_info.get_sampledata_path() location --- .../compositeDiurnalStatisticsWrapped.py | 5 ++-- .../scripts/computeStdDailyMeansWrapped.py | 1 + tests/test_pmp_diurnal.py | 25 +++++++++++-------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py b/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py index 8e908afd1..ae00ec152 100755 --- a/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py +++ b/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py @@ -44,7 +44,7 @@ def compute(params): print('Opening %s ...' % fileName) f = cdms2.open(fileName) -# Composite-mean and composite-s.d diurnal cycle for month and year(s): + # Composite-mean and composite-s.d diurnal cycle for month and year(s): iYear = 0 for year in range(args.firstyear, args.lastyear + 1): print('Year %s:' % year) @@ -77,7 +77,7 @@ def compute(params): nlats = dimensions[1] nlons = dimensions[2] deltaH = 24. / N - dayspermo = tvarb.shape[0] / N + dayspermo = tvarb.shape[0] // N print(' %d timepoints per day, %d hr intervals between timepoints' % (N, deltaH)) comptime = firstday.getTime() modellons = tvarb.getLongitude() @@ -221,5 +221,4 @@ def compute(params): print("FILES:", fileList) params = [INPUT(args, name, template) for name in fileList] print("PARAMS:", params) - cdp.cdp_run.multiprocess(compute, params, num_workers=args.num_workers) diff --git a/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py b/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py index cab47b55d..a1f79ac91 100755 --- a/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py +++ b/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py @@ -143,6 +143,7 @@ def compute(params): template.variable = varbname fileList = glob.glob(os.path.join(directory, template())) +print("DIRE GLOB:",os.path.join(directory, template())) print("FILES:", fileList) params = [INPUT(args, name, template) for name in fileList] diff --git a/tests/test_pmp_diurnal.py b/tests/test_pmp_diurnal.py index 26134fe35..0ec933337 100644 --- a/tests/test_pmp_diurnal.py +++ b/tests/test_pmp_diurnal.py @@ -23,23 +23,25 @@ def compare_nc(self,test_name): test_out = cdms2.open(os.path.join("test_data",test_name)) good_out = cdms2.open(os.path.join("tests/diurnal",test_name)) + print("Checking same variables are present as in {}".format(good_name)) self.assertEqual(list(test_out.variables.keys()),list(good_out.variables.keys())) for v in list(good_out.variables.keys()): + print("Checking variable {} is correct".format(v)) test = test_out(v) good = good_out(v) - self.assertSame(test,good) def testDiurnaliComputeStdDailyMean(self): - cmd = 'computeStdDailyMeansWrapped.py --mp test_data --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7' + data_pth = cdat_info.get_sampledata_path() + cmd = 'computeStdDailyMeansWrapped.py --mp {} --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7'.format(data_pth) p = subprocess.Popen(shlex.split(cmd)) p.communicate() self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_std_of_dailymeans.nc") def testFourierDiurnalAllGridWrapped(self): - cmd = 'fourierDiurnalAllGridWrapped.py --mp test_data/results/nc --rd test_data/results/nc -m7' + cmd = 'fourierDiurnalAllGridWrapped.py --mp tests/diurnal/results/nc --rd test_data/results/nc -m7' p = subprocess.Popen(shlex.split(cmd)) p.communicate() self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_tmean.nc") @@ -47,12 +49,12 @@ def testFourierDiurnalAllGridWrapped(self): self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_S.nc") def testDiurnalStdDailyVariance(self): - self.runJsoner("std_of_dailymeansWrappedInOut.py","pr_Jul_1999_2005_std_of_dailymeans.json") - def runJsoner(self,script,json_file): - cmd = '{} --region_name=TROPICS --lat1=-30. --lat2=30. --lon1=0. --lon2=360 --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_S.nc"'.format(script) + self.runJsoner("std_of_dailymeansWrappedInOut.py","pr_Jul_1999_2005_std_of_dailymeans.json","std_of_dailymeans") + def runJsoner(self,script,json_file,ext): + cmd = '{} --region_name=TROPICS --lat1=-30. --lat2=30. --lon1=0. --lon2=360 --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_{}.nc"'.format(script, ext) p = subprocess.Popen(shlex.split(cmd)) p.communicate() - cmd = '{} --append --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_S.nc"'.format(script) + cmd = '{} --append --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_{}.nc"'.format(script, ext) p = subprocess.Popen(shlex.split(cmd)) p.communicate() good = open("tests/diurnal/results/json/{}".format(json_file)) @@ -66,7 +68,8 @@ def runJsoner(self,script,json_file): self.assertEqual(test["RESULTS"],good["RESULTS"]) """ def testCompositeDiurnalStatisticsWrapped(self): - cmd = 'compositeDiurnalStatisticsWrapped.py --mp test_data --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7' + data_pth = cdat_info.get_sampledata_path() + cmd = 'compositeDiurnalStatisticsWrapped.py --mp {} --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7'.format(data_pth) p = subprocess.Popen(shlex.split(cmd)) p.communicate() self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_diurnal_avg.nc") @@ -74,13 +77,13 @@ def testCompositeDiurnalStatisticsWrapped(self): self.compare_nc("results/nc/pr_CMCC_LocalSolarTimes.nc") def testStd_of_hourlyvaluesWrappedInOut(self): - self.runJsoner("std_of_hourlyvaluesWrappedInOut.py","pr_Jul_1999-2005_std_of_hourlymeans.json") + self.runJsoner("std_of_hourlyvaluesWrappedInOut.py","pr_Jul_1999-2005_std_of_hourlymeans.json","diurnal_std") def testStd_of_meandiurnalcycWrappedInOut(self): - self.runJsoner("std_of_meandiurnalcycWrappedInOut.py","pr_Jul_1999-2005_std_of_meandiurnalcyc.json") + self.runJsoner("std_of_meandiurnalcycWrappedInOut.py","pr_Jul_1999-2005_std_of_meandiurnalcyc.json","diurnal_avg") def testSavg_fourierWrappedInOut(self): - self.runJsoner("savg_fourierWrappedInOut.py","pr_Jul_1999-2005_savg_DiurnalFourier.json") + self.runJsoner("savg_fourierWrappedInOut.py","pr_Jul_1999-2005_savg_DiurnalFourier.json","S") def testfourierDiurnalGridpoints(self): cmd = 'fourierDiurnalGridpoints.py --mp tests/diurnal/results/nc --rd test_data/results/ascii' From ebf67c8b79355e48be57a58d95bad50372a90ad8 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Mon, 24 Sep 2018 12:05:06 -0700 Subject: [PATCH 53/84] removed useless debug print statement --- src/python/diurnal/scripts/computeStdDailyMeansWrapped.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py b/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py index a1f79ac91..cab47b55d 100755 --- a/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py +++ b/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py @@ -143,7 +143,6 @@ def compute(params): template.variable = varbname fileList = glob.glob(os.path.join(directory, template())) -print("DIRE GLOB:",os.path.join(directory, template())) print("FILES:", fileList) params = [INPUT(args, name, template) for name in fileList] From daab94f82bbf3a0bcffe07984165365443b2f0f7 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Mon, 24 Sep 2018 13:07:45 -0700 Subject: [PATCH 54/84] thx @zshaheen2 --- src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py b/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py index ae00ec152..b487a3909 100755 --- a/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py +++ b/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py @@ -13,7 +13,7 @@ # 'GISS-E2-H', 'inmcm4', 'IPSL-CM5A-LR', 'IPSL-CM5A-MR', # 'MIROC4h', 'MIROC5', 'MIROC-ESM', 'MIROC-ESM-CHEM' -from __future__ import print_function +from __future__ import print_function, division import cdms2 import genutil import MV2 From 60e96b40612eba67a5ee70afdfdbe4efd5e6f6c9 Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Fri, 28 Sep 2018 10:54:12 -0700 Subject: [PATCH 55/84] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3195936e8..81c560321 100755 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ PCMDI metrics package (PMP) ====== [![stable version](https://img.shields.io/badge/stable%20version-1.2-brightgreen.svg)](https://github.com/PCMDI/pcmdi_metrics/releases/tag/1.2) -![repo size](https://reposs.herokuapp.com/?path=PCMDI/pcmdi_metrics) ![platforms](https://img.shields.io/badge/platforms-linux%20|%20osx-lightgrey.svg) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.809463.svg)](https://doi.org/10.5281/zenodo.809463) [![Anaconda-Server Badge](https://anaconda.org/pcmdi/pcmdi_metrics/badges/installer/conda.svg)](https://conda.anaconda.org/pcmdi) [![Anaconda-Server Badge](https://anaconda.org/pcmdi/pcmdi_metrics/badges/downloads.svg)](https://anaconda.org/pcmdi/pcmdi_metrics) [![CircleCI](https://circleci.com/gh/PCMDI/pcmdi_metrics.svg?style=svg)](https://circleci.com/gh/PCMDI/pcmdi_metrics) [![Coverage Status](https://coveralls.io/repos/github/PCMDI/pcmdi_metrics/badge.svg)](https://coveralls.io/github/PCMDI/pcmdi_metrics) +![repo size](https://reposs.herokuapp.com/?path=PCMDI/pcmdi_metrics) The PCMDI metrics package is used to objectively compare results from climate models with observations using well-established statistical tests. Results are produced in the context of all model simulations contributed to CMIP5 and earlier CMIP phases. Among other purposes, this enables modeling groups to evaluate changes during the development cycle in the context of the structural error distribution of the multi-model ensemble. Currently, the comparisons emphasize large- to global-scale annual cycle performance metrics. Current work in v1.x development branches include established statistics for ENSO, regional monsoon precipitation, and the diurnal cycle of precipitation. These diagnostics will be included in a future PMP release. From 3c6d0ae900032d3b513a205241e7492a43946f77 Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Mon, 1 Oct 2018 16:20:47 -0700 Subject: [PATCH 56/84] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 81c560321..7520f032e 100755 --- a/README.md +++ b/README.md @@ -29,14 +29,14 @@ An overview for using the package and template scripts are detailed on the [Usin Some installation support for CMIP participating modeling groups is available: pcmdi-metrics@llnl.gov - PMP versions ------------ -v1.0 - Prototype version of the PMP +v1.2 - Tied to CDAT 8.0. Now includes extensive regression testing. New metrics: Diurnal cycle and intermittency of precipitation, Sperber and Wang Monsoon metrics + +v1.1.2 - Now managed through Anaconda, and tied to UV-CDAT 2.10. Weights on bias statistic added. Extensive provenance information incorporated into json files. v1.1 - First public release, emphasizing climatological statistics, with development branches for ENSO and regional monsoon precipitation indices -v1.1.2 - Now managed through Anaconda, and tied to UV-CDAT 2.10. Weights on bias statistic added. Extensive provenance information incorporated into json files. +v1.0 - Prototype version of the PMP -v1.2 - Tied to CDAT 8.0. Now includes extensive regression testing. New metrics: Diurnal Cycle, Sperber/Lee Monsoon, Monsoon Wang metrics From 822f5f85d292a78efda0f8efcca98b208a4b1de5 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Wed, 10 Oct 2018 06:49:15 -0700 Subject: [PATCH 57/84] portrait plot bug fix in python 3 env (#582) * make sure integer number used for reshape array, where python 3 returns integer/integer = float * fix flake8 tests * apply suggestion from @doutriaux1 * running tests one a t a time on travis or error logs are mangled --- .travis.yml | 2 +- src/python/graphics/portraits.py | 2 +- tests/test_pmp_flake8.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 90e4d15dd..b13ae6b61 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ script: - git clean -fd - source activate py3 - python setup.py install - - python run_tests.py -v2 + - python run_tests.py -v2 -n1 - source deactivate #after_success: diff --git a/src/python/graphics/portraits.py b/src/python/graphics/portraits.py index 54184a07b..cf8730ec1 100644 --- a/src/python/graphics/portraits.py +++ b/src/python/graphics/portraits.py @@ -1939,7 +1939,7 @@ def set_colormap(self): 92.9412, 100) - cols = MV2.reshape(cols, (len(cols) / 3, 3)) + cols = MV2.reshape(cols, (len(cols) // 3, 3)) for i in range(cols.shape[0]): co = self.x.getcolorcell(i) diff --git a/tests/test_pmp_flake8.py b/tests/test_pmp_flake8.py index e28d8761e..78e739122 100644 --- a/tests/test_pmp_flake8.py +++ b/tests/test_pmp_flake8.py @@ -25,7 +25,7 @@ def testFlake8(self): print() print() cmd = "flake8 --show-source --statistics " +\ - "--ignore=F999,F405,E121,E123,E126,E226,E24,E704 " +\ + "--ignore=F999,F405,E121,E123,E126,E226,E24,E704,W504 " +\ "--max-line-length=120 %s --exclude %s" % (pth,nopth) P = subprocess.Popen(shlex.split(cmd), stdin=subprocess.PIPE, From 4b2c17959d6fa6e3c088fb4e3a79e05d5b21347f Mon Sep 17 00:00:00 2001 From: Lina Muryanto <35277663+muryanto1@users.noreply.github.com> Date: Thu, 11 Oct 2018 07:32:24 -0700 Subject: [PATCH 58/84] add coverage for subprocesses (#578) * add coverage for subprocesses * adding more binaries to get coverage on * hoping to fix the pythno3 so issue * trying to firce py 3.6 otherwise it gets downgraded * using cdat-forge channel * ... --- .circleci/config.yml | 8 ++++---- .travis.yml | 6 ++++-- tests/coverage.json | 14 +++++++++++++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 60053db3c..01b7d5af3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,16 +17,16 @@ aliases: name: create_conda_env environment: PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5'" - CHANNELS: "-c cdat/label/nightly -c conda-forge -c cdat -c pcmdi" + CHANNELS: "-c cdat/label/nightly -c cdat-forge -c conda-forge -c cdat -c pcmdi" command: | export PATH=$WORKDIR/miniconda/bin:$PATH conda config --set always_yes yes --set changeps1 no conda update -y -q conda conda config --set anaconda_upload no if [[ $PY_VER = "py2" ]]; then - conda create -q -n $PY_VER $CHANNELS $PKGS $FFMPEG "python<3" + conda create -n $PY_VER -q -n $PY_VER $CHANNELS "python<3" $PKGS $FFMPEG else - conda create -q -n $PY_VER $CHANNELS $PKGS $FFMPEG "python>3" $COVERAGE_PKGS + conda create -n $PY_VER -q -n $PY_VER $CHANNELS "python>3" $PKGS $FFMPEG $COVERAGE_PKGS fi - &setup_pmp @@ -59,7 +59,7 @@ aliases: - &conda_upload name: conda_upload environment: - CHANNELS: "-c conda-forge -c cdat -c pcmdi" + CHANNELS: "-c cdat-forge -c conda-forge -c cdat -c pcmdi" PKG_NAME: "pcmdi_metrics" LABEL: "nightly" command: | diff --git a/.travis.yml b/.travis.yml index b13ae6b61..8e78f134b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,8 +19,10 @@ script: - export CDAT_ANONYMOUS_LOG="False" - export FFMPEG="ffmpeg" - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export FFMPEG="'ffmpeg>4' 'libpng>1.6.34'"; fi - - conda create -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" "python<3" scipy $FFMPEG - - conda create -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" "python>3" scipy $FFMPEG + - conda create -n py2 -c conda-forge/label/gcc7 "python<3" + - conda install -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" scipy $FFMPEG + - conda create -n py3 -c conda-forge/label/gcc7 "python>3" + - conda install -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" scipy $FFMPEG # Useful for debugging any issues with conda - conda info -a - source activate py2 diff --git a/tests/coverage.json b/tests/coverage.json index 1f485ccda..413b9a591 100644 --- a/tests/coverage.json +++ b/tests/coverage.json @@ -1,3 +1,15 @@ { - "include": ["pcmdi_metrics", "pcmdi_metrics/pcmdi"] + "include": ["pcmdi_metrics"], + "subprocess": ["bin/mean_climate_driver.py", + "bin/pcmdi_compute_climatologies.py", + "bin/computeStdDailyMeansWrapped.py", + "bin/fourierDiurnalAllGridWrapped.py", + "bin/compositeDiurnalStatisticsWrapped.py", + "bin/std_of_hourlyvaluesWrappedInOut.py", + "bin/std_of_meandiurnalcycWrappedInOut.py", + "bin/savg_fourierWrappedInOut.py", + "bin/fourierDiurnalGridpoints.py", + "bin/std_of_dailymeansWrappedInOut.py", + "bin/mpindex_compute.py", + "bin/driver_monsoon_sperber.py"] } From 1635473886c0f223beb13e1bd58da76028b402b7 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 25 Oct 2018 06:05:43 -0700 Subject: [PATCH 59/84] Climo output name (#579) * this will update the climo output path * ok that Should work * added import genutil * trying to add genutil * merged master in * flake8ed * subAxis cdms does not understand None, also only overwrite if set in code * removed useless file --- .travis.yml | 2 +- .../clim/pcmdi_compute_climatologies.py | 546 ------------------ .../scripts/pcmdi_compute_climatologies.py | 47 +- 3 files changed, 38 insertions(+), 557 deletions(-) delete mode 100644 src/python/pcmdi/scripts/clim/pcmdi_compute_climatologies.py diff --git a/.travis.yml b/.travis.yml index 8e78f134b..6853348a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,7 +31,7 @@ script: - git clean -fd - source activate py3 - python setup.py install - - python run_tests.py -v2 -n1 + - python run_tests.py -v2 - source deactivate #after_success: diff --git a/src/python/pcmdi/scripts/clim/pcmdi_compute_climatologies.py b/src/python/pcmdi/scripts/clim/pcmdi_compute_climatologies.py deleted file mode 100644 index 835a59893..000000000 --- a/src/python/pcmdi/scripts/clim/pcmdi_compute_climatologies.py +++ /dev/null @@ -1,546 +0,0 @@ -#!/usr/bin/env python -from __future__ import print_function -import os -import tempfile -import cdms2 -import cdutil -import numpy -import cdtime -from pcmdi_metrics.driver.pmp_parser import PMPParser - -try: - import cmor - hasCMOR = True -except Exception: - hasCMOR = False - -parser = PMPParser(description='Generates Climatologies from files') - -p = parser.add_argument_group('processing') -p.add_argument( - "--verbose", - action="store_true", - dest="verbose", - help="verbose output", - default=True) -p.add_argument( - "--quiet", - action="store_false", - dest="verbose", - help="quiet output") -p.add_argument("-v", "--var", - dest="var", - default=None, - # required=True, - help="variable to use for climatology") -p.add_argument("-t", "--threshold", - dest='threshold', - default=.5, - type=float, - help="Threshold bellow which a season is considered as " + - "not having enough data to be computed") -p.add_argument("-c", "--climatological_season", - dest="seasons", - default=["all"], - nargs="*", - choices=["djf", "DJF", "ann", "ANN", "all", "ALL", - "mam", "MAM", "jja", "JJA", "son", "SON", "year", - "YEAR"], - help="Which season you wish to produce" - ) -p.add_argument("-s", "--start", - dest="start", - default=None, - help="Start for climatology: date, value or index " + - "as determined by -i arg") -p.add_argument("-e", "--end", - dest="end", - default=None, - help="End for climatology: date, value or index " + - "as determined by -I arg") -p.add_argument("-i", "--indexation-type", - dest="index", - default="date", - choices=["date", "value", "index"], - help="indexation type") -p.add_argument("-f", "--file", - dest="file", - help="Input file") -p.add_argument("-b", "--bounds", - action="store_true", - dest="bounds", - default=False, - help="reset bounds to monthly") -# parser.use("results_dir", p) -parser.use("results_dir") -c = parser.add_argument_group("CMOR options") -c.add_argument("--use-cmor", dest="cmor", default=False, action="store_true") -c.add_argument("-D", "--drs", - action="store_true", - dest="drs", - default=False, - help="Use drs for output path" - ) -c.add_argument("-T", "--table", - dest="table", - nargs="+", - help="CMOR table") -c.add_argument("-U", "--units", - dest="units", - help="variable(s) units") -c.add_argument("-V", "--cf-var", - dest="cf_var", - help="variable name in CMOR tables") -c.add_argument("-E", "--experiment_id", default=None, - help="'experiment id' for this run (will try to get from input file", - ) -c.add_argument("-I", "--institution", default=None, - help="'institution' for this run (will try to get from input file", - ) -c.add_argument("-S", "--source", default=None, - help="'source' for this run (will try to get from input file", - ) -c.add_argument("-X", "--variable_extra_args", default="{}", - help="Potential extra args to pass to cmor_variable call", - ) - -cmor_xtra_args = ["contact", "references", "model_id", - "institute_id", "forcing", - "parent_experiment_id", - "parent_experiment_rip", - "realization", "comment", "history", - "branch_time", "physics_version", - "initialization_method", - ] -for x in cmor_xtra_args: - c.add_argument("--%s" % x, default=None, - dest=x, - help="'%s' for this run (will try to get from input file" % x - ) - -A = parser.get_parameter() -if len(A.file) == 0: - raise RuntimeError("You need to provide at least one file for input") - -if not os.path.exists(A.file): - raise RuntimeError("file '%s' doe not exits" % A.file) - -# season dictionary -season_function = { - "djf": cdutil.times.DJF, - "mam": cdutil.times.MAM, - "jja": cdutil.times.JJA, - "son": cdutil.times.SON, - "ann": cdutil.times.ANNUALCYCLE, - "year": cdutil.times.YEAR, -} - -filein = cdms2.open(A.file) - - -def getCalendarName(cal): - for att in dir(cdtime): - if getattr(cdtime, att) == cal: - return att[:-8].lower() - - -def dump_cmor(A, s, time, bounds): - inst = checkCMORAttribute("institution") - src = checkCMORAttribute("source") - exp = checkCMORAttribute("experiment_id") - xtra = {} - for x in cmor_xtra_args: - try: - xtra[x] = checkCMORAttribute(x) - except Exception: - pass - cal = data.getTime().getCalendar() # cmor understand cdms calendars - cal_name = getCalendarName(cal) - if A.verbose: - cmor_verbose = cmor.CMOR_NORMAL - else: - cmor_verbose = cmor.CMOR_QUIET - tables_dir = os.path.dirname(A.table) - cmor.setup( - inpath=tables_dir, - netcdf_file_action=cmor.CMOR_REPLACE, - set_verbosity=cmor_verbose, - exit_control=cmor.CMOR_NORMAL, - # logfile='logfile', - create_subdirectories=int(A.drs)) - - tmp = tempfile.NamedTemporaryFile(mode="w") - tmp.write("""{{ - "_control_vocabulary_file": "CMIP6_CV.json", - "_AXIS_ENTRY_FILE": "CMIP6_coordinate.json", - "_FORMULA_VAR_FILE": "CMIP6_formula_terms.json", - "_cmip6_option": "CMIP6", - - "tracking_prefix": "hdl:21.14100", - "activity_id": "ISMIP6", - - - "#output": "Root directory where files are written", - "outpath": "{}", - - "#experiment_id": "valid experiment_ids are found in CMIP6_CV.json", - "experiment_id": "{}", - "sub_experiment_id": "none", - "sub_experiment": "none", - - "source_type": "AOGCM", - "mip_era": "CMIP6", - "calendar": "{}", - - "realization_index": "{}", - "initialization_index": "{}", - "physics_index": "{}", - "forcing_index": "1", - - "#contact ": "Not required", - "contact ": "Python Coder (coder@a.b.c.com)", - - "#history": "not required, supplemented by CMOR", - "history": "Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.", - - "#comment": "Not required", - "comment": "", - "#references": "Not required", - "references": "Model described by Koder and Tolkien (J. Geophys. Res., 2001, 576-591). Also see http://www.GICC.su/giccm/doc/index.html 2XCO2 simulation described in Dorkey et al -. '(Clim. Dyn., 2003, 323-357.)'", - - "grid": "gs1x1", - "grid_label": "gr", - "nominal_resolution": "5 km", - - "institution_id": "{}", - - "parent_experiment_id": "histALL", - "parent_activity_id": "ISMIP6", - "parent_mip_era": "CMIP6", - - "parent_source_id": "PCMDI-test-1-0", - "parent_time_units": "days since 1970-01-01", - "parent_variant_label": "r123i1p33f5", - - "branch_method": "Spin-up documentation", - "branch_time_in_child": 2310.0, - "branch_time_in_parent": 12345.0, - - - "#run_variant": "Description of run variant (Recommended).", - "run_variant": "forcing: black carbon aerosol only", - - "#source_id": "Model Source", - "source_id": "{}", - - "#source": "source title, first part is source_id", - "source": "PCMDI's PMP", - - - "_history_template": "%s ;rewrote data to be consistent with for variable found in table .", - "#output_path_template": "Template for output path directory using tables keys or global attributes", - "output_path_template": "<_member_id>
", - "output_file_template": "
<_member_id>", - "license": "CMIP6 model data produced by Lawrence Livermore PCMDI is licensed under a Creative Commons Attribution ShareAlike 4.0 International License (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse for terms of use governing CMIP6 output, including citation requirements and proper acknowledgment. Further information about this data, including some limitations, can be found via the further_info_url (recorded as a global attribute in this file) and at https:///pcmdi.llnl.gov/. The data producers and data providers make no warranty, either express or implied, including, but not limited to, warranties of merchantability and fitness for a particular purpose. All liabilities arising from the supply of the information (including any liability arising in negligence) are excluded to the fullest extent permitted by law." -}} -""".format(A.results_dir, exp, cal_name, r, i, p, inst.split()[0], src)) # noqa - - tmp.flush() - cmor.dataset_json(tmp.name) - if not os.path.exists(A.table): - raise RuntimeError( - "No such file or directory for tables: %s" % A.table) - - print("Loading table: {}".format(os.path.abspath(A.table))) - table_content = open(A.table).read().replace("time", "time2") - table_content = table_content.replace("time22", "time2") - table = tempfile.NamedTemporaryFile("w") - table.write(table_content) - table.flush() - for table_name in ["formula_terms", "coordinate"]: - nm = "CMIP6_{}.json".format(table_name) - with open(os.path.join(os.path.dirname(table.name), nm), "w") as tmp: - tmp.write(open(os.path.join(tables_dir, nm)).read()) - - table = cmor.load_table(table.name) - - # Ok CMOR is ready let's create axes - cmor_axes = [] - for ax in s.getAxisList(): - if ax.isLatitude(): - table_entry = "latitude" - elif ax.isLongitude(): - table_entry = "longitude" - elif ax.isLevel(): # Need work here for sigma - table_entry = "plevs" - if ax.isTime(): - table_entry = "time2" - ntimes = len(ax) - axvals = numpy.array(values) - axbnds = numpy.array(bounds) - axunits = Tunits - else: - axvals = ax[:] - axbnds = ax.getBounds() - axunits = ax.units - ax_id = cmor.axis(table_entry=table_entry, - units=axunits, - coord_vals=axvals, - cell_bounds=axbnds - ) - cmor_axes.append(ax_id) - # Now create the variable itself - if A.cf_var is not None: - var_entry = A.cf_var - else: - var_entry = data.id - - units = A.units - if units is None: - units = data.units - - kw = eval(A.variable_extra_args) - if not isinstance(kw, dict): - raise RuntimeError( - "invalid evaled type for -X args, should be evaled as a dict, e.g: -X '{\"positive\":\"up\"}'") - var_id = cmor.variable(table_entry=var_entry, - units=units, - axis_ids=cmor_axes, - type=s.typecode(), - missing_value=s.missing_value, - **kw) - - # And finally write the data - data2 = s.filled(s.missing_value) - cmor.write(var_id, data2, ntimes_passed=ntimes) - - # Close cmor - path = cmor.close(var_id, file_name=True) - if season.lower() == "ann": - suffix = "ac" - else: - suffix = season - path2 = path.replace("-clim.nc", "-clim-%s.nc" % suffix) - os.rename(path, path2) - if A.verbose: - print("Saved to:", path2) - - cmor.close() - if A.verbose: - print("closed cmor") - - -def checkCMORAttribute(att, source=filein): - res = getattr(A, att) - if res is None: - if hasattr(source, att): - res = getattr(source, att) - else: - raise RuntimeError("Could not figure out the CMOR '%s'" % att) - return res - - -def store_globals(file): - globals = {} - for att in file.listglobal(): - globals[att] = getattr(file, att) - return globals - - -def store_attributes(var): - attributes = {} - for att in var.listattributes(): - attributes[att] = getattr(var, att) - return attributes - - -fvars = list(filein.variables.keys()) -v = A.var -if v not in fvars: - raise RuntimeError( - "Variable '%s' is not contained in input file(s)" % - v) -V = filein[v] -tim = V.getTime().clone() -# "monthly" -if A.bounds: - cdutil.times.setTimeBoundsMonthly(tim) -# Now make sure we can get the requested period -if A.start is None: - i0 = 0 -else: # Ok user specified a start time - if A.index == "index": # index-based slicing - if int(A.start) >= len(tim): - raise RuntimeError( - "For variable %s you requested start time to be at index: %i but the file only has %i time steps" % - (v, int( - A.start), len(tim))) - i0 = int(A.start) - elif A.index == "value": # actual value used for slicing - v0 = float(A.start) - try: - i0, tmp = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find value %s for start time for variable %s" % - (A.start, v)) - elif A.index == "date": - v0 = A.start - # When too close from bounds it messes it up, adding a minute seems to help - v0 = cdtime.s2c(A.start) - v0 = v0.add(1, cdtime.Minute) - try: - i0, tmp = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find start time %s for variable: %s" % - (A.start, v)) - -if A.end is None: - i1 = None -else: # Ok user specified a end time - if A.index == "index": # index-based slicing - if int(A.end) >= len(tim): - raise RuntimeError( - "For variable %s you requested end time to be at index: %i but the file only has %i time steps" % - (v, int( - A.end), len(tim))) - i1 = int(A.end) - elif A.index == "value": # actual value used for slicing - v0 = float(A.end) - try: - tmp, i1 = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find value %s for end time for variable %s" % - (A.end, v)) - elif A.index == "date": - v0 = A.end - # When too close from bounds it messes it up, adding a minute seems to help - v0 = cdtime.s2c(A.end) - v0 = v0.add(1, cdtime.Minute) - try: - tmp, i1 = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find end time %s for variable: %s" % - (A.end, v)) -# Read in data -data = V(time=slice(i0, i1)) -if A.verbose: - print("DATA:", data.shape, data.getTime().asComponentTime() - [0], data.getTime().asComponentTime()[-1]) -if A.bounds: - cdutil.times.setTimeBoundsMonthly(data) -# Now we can actually read and compute the climo -seasons = [s.lower() for s in A.seasons] -if "all" in seasons: - seasons = ["djf", "mam", "jja", "son", "year", "ann"] - -for season in seasons: - s = season_function[season].climatology( - data, criteriaarg=[A.threshold, None]) - g = season_function[season].get(data, criteriaarg=[A.threshold, None]) - # Ok we know we have monthly data - # We want to tweak bounds - T = data.getTime() - Tg = g.getTime() - istart = 0 - while numpy.ma.allequal(g[istart].mask, True): - istart += 1 - iend = -1 - while numpy.ma.allequal(g[iend].mask, True): - iend -= 1 - if iend == -1: - iend = None - else: - iend += 1 - Tg = Tg.subAxis(istart, iend) - - cal = T.getCalendar() - cal_name = getCalendarName(cal) - Tunits = T.units - bnds = T.getBounds() - tc = T.asComponentTime() - - if A.verbose: - print("TG:", Tg.asComponentTime()[0]) - print("START END THRESHOLD:", istart, iend, A.threshold, len(Tg)) - # print "SEASON:", season, "ORIGINAL:", T.asComponentTime() - b1 = cdtime.reltime(Tg.getBounds()[0][0], Tg.units) - b2 = cdtime.reltime(Tg.getBounds()[-1][1], Tg.units) - - # First and last time points - y1 = cdtime.reltime(Tg[0], T.units) - y2 = cdtime.reltime(Tg[-1], T.units) - - # Mid year is: - yr = (y2.value + y1.value) / 2. - y = cdtime.reltime(yr, T.units).tocomp(cal).year - - if A.verbose: - print("We found data from ", y1.tocomp(cal), - "to", y2.tocomp(cal), "MID YEAR:", y) - print("bounds:", b1.tocomp(cal), b2.tocomp(cal)) - - values = [] - bounds = [] - - # Loop thru clim month and set value and bounds appropriately - ts = s.getTime().asComponentTime() - for ii in range(s.shape[0]): - t = ts[ii] - t.year = y - values.append(t.torel(Tunits, cal).value) - if (s.shape[0] > 1): - B1 = b1.tocomp(cal).add(ii, cdtime.Month) - B2 = b2.tocomp(cal).add(ii - s.shape[0] + 1, cdtime.Month) - else: - B1 = b1 - B2 = b2 - # b2.year = y - # b1.year = y - # if b1.cmp(b2) > 0: # ooops - # if b1.month>b2.month and b1.month-b2.month!=11: - # b1.year -= 1 - # else: - # b2.year += 1 - # if b1.month == b2.month: - # b2.year = b1.year+1 - if A.verbose: - print(B1.tocomp(cal), "<", t, "<", B2.tocomp(cal)) - bounds.append([B1.torel(Tunits, cal).value, - B2.torel(Tunits, cal).value]) - -model_id = checkCMORAttribute("model_id") -exp = checkCMORAttribute("experiment_id") -r = checkCMORAttribute("realization") -i = checkCMORAttribute("initialization_method") -p = checkCMORAttribute("physics_version") -if A.cmor and hasCMOR: - dump_cmor(A, s, values, bounds) -else: - if A.cmor and not hasCMOR: - print("Your Python does not have CMOR, using regular cdms to write out files") - print("MODEL ID:", model_id) - if not os.path.exists(A.results_dir): - os.makedirs(A.results_dir) - end_tc = tc[-1].add(1, cdtime.Month) - nm = os.path.join(A.results_dir, "{}_PMP_{}_{}_r{}i{}p{}_{}{:02d}-{}{:02d}-clim-{}.nc".format( - v, model_id, exp, r, i, p, tc[0].year, tc[0].month, end_tc.year, end_tc.month, season)) - f = cdms2.open(nm, "w") - # Global attributes copied - for att, value in store_globals(filein).items(): - setattr(f, att, value) - t = cdms2.createAxis(values) - t.setBounds(numpy.array(bounds)) - t.designateTime() - t.id = "time" - s.setAxis(0, t) - # copy orignal attributes - for att, value in store_attributes(V).items(): - setattr(s, att, value) - f.write(s, dtype=data.dtype) - f.close() - print("Results out to:", nm) diff --git a/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py b/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py index 2585b7211..6ada495c0 100644 --- a/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py +++ b/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py @@ -8,6 +8,7 @@ import cdtime from pcmdi_metrics.driver.pmp_parser import PMPParser import glob +import genutil try: import cmor @@ -64,6 +65,12 @@ default="date", choices=["date", "value", "index"], help="indexation type") +p.add_argument("-o", "--output_filename_template", + help="template for output filename", + default="%(variable)_PMP_%(model_id)_%(experiment_id)_" + + "r%(realization)i%(initialization_method)p%(physics_version)" + + "_%(start)-%(end)-clim-%(season).nc" + ) p.add_argument("-f", "--filename_template", dest="filename_template", help="Input file template") @@ -141,7 +148,7 @@ filename_in = A.process_templated_argument(os.path.join(A.modpath, A.filename_template)) if A.verbose: - print("filename in after templating:", filename_in()) + print("filename in after templating:", filename_in()) filename = glob.glob(filename_in())[0] if not os.path.exists(filename): @@ -468,6 +475,8 @@ def store_attributes(var): iend = None else: iend += 1 + if iend is None: + iend = len(Tg) Tg = Tg.subAxis(istart, iend) cal = T.getCalendar() @@ -525,23 +534,41 @@ def store_attributes(var): bounds.append([B1.torel(Tunits, cal).value, B2.torel(Tunits, cal).value]) -model_id = checkCMORAttribute("model_id") -exp = checkCMORAttribute("experiment_id") -r = checkCMORAttribute("realization") -i = checkCMORAttribute("initialization_method") -p = checkCMORAttribute("physics_version") +fnmout = genutil.StringConstructor(A.output_filename_template) + +if "model_id" in fnmout.keys(): + model_id = checkCMORAttribute("model_id") +if "experiment_id" in fnmout.keys(): + experiment_id = checkCMORAttribute("experiment_id") +if "realization" in fnmout.keys(): + realization = checkCMORAttribute("realization") +if "initialization_method" in fnmout.keys(): + initialization = checkCMORAttribute("initialization_method") +if "physics_version" in fnmout.keys(): + physics_version = checkCMORAttribute("physics_version") if A.cmor and hasCMOR: dump_cmor(A, s, values, bounds) else: if A.cmor and not hasCMOR: print("Your Python does not have CMOR, using regular cdms to write out files") - if A.verbose: - print("MODEL ID:", model_id) if not os.path.exists(A.results_dir): os.makedirs(A.results_dir) end_tc = tc[-1].add(1, cdtime.Month) - nm = os.path.join(A.results_dir, "{}_PMP_{}_{}_r{}i{}p{}_{}{:02d}-{}{:02d}-clim-{}.nc".format( - v, model_id, exp, r, i, p, tc[0].year, tc[0].month, end_tc.year, end_tc.month, season)) + + # Populate fout template with values + start = "{}{:02d}".format(tc[0].year, tc[0].month) + end = "{}{:02d}".format(end_tc.year, end_tc.month) + for k in fnmout.keys(): + try: + setattr(fnmout, k, getattr(A, k)) + except Exception: + pass + # overwrite with locals + try: + setattr(fnmout, k, locals()[k]) + except Exception: + pass + nm = os.path.join(A.results_dir, fnmout()) f = cdms2.open(nm, "w") # Global attributes copied for att, value in store_globals(filein).items(): From 8cc11d6fd9812a00256db552e8204c7dd0ba335f Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 25 Oct 2018 09:08:03 -0700 Subject: [PATCH 60/84] first cut at getting a data downloader (#580) * first cut at getting a data downloader * fix typos noted by @durack1 --- setup.py | 1 + src/python/misc/scripts/get_pmp_data.py | 50 +++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/python/misc/scripts/get_pmp_data.py diff --git a/setup.py b/setup.py index 496604bcc..d539a2c20 100755 --- a/setup.py +++ b/setup.py @@ -59,6 +59,7 @@ scripts = ['src/python/pcmdi/scripts/mean_climate_driver.py', 'src/python/pcmdi/scripts/pcmdi_compute_climatologies.py', 'src/python/misc/scripts/parallelize_driver.py', + 'src/python/misc/scripts/get_pmp_data.py', 'src/python/monsoon_wang/scripts/mpindex_compute.py', 'src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py', ] diff --git a/src/python/misc/scripts/get_pmp_data.py b/src/python/misc/scripts/get_pmp_data.py new file mode 100644 index 000000000..3c8747caf --- /dev/null +++ b/src/python/misc/scripts/get_pmp_data.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +from __future__ import print_function +from pcmdi_metrics.driver.pmp_parser import PMPParser +import tempfile +import requests +import os +import cdat_info + + +def download_file(download_url_root, name, local_filename): + r = requests.get("%s/%s" % (download_url_root, name), stream=True) + with open(local_filename, 'wb') as f: + for chunk in r.iter_content(chunk_size=1024): + if chunk: # filter local_filename keep-alive new chunks + f.write(chunk) + + +parser = PMPParser(description='Get sample data') +parser.add_argument("--dataset", help="Download observation or sample data or both", + default="all", choices=["all", "obs", "sample"]) +parser.add_argument("--version", help="which version to use", default="latest") +parser.add_argument("--server", help="which server to use", + default="https://pcmdiweb.llnl.gov/pss/pmpdata") +parser.add_argument("--version_in_path", action="store_true", default=False, + help="Append version in root path, avoids clobbering versions") +parser.add_argument( + "--output-path", help="directory where to download", default=None) +# parser.use("num_workers") +p = parser.get_parameter() + +# Step1 prepare the paths to get the sample datafiles +pth = tempfile.mkdtemp() +files = [] +if p.dataset in ["all", "obs"]: # ok we need obs + download_file(p.server, "obs_{}.txt".format(p.version), "obs.txt") + files.append("obs.txt") +if p.dataset in ["all", "sample"]: + download_file(p.server, "sample_{}.txt".format(p.version), "sample.txt") + files.append("sample.txt") + +# Ok now we can download +for file in files: + # First do we clobber or not? + pathout = p.output_path + if p.version_in_path: + with open(file) as f: + header = f.readline().strip() + version = header.split("_")[-1] + pathout = os.path.join(p.output_path, version) + cdat_info.download_sample_data_files(file, path=pathout) From 0adc60aa68536afed1157b4c961bd84ae53988ef Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 14 Nov 2018 10:44:43 -0800 Subject: [PATCH 61/84] Switch to setuptools (#583) * take one, I think we will need to tweak more becasue of files in share directory * ok should be loading files from egg now * try fixes from testsrunner for coverage on subprocesses with --coverage-from-repo * just rerun linux_pmp_py3 to test coverage for now * rerun linux_pmp_py3 * trying subprocess coverage * correct coverage option * removiung lina special testrunner version * bring back all jobs * correct job dependency * noarch * mved script to correct location * fixes flake8 test and erorrs now reported on scripts (not checked before) * travis no jobs in parallel * new flake8 warning * another flake8 caught on py3 * testing new testsrunner * trying on mac * need to tell mac to run coverall... * typo * pmp mdriver seems to be ok w/o subprocess * missing file * linux only * seems like we need to turn autobounds off * didn't do dirunal at this point * flake8ed * turn back on all machines * removed unsed default_regions * more flake8 * travis keeps timing out and creating troubles, removing --- .circleci/config.yml | 22 +- .travis.yml | 38 -- {src/python => pcmdi_metrics}/__init__.py | 0 .../devel/example_dev/data/doc/README | 0 .../devel/example_dev/data/share/SAMPLE | 0 .../devel/example_dev/lib/__init__.py | 0 .../devel/example_dev/lib/file1.py | 0 .../devel/example_dev/scripts/example_dev1.py | 0 .../monsoon_wang/graphics/SeabarChart_mpl.py | 0 .../devel/monsoon_wang/graphics/__init__.py | 0 .../scripts/bar_chart_monsoon_precip_index.py | 0 .../diurnal/__init__.py | 0 .../diurnal/common.py | 0 .../diurnal/fourierFFT.py | 0 .../compositeDiurnalStatisticsWrapped.py | 0 .../scripts/computeStdDailyMeansWrapped.py | 0 .../scripts/fourierDiurnalAllGridWrapped.py | 0 .../scripts/fourierDiurnalGridpoints.py | 0 .../scripts/savg_fourierWrappedInOut.py | 7 +- .../scripts/std_of_dailymeansWrappedInOut.py | 7 +- .../std_of_hourlyvaluesWrappedInOut.py | 8 +- .../std_of_meandiurnalcycWrappedInOut.py | 7 +- .../driver/__init__.py | 0 .../driver/dataset.py | 4 +- .../scripts => pcmdi_metrics}/driver/model.py | 0 .../driver/observation.py | 0 .../driver/outputmetrics.py | 2 +- .../driver/pmp_parameter.py | 0 .../driver/pmp_parser.py | 0 .../graphics/__init__.py | 0 .../graphics/portraits.py | 0 .../graphics/share/portraits.scr | 0 {src/python => pcmdi_metrics}/io/__init__.py | 0 {src/python => pcmdi_metrics}/io/base.py | 3 + .../misc/scripts/get_pmp_data.py | 0 .../misc/scripts/parallelize_driver.py | 0 .../monsoon_sperber}/__init__.py | 0 .../monsoon_sperber}/argparse_functions.py | 0 .../monsoon_sperber}/calc_metrics.py | 0 .../monsoon_sperber}/divide_chunks.py | 0 .../monsoon_sperber/doc/myParam.py | 0 .../doc/plot_monsoon_domain.py | 0 .../monsoon_sperber}/model_land_only.py | 0 .../scripts/check_available_models.py | 0 .../scripts/driver_monsoon_sperber.py | 0 pcmdi_metrics/monsoon_wang/__init__.py | 2 + .../monsoon_precip_index_fncs.py | 0 .../monsoon_wang/monsoon_wang_driver.py | 312 ++++++++++++++ .../monsoon_wang/scripts/mpindex_compute.py | 6 + .../pcmdi/__init__.py | 1 + .../pcmdi/annual_mean.py | 0 .../python => pcmdi_metrics}/pcmdi/bias_xy.py | 0 .../pcmdi/bias_xyt.py | 0 {src/python => pcmdi_metrics}/pcmdi/cor_xy.py | 0 .../python => pcmdi_metrics}/pcmdi/cor_xyt.py | 0 {src/python => pcmdi_metrics}/pcmdi/io.py | 0 .../mean_climate_metrics_calculations.py | 0 .../pcmdi/mean_climate_metrics_driver.py | 404 +++++++++--------- .../python => pcmdi_metrics}/pcmdi/mean_xy.py | 0 .../pcmdi/meanabs_xy.py | 0 .../pcmdi/meanabs_xyt.py | 0 .../pcmdi/pmp_parser.py | 0 {src/python => pcmdi_metrics}/pcmdi/rms_0.py | 0 {src/python => pcmdi_metrics}/pcmdi/rms_xy.py | 0 .../python => pcmdi_metrics}/pcmdi/rms_xyt.py | 0 .../python => pcmdi_metrics}/pcmdi/rmsc_xy.py | 0 .../scripts/build_obs_meta_dictionary.py | 0 .../pcmdi/scripts/make_obs_clim.py | 0 .../pcmdi/scripts/make_obs_clim.sh | 0 .../pcmdi/scripts/make_obs_sftlf.py | 0 .../pcmdi/scripts/mean_climate_driver.py | 7 + .../pcmdi/scripts/obs_info_dictionary.json | 0 .../obs_info_dictionary.json.bak171117 | 0 .../scripts/pcmdi_compute_climatologies.py | 0 .../pcmdi/seasonal_mean.py | 0 {src/python => pcmdi_metrics}/pcmdi/std_xy.py | 0 .../python => pcmdi_metrics}/pcmdi/std_xyt.py | 0 .../pcmdi/zonal_mean.py | 0 recipes/pcmdi_metrics/meta.yaml | 34 -- recipes/pcmdi_metrics/meta.yaml.in | 1 + setup.py | 28 +- src/python/monsoon_wang/lib/__init__.py | 1 - .../monsoon_wang/scripts/mpindex_compute.py | 313 -------------- tests/basepmpdriver.py | 48 ++- tests/coverage.json | 14 +- tests/test_monsoon_wang.py | 50 ++- tests/test_pmp_diurnal.py | 37 +- tests/test_pmp_flake8.py | 4 +- tests/test_pmp_portrait_values_on.py | 8 +- tests/test_pmp_portraits.py | 10 +- 90 files changed, 672 insertions(+), 706 deletions(-) delete mode 100644 .travis.yml rename {src/python => pcmdi_metrics}/__init__.py (100%) rename {src/python => pcmdi_metrics}/devel/example_dev/data/doc/README (100%) rename {src/python => pcmdi_metrics}/devel/example_dev/data/share/SAMPLE (100%) rename {src/python => pcmdi_metrics}/devel/example_dev/lib/__init__.py (100%) rename {src/python => pcmdi_metrics}/devel/example_dev/lib/file1.py (100%) rename {src/python => pcmdi_metrics}/devel/example_dev/scripts/example_dev1.py (100%) rename {src/python => pcmdi_metrics}/devel/monsoon_wang/graphics/SeabarChart_mpl.py (100%) rename {src/python => pcmdi_metrics}/devel/monsoon_wang/graphics/__init__.py (100%) rename {src/python => pcmdi_metrics}/devel/monsoon_wang/scripts/bar_chart_monsoon_precip_index.py (100%) rename {src/python => pcmdi_metrics}/diurnal/__init__.py (100%) rename {src/python => pcmdi_metrics}/diurnal/common.py (100%) rename {src/python => pcmdi_metrics}/diurnal/fourierFFT.py (100%) rename {src/python => pcmdi_metrics}/diurnal/scripts/compositeDiurnalStatisticsWrapped.py (100%) rename {src/python => pcmdi_metrics}/diurnal/scripts/computeStdDailyMeansWrapped.py (100%) rename {src/python => pcmdi_metrics}/diurnal/scripts/fourierDiurnalAllGridWrapped.py (100%) rename {src/python => pcmdi_metrics}/diurnal/scripts/fourierDiurnalGridpoints.py (100%) rename {src/python => pcmdi_metrics}/diurnal/scripts/savg_fourierWrappedInOut.py (98%) rename {src/python => pcmdi_metrics}/diurnal/scripts/std_of_dailymeansWrappedInOut.py (97%) rename {src/python => pcmdi_metrics}/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py (97%) rename {src/python => pcmdi_metrics}/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py (97%) rename {src/python/pcmdi/scripts => pcmdi_metrics}/driver/__init__.py (100%) rename {src/python/pcmdi/scripts => pcmdi_metrics}/driver/dataset.py (96%) rename {src/python/pcmdi/scripts => pcmdi_metrics}/driver/model.py (100%) rename {src/python/pcmdi/scripts => pcmdi_metrics}/driver/observation.py (100%) rename {src/python/pcmdi/scripts => pcmdi_metrics}/driver/outputmetrics.py (99%) rename {src/python/pcmdi/scripts => pcmdi_metrics}/driver/pmp_parameter.py (100%) rename {src/python/pcmdi/scripts => pcmdi_metrics}/driver/pmp_parser.py (100%) rename {src/python => pcmdi_metrics}/graphics/__init__.py (100%) rename {src/python => pcmdi_metrics}/graphics/portraits.py (100%) rename {src/python => pcmdi_metrics}/graphics/share/portraits.scr (100%) rename {src/python => pcmdi_metrics}/io/__init__.py (100%) rename {src/python => pcmdi_metrics}/io/base.py (99%) rename {src/python => pcmdi_metrics}/misc/scripts/get_pmp_data.py (100%) rename {src/python => pcmdi_metrics}/misc/scripts/parallelize_driver.py (100%) rename {src/python/monsoon_sperber/lib => pcmdi_metrics/monsoon_sperber}/__init__.py (100%) rename {src/python/monsoon_sperber/lib => pcmdi_metrics/monsoon_sperber}/argparse_functions.py (100%) rename {src/python/monsoon_sperber/lib => pcmdi_metrics/monsoon_sperber}/calc_metrics.py (100%) rename {src/python/monsoon_sperber/lib => pcmdi_metrics/monsoon_sperber}/divide_chunks.py (100%) rename {src/python => pcmdi_metrics}/monsoon_sperber/doc/myParam.py (100%) rename {src/python => pcmdi_metrics}/monsoon_sperber/doc/plot_monsoon_domain.py (100%) rename {src/python/monsoon_sperber/lib => pcmdi_metrics/monsoon_sperber}/model_land_only.py (100%) rename {src/python => pcmdi_metrics}/monsoon_sperber/scripts/check_available_models.py (100%) rename {src/python => pcmdi_metrics}/monsoon_sperber/scripts/driver_monsoon_sperber.py (100%) create mode 100644 pcmdi_metrics/monsoon_wang/__init__.py rename {src/python/monsoon_wang/lib => pcmdi_metrics/monsoon_wang}/monsoon_precip_index_fncs.py (100%) create mode 100644 pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py create mode 100644 pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py rename {src/python => pcmdi_metrics}/pcmdi/__init__.py (86%) rename {src/python => pcmdi_metrics}/pcmdi/annual_mean.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/bias_xy.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/bias_xyt.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/cor_xy.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/cor_xyt.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/io.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/mean_climate_metrics_calculations.py (100%) rename src/python/pcmdi/scripts/mean_climate_driver.py => pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py (57%) rename {src/python => pcmdi_metrics}/pcmdi/mean_xy.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/meanabs_xy.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/meanabs_xyt.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/pmp_parser.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/rms_0.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/rms_xy.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/rms_xyt.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/rmsc_xy.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/scripts/build_obs_meta_dictionary.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/scripts/make_obs_clim.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/scripts/make_obs_clim.sh (100%) rename {src/python => pcmdi_metrics}/pcmdi/scripts/make_obs_sftlf.py (100%) create mode 100644 pcmdi_metrics/pcmdi/scripts/mean_climate_driver.py rename {src/python => pcmdi_metrics}/pcmdi/scripts/obs_info_dictionary.json (100%) rename {src/python => pcmdi_metrics}/pcmdi/scripts/obs_info_dictionary.json.bak171117 (100%) rename {src/python => pcmdi_metrics}/pcmdi/scripts/pcmdi_compute_climatologies.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/seasonal_mean.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/std_xy.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/std_xyt.py (100%) rename {src/python => pcmdi_metrics}/pcmdi/zonal_mean.py (100%) delete mode 100644 recipes/pcmdi_metrics/meta.yaml delete mode 100644 src/python/monsoon_wang/lib/__init__.py delete mode 100644 src/python/monsoon_wang/scripts/mpindex_compute.py diff --git a/.circleci/config.yml b/.circleci/config.yml index 01b7d5af3..5a43b6e59 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -24,9 +24,9 @@ aliases: conda update -y -q conda conda config --set anaconda_upload no if [[ $PY_VER = "py2" ]]; then - conda create -n $PY_VER -q -n $PY_VER $CHANNELS "python<3" $PKGS $FFMPEG + conda create -q -n $PY_VER $CHANNELS "python<3" $PKGS $FFMPEG else - conda create -n $PY_VER -q -n $PY_VER $CHANNELS "python>3" $PKGS $FFMPEG $COVERAGE_PKGS + conda create -q -n $PY_VER $CHANNELS "python>3" $PKGS $FFMPEG $COVERAGE_PKGS fi - &setup_pmp @@ -45,7 +45,6 @@ aliases: source activate $PY_VER python run_tests.py -H -v2 $COVERAGE RESULT=$? - cd .. echo "*** $PY_VER test result: "${RESULT} - &run_coveralls @@ -78,12 +77,8 @@ aliases: rm -rf cdp cp -r ../../recipes/pcmdi_metrics . python ./prep_for_build.py -l 1.2 - if [[ $PY_VER = 'py2' ]]; then - conda build $PKG_NAME $CHANNELS --python=27 - else - conda build $PKG_NAME $CHANNELS --python=36 - fi - anaconda -t $CONDA_UPLOAD_TOKEN upload -u pcmdi -l $LABEL $CONDA_BLD_PATH/$OS/$PKG_NAME-*tar.bz2 --force + conda build $PKG_NAME $CHANNELS --python=36 + anaconda -t $CONDA_UPLOAD_TOKEN upload -u pcmdi -l $LABEL $CONDA_BLD_PATH/noarch/$PKG_NAME-*tar.bz2 --force jobs: @@ -101,7 +96,6 @@ jobs: - run: *create_conda_env - run: *setup_pmp - run: *run_pmp_tests - - run: *conda_upload - store_artifacts: path: tests_html destination: tests_html @@ -117,13 +111,15 @@ jobs: OS: "osx-64" PY_VER: "py3" FFMPEG: "'ffmpeg>4' 'libpng>1.6.34'" + COVERAGE: "-c tests/coverage.json --coverage-from-egg" + COVERAGE_PKGS: "coverage coveralls" steps: - checkout - run: *setup_miniconda - run: *create_conda_env - run: *setup_pmp - run: *run_pmp_tests - - run: *conda_upload + - run: *run_coveralls - store_artifacts: path: tests_html destination: tests_html @@ -145,7 +141,6 @@ jobs: - run: *create_conda_env - run: *setup_pmp - run: *run_pmp_tests - - run: *conda_upload - store_artifacts: path: tests_html destination: tests_html @@ -161,7 +156,7 @@ jobs: OS: "linux-64" PY_VER: "py3" FFMPEG: "ffmpeg" - COVERAGE: "-c tests/coverage.json" + COVERAGE: "-c tests/coverage.json --coverage-from-egg" COVERAGE_PKGS: "coverage coveralls" steps: - checkout @@ -178,6 +173,7 @@ jobs: path: tests_png destination: tests_png + workflows: version: 2 pcmdi_metrics: diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 6853348a7..000000000 --- a/.travis.yml +++ /dev/null @@ -1,38 +0,0 @@ -os: - - linux - # - osx -language: python - - "2.7" - -sudo: false - -before_install: - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then wget https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -O miniconda.sh; fi - - if [ "$TRAVIS_OS_NAME" = "osx" ]; then curl -o miniconda.sh https://repo.continuum.io/miniconda/Miniconda2-latest-MacOSX-x86_64.sh ; fi - - export PATH="$HOME/miniconda/bin:$PATH" - - if [ ! -d ${HOME}/miniconda ]; then bash miniconda.sh -b -p $HOME/miniconda ; fi - - hash -r - - conda config --set always_yes yes --set changeps1 no - - conda update -y -q conda - -script: - - export CDAT_ANONYMOUS_LOG="False" - - export FFMPEG="ffmpeg" - - if [ "$TRAVIS_OS_NAME" = "osx" ]; then export FFMPEG="'ffmpeg>4' 'libpng>1.6.34'"; fi - - conda create -n py2 -c conda-forge/label/gcc7 "python<3" - - conda install -q -n py2 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" scipy $FFMPEG - - conda create -n py3 -c conda-forge/label/gcc7 "python>3" - - conda install -q -n py3 -c cdat/label/nightly -c conda-forge -c cdat -c pcmdi vcs vcsaddons mesalib testsrunner cia "proj4<5" scipy $FFMPEG - # Useful for debugging any issues with conda - - conda info -a - - source activate py2 - - python setup.py install - - python run_tests.py -v2 - - git clean -fd - - source activate py3 - - python setup.py install - - python run_tests.py -v2 - - source deactivate - -#after_success: -# - if [ "$TRAVIS_BRANCH" == "master" -a "$TRAVIS_PULL_REQUEST" == "false" ]; then conda install -n root conda-build anaconda-client && bash -x recipes/pcmdi_metrics/conda_upload.sh; fi diff --git a/src/python/__init__.py b/pcmdi_metrics/__init__.py similarity index 100% rename from src/python/__init__.py rename to pcmdi_metrics/__init__.py diff --git a/src/python/devel/example_dev/data/doc/README b/pcmdi_metrics/devel/example_dev/data/doc/README similarity index 100% rename from src/python/devel/example_dev/data/doc/README rename to pcmdi_metrics/devel/example_dev/data/doc/README diff --git a/src/python/devel/example_dev/data/share/SAMPLE b/pcmdi_metrics/devel/example_dev/data/share/SAMPLE similarity index 100% rename from src/python/devel/example_dev/data/share/SAMPLE rename to pcmdi_metrics/devel/example_dev/data/share/SAMPLE diff --git a/src/python/devel/example_dev/lib/__init__.py b/pcmdi_metrics/devel/example_dev/lib/__init__.py similarity index 100% rename from src/python/devel/example_dev/lib/__init__.py rename to pcmdi_metrics/devel/example_dev/lib/__init__.py diff --git a/src/python/devel/example_dev/lib/file1.py b/pcmdi_metrics/devel/example_dev/lib/file1.py similarity index 100% rename from src/python/devel/example_dev/lib/file1.py rename to pcmdi_metrics/devel/example_dev/lib/file1.py diff --git a/src/python/devel/example_dev/scripts/example_dev1.py b/pcmdi_metrics/devel/example_dev/scripts/example_dev1.py similarity index 100% rename from src/python/devel/example_dev/scripts/example_dev1.py rename to pcmdi_metrics/devel/example_dev/scripts/example_dev1.py diff --git a/src/python/devel/monsoon_wang/graphics/SeabarChart_mpl.py b/pcmdi_metrics/devel/monsoon_wang/graphics/SeabarChart_mpl.py similarity index 100% rename from src/python/devel/monsoon_wang/graphics/SeabarChart_mpl.py rename to pcmdi_metrics/devel/monsoon_wang/graphics/SeabarChart_mpl.py diff --git a/src/python/devel/monsoon_wang/graphics/__init__.py b/pcmdi_metrics/devel/monsoon_wang/graphics/__init__.py similarity index 100% rename from src/python/devel/monsoon_wang/graphics/__init__.py rename to pcmdi_metrics/devel/monsoon_wang/graphics/__init__.py diff --git a/src/python/devel/monsoon_wang/scripts/bar_chart_monsoon_precip_index.py b/pcmdi_metrics/devel/monsoon_wang/scripts/bar_chart_monsoon_precip_index.py similarity index 100% rename from src/python/devel/monsoon_wang/scripts/bar_chart_monsoon_precip_index.py rename to pcmdi_metrics/devel/monsoon_wang/scripts/bar_chart_monsoon_precip_index.py diff --git a/src/python/diurnal/__init__.py b/pcmdi_metrics/diurnal/__init__.py similarity index 100% rename from src/python/diurnal/__init__.py rename to pcmdi_metrics/diurnal/__init__.py diff --git a/src/python/diurnal/common.py b/pcmdi_metrics/diurnal/common.py similarity index 100% rename from src/python/diurnal/common.py rename to pcmdi_metrics/diurnal/common.py diff --git a/src/python/diurnal/fourierFFT.py b/pcmdi_metrics/diurnal/fourierFFT.py similarity index 100% rename from src/python/diurnal/fourierFFT.py rename to pcmdi_metrics/diurnal/fourierFFT.py diff --git a/src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py b/pcmdi_metrics/diurnal/scripts/compositeDiurnalStatisticsWrapped.py similarity index 100% rename from src/python/diurnal/scripts/compositeDiurnalStatisticsWrapped.py rename to pcmdi_metrics/diurnal/scripts/compositeDiurnalStatisticsWrapped.py diff --git a/src/python/diurnal/scripts/computeStdDailyMeansWrapped.py b/pcmdi_metrics/diurnal/scripts/computeStdDailyMeansWrapped.py similarity index 100% rename from src/python/diurnal/scripts/computeStdDailyMeansWrapped.py rename to pcmdi_metrics/diurnal/scripts/computeStdDailyMeansWrapped.py diff --git a/src/python/diurnal/scripts/fourierDiurnalAllGridWrapped.py b/pcmdi_metrics/diurnal/scripts/fourierDiurnalAllGridWrapped.py similarity index 100% rename from src/python/diurnal/scripts/fourierDiurnalAllGridWrapped.py rename to pcmdi_metrics/diurnal/scripts/fourierDiurnalAllGridWrapped.py diff --git a/src/python/diurnal/scripts/fourierDiurnalGridpoints.py b/pcmdi_metrics/diurnal/scripts/fourierDiurnalGridpoints.py similarity index 100% rename from src/python/diurnal/scripts/fourierDiurnalGridpoints.py rename to pcmdi_metrics/diurnal/scripts/fourierDiurnalGridpoints.py diff --git a/src/python/diurnal/scripts/savg_fourierWrappedInOut.py b/pcmdi_metrics/diurnal/scripts/savg_fourierWrappedInOut.py similarity index 98% rename from src/python/diurnal/scripts/savg_fourierWrappedInOut.py rename to pcmdi_metrics/diurnal/scripts/savg_fourierWrappedInOut.py index 6588712d6..a002e52d4 100755 --- a/src/python/diurnal/scripts/savg_fourierWrappedInOut.py +++ b/pcmdi_metrics/diurnal/scripts/savg_fourierWrappedInOut.py @@ -19,11 +19,11 @@ import cdutil import MV2 import os -import sys import glob import pcmdi_metrics import collections import json +import pkg_resources from pcmdi_metrics.diurnal.common import monthname_d, P, populateStringConstructor @@ -218,11 +218,10 @@ def spacevavg(tvarb1, tvarb2, sftlf, model): os.path.abspath( args.results_dir), os.path.basename(jsonname)) +egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") disclaimer = open( os.path.join( - sys.prefix, - "share", - "pmp", + egg_pth, "disclaimer.txt")).read() metrics_dictionary["DISCLAIMER"] = disclaimer metrics_dictionary["REFERENCE"] = "The statistics in this file are based on Covey et al., J Climate 2016" diff --git a/src/python/diurnal/scripts/std_of_dailymeansWrappedInOut.py b/pcmdi_metrics/diurnal/scripts/std_of_dailymeansWrappedInOut.py similarity index 97% rename from src/python/diurnal/scripts/std_of_dailymeansWrappedInOut.py rename to pcmdi_metrics/diurnal/scripts/std_of_dailymeansWrappedInOut.py index 2da7d1fe9..236a1ba23 100755 --- a/src/python/diurnal/scripts/std_of_dailymeansWrappedInOut.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_dailymeansWrappedInOut.py @@ -25,8 +25,8 @@ import pcmdi_metrics import collections import glob -import sys import json +import pkg_resources from pcmdi_metrics.diurnal.common import monthname_d, P, populateStringConstructor, INPUT import cdp @@ -116,11 +116,10 @@ def compute(param): os.path.abspath( args.results_dir), jsonFile()) +egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") disclaimer = open( os.path.join( - sys.prefix, - "share", - "pmp", + egg_pth, "disclaimer.txt")).read() metrics_dictionary["DISCLAIMER"] = disclaimer metrics_dictionary["REFERENCE"] = "The statistics in this file are based on Trenberth, Zhang & Gehne, J Hydromet. 2017" diff --git a/src/python/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py b/pcmdi_metrics/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py similarity index 97% rename from src/python/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py rename to pcmdi_metrics/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py index 5bea2d3f7..92a3075cc 100755 --- a/src/python/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py @@ -22,9 +22,9 @@ import pcmdi_metrics import collections import glob -import sys import cdp import json +import pkg_resources from pcmdi_metrics.diurnal.common import monthname_d, P, populateStringConstructor, INPUT @@ -126,12 +126,10 @@ def compute(param): os.path.abspath( args.results_dir), jsonFile()) - +egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") disclaimer = open( os.path.join( - sys.prefix, - "share", - "pmp", + egg_pth, "disclaimer.txt")).read() metrics_dictionary["DISCLAIMER"] = disclaimer metrics_dictionary["REFERENCE"] = "The statistics in this file are based on Trenberth, Zhang & Gehne, J Hydromet. 2017" diff --git a/src/python/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py b/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py similarity index 97% rename from src/python/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py rename to pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py index 0a1f8caff..a0b2f86e6 100755 --- a/src/python/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py @@ -19,10 +19,10 @@ import pcmdi_metrics import collections import glob -import sys import genutil import json import cdp +import pkg_resources from pcmdi_metrics.diurnal.common import monthname_d, P, populateStringConstructor, INPUT @@ -128,11 +128,10 @@ def compute(param): os.path.abspath( args.results_dir), jsonFile()) +egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") disclaimer = open( os.path.join( - sys.prefix, - "share", - "pmp", + egg_pth, "disclaimer.txt")).read() metrics_dictionary["DISCLAIMER"] = disclaimer metrics_dictionary["REFERENCE"] = "The statistics in this file are based on Trenberth, Zhang & Gehne, J Hydromet. 2017" diff --git a/src/python/pcmdi/scripts/driver/__init__.py b/pcmdi_metrics/driver/__init__.py similarity index 100% rename from src/python/pcmdi/scripts/driver/__init__.py rename to pcmdi_metrics/driver/__init__.py diff --git a/src/python/pcmdi/scripts/driver/dataset.py b/pcmdi_metrics/driver/dataset.py similarity index 96% rename from src/python/pcmdi/scripts/driver/dataset.py rename to pcmdi_metrics/driver/dataset.py index 7df2154c6..c4ad0852b 100644 --- a/src/python/pcmdi/scripts/driver/dataset.py +++ b/pcmdi_metrics/driver/dataset.py @@ -4,6 +4,7 @@ import logging import cdutil import cdms2 +import pkg_resources from pcmdi_metrics.io.base import Base from six import with_metaclass @@ -117,7 +118,8 @@ def get(self): @staticmethod def load_path_as_file_obj(name): ''' Returns a File object for the file named name. ''' - file_path = sys.prefix + '/share/pmp/' + name + egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") + file_path = os.path.join(egg_pth, name) opened_file = None try: opened_file = open(file_path) diff --git a/src/python/pcmdi/scripts/driver/model.py b/pcmdi_metrics/driver/model.py similarity index 100% rename from src/python/pcmdi/scripts/driver/model.py rename to pcmdi_metrics/driver/model.py diff --git a/src/python/pcmdi/scripts/driver/observation.py b/pcmdi_metrics/driver/observation.py similarity index 100% rename from src/python/pcmdi/scripts/driver/observation.py rename to pcmdi_metrics/driver/observation.py diff --git a/src/python/pcmdi/scripts/driver/outputmetrics.py b/pcmdi_metrics/driver/outputmetrics.py similarity index 99% rename from src/python/pcmdi/scripts/driver/outputmetrics.py rename to pcmdi_metrics/driver/outputmetrics.py index 2414b1d87..0650f0329 100644 --- a/src/python/pcmdi/scripts/driver/outputmetrics.py +++ b/pcmdi_metrics/driver/outputmetrics.py @@ -116,7 +116,7 @@ def calculate_and_output_metrics(self, ref, test): try: test_data = test() - except RuntimeError as e: + except RuntimeError: # THIS EXCEPTION IS RAISED TO BREAK OUT OF THE FOR LOOP IN PCMDI_DRIVER # THIS SHOULD BE A CUSTOM EXCEPTION (PrematureBreakError) raise RuntimeError('Need to skip model: %s' % test.obs_or_model) diff --git a/src/python/pcmdi/scripts/driver/pmp_parameter.py b/pcmdi_metrics/driver/pmp_parameter.py similarity index 100% rename from src/python/pcmdi/scripts/driver/pmp_parameter.py rename to pcmdi_metrics/driver/pmp_parameter.py diff --git a/src/python/pcmdi/scripts/driver/pmp_parser.py b/pcmdi_metrics/driver/pmp_parser.py similarity index 100% rename from src/python/pcmdi/scripts/driver/pmp_parser.py rename to pcmdi_metrics/driver/pmp_parser.py diff --git a/src/python/graphics/__init__.py b/pcmdi_metrics/graphics/__init__.py similarity index 100% rename from src/python/graphics/__init__.py rename to pcmdi_metrics/graphics/__init__.py diff --git a/src/python/graphics/portraits.py b/pcmdi_metrics/graphics/portraits.py similarity index 100% rename from src/python/graphics/portraits.py rename to pcmdi_metrics/graphics/portraits.py diff --git a/src/python/graphics/share/portraits.scr b/pcmdi_metrics/graphics/share/portraits.scr similarity index 100% rename from src/python/graphics/share/portraits.scr rename to pcmdi_metrics/graphics/share/portraits.scr diff --git a/src/python/io/__init__.py b/pcmdi_metrics/io/__init__.py similarity index 100% rename from src/python/io/__init__.py rename to pcmdi_metrics/io/__init__.py diff --git a/src/python/io/base.py b/pcmdi_metrics/io/base.py similarity index 99% rename from src/python/io/base.py rename to pcmdi_metrics/io/base.py index 8763e0490..b669eb3b8 100755 --- a/src/python/io/base.py +++ b/pcmdi_metrics/io/base.py @@ -531,9 +531,12 @@ def getAxisList(self): for a in self.json_struct: values.append(set()) self.get_axes_values_recursive(0, len(self.json_struct) - 1, self.data, values) + autoBounds = cdms2.getAutoBounds() + cdms2.setAutoBounds("off") for i, nm in enumerate(self.json_struct): axes.append(cdms2.createAxis(sorted(list(values[i])), id=nm)) self.axes = axes + cdms2.setAutoBounds(autoBounds) return self.axes def __call__(self, **kargs): diff --git a/src/python/misc/scripts/get_pmp_data.py b/pcmdi_metrics/misc/scripts/get_pmp_data.py similarity index 100% rename from src/python/misc/scripts/get_pmp_data.py rename to pcmdi_metrics/misc/scripts/get_pmp_data.py diff --git a/src/python/misc/scripts/parallelize_driver.py b/pcmdi_metrics/misc/scripts/parallelize_driver.py similarity index 100% rename from src/python/misc/scripts/parallelize_driver.py rename to pcmdi_metrics/misc/scripts/parallelize_driver.py diff --git a/src/python/monsoon_sperber/lib/__init__.py b/pcmdi_metrics/monsoon_sperber/__init__.py similarity index 100% rename from src/python/monsoon_sperber/lib/__init__.py rename to pcmdi_metrics/monsoon_sperber/__init__.py diff --git a/src/python/monsoon_sperber/lib/argparse_functions.py b/pcmdi_metrics/monsoon_sperber/argparse_functions.py similarity index 100% rename from src/python/monsoon_sperber/lib/argparse_functions.py rename to pcmdi_metrics/monsoon_sperber/argparse_functions.py diff --git a/src/python/monsoon_sperber/lib/calc_metrics.py b/pcmdi_metrics/monsoon_sperber/calc_metrics.py similarity index 100% rename from src/python/monsoon_sperber/lib/calc_metrics.py rename to pcmdi_metrics/monsoon_sperber/calc_metrics.py diff --git a/src/python/monsoon_sperber/lib/divide_chunks.py b/pcmdi_metrics/monsoon_sperber/divide_chunks.py similarity index 100% rename from src/python/monsoon_sperber/lib/divide_chunks.py rename to pcmdi_metrics/monsoon_sperber/divide_chunks.py diff --git a/src/python/monsoon_sperber/doc/myParam.py b/pcmdi_metrics/monsoon_sperber/doc/myParam.py similarity index 100% rename from src/python/monsoon_sperber/doc/myParam.py rename to pcmdi_metrics/monsoon_sperber/doc/myParam.py diff --git a/src/python/monsoon_sperber/doc/plot_monsoon_domain.py b/pcmdi_metrics/monsoon_sperber/doc/plot_monsoon_domain.py similarity index 100% rename from src/python/monsoon_sperber/doc/plot_monsoon_domain.py rename to pcmdi_metrics/monsoon_sperber/doc/plot_monsoon_domain.py diff --git a/src/python/monsoon_sperber/lib/model_land_only.py b/pcmdi_metrics/monsoon_sperber/model_land_only.py similarity index 100% rename from src/python/monsoon_sperber/lib/model_land_only.py rename to pcmdi_metrics/monsoon_sperber/model_land_only.py diff --git a/src/python/monsoon_sperber/scripts/check_available_models.py b/pcmdi_metrics/monsoon_sperber/scripts/check_available_models.py similarity index 100% rename from src/python/monsoon_sperber/scripts/check_available_models.py rename to pcmdi_metrics/monsoon_sperber/scripts/check_available_models.py diff --git a/src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py b/pcmdi_metrics/monsoon_sperber/scripts/driver_monsoon_sperber.py similarity index 100% rename from src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py rename to pcmdi_metrics/monsoon_sperber/scripts/driver_monsoon_sperber.py diff --git a/pcmdi_metrics/monsoon_wang/__init__.py b/pcmdi_metrics/monsoon_wang/__init__.py new file mode 100644 index 000000000..f0170cb2a --- /dev/null +++ b/pcmdi_metrics/monsoon_wang/__init__.py @@ -0,0 +1,2 @@ +from .monsoon_precip_index_fncs import mpd, mpi_skill_scores # noqa +from .monsoon_wang_driver import create_monsoon_wang_parser, monsoon_wang_runner # noqa \ No newline at end of file diff --git a/src/python/monsoon_wang/lib/monsoon_precip_index_fncs.py b/pcmdi_metrics/monsoon_wang/monsoon_precip_index_fncs.py similarity index 100% rename from src/python/monsoon_wang/lib/monsoon_precip_index_fncs.py rename to pcmdi_metrics/monsoon_wang/monsoon_precip_index_fncs.py diff --git a/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py b/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py new file mode 100644 index 000000000..2760a8b7b --- /dev/null +++ b/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py @@ -0,0 +1,312 @@ +#!/usr/bin/env python + +import cdms2 +import numpy +import os +from genutil import statistics +from pcmdi_metrics.pcmdi.pmp_parser import PMPParser +from pcmdi_metrics.monsoon_wang import mpd, mpi_skill_scores +import pcmdi_metrics +import collections +import glob +import pkg_resources + + +def create_monsoon_wang_parser(): + P = PMPParser() + + P.use("--modpath") + P.use("--modnames") + P.use("--results_dir") + P.use("--reference_data_path") + + P.add_argument("--outpj", "--outpathjsons", + type=str, + dest='outpathjsons', + default='.', + help="Output path for jsons") + P.add_argument("--outnj", "--outnamejson", + type=str, + dest='jsonname', + default='out.json', + help="Output path for jsons") + P.add_argument("-e", "--experiment", + type=str, + dest='experiment', + default='historical', + help="AMIP, historical or picontrol") + P.add_argument("-c", "--MIP", + type=str, + dest='mip', + default='CMIP5', + help="put options here") + P.add_argument("--ovar", + dest='obsvar', + default='pr', + help="Name of variable in obs file") + P.add_argument("-v", "--var", + dest='modvar', + default='pr', + help="Name of variable in model files") + P.add_argument("-t", "--threshold", + default=2.5 / 86400., + type=float, + help="Threshold for a hit when computing skill score") + return P + + +def monsoon_wang_runner(args): + # args = P.parse_args(sys.argv[1:]) + modpath = args.modpath + outpathjsons = args.outpathjsons + outpathdata = args.results_dir + if isinstance(args.modnames, str): + mods = eval(args.modnames) + else: + mods = args.modnames + + json_filename = args.jsonname + + if json_filename == 'CMIP_MME': + json_filename = '/MPI_' + args.mip + '_' + args.experiment + + if args.mip == 'CMIP5' and args.experiment == 'historical' and mods is None: + mods = [ + 'ACCESS1-0', + 'ACCESS1-3', + 'bcc-csm1-1', + 'bcc-csm1-1-m', + 'BNU-ESM', + 'CanCM4', + 'CanESM2', + 'CCSM4', + 'CESM1-BGC', + 'CESM1-CAM5', + 'CESM1-FASTCHEM', + 'CESM1-WACCM', + 'CMCC-CESM', + 'CMCC-CM', + 'CMCC-CMS', + 'CNRM-CM5-2', + 'CNRM-CM5', + 'CSIRO-Mk3-6-0', + 'FGOALS-g2', + 'FIO-ESM', + 'GFDL-CM2p1', + 'GFDL-CM3', + 'GFDL-ESM2G', + 'GFDL-ESM2M', + 'GISS-E2-H', + 'GISS-E2-H-CC', + 'GISS-E2-R', + 'GISS-E2-R-CC', + 'HadCM3', + 'HadGEM2-AO', + 'HadGEM2-CC', + 'HadGEM2-ES', + 'inmcm4', + 'IPSL-CM5A-LR', + 'IPSL-CM5A-MR', + 'IPSL-CM5B-LR', + 'MIROC4h', + 'MIROC5', + 'MIROC-ESM', + 'MIROC-ESM-CHEM', + 'MPI-ESM-LR', + 'MPI-ESM-MR', + 'MPI-ESM-P', + 'MRI-CGCM3', + 'MRI-ESM1', + 'NorESM1-M', + 'NorESM1-ME'] + + # VAR IS FIXED TO BE PRECIP FOR CALCULATING MONSOON PRECIPITATION INDICES + var = args.modvar + thr = args.threshold + sig_digits = '.3f' + + ######################################### + # PMP monthly default PR obs + cdms2.axis.longitude_aliases.append("longitude_prclim_mpd") + cdms2.axis.latitude_aliases.append("latitude_prclim_mpd") + fobs = cdms2.open(args.reference_data_path) + dobs_orig = fobs(args.obsvar) + fobs.close() + + obsgrid = dobs_orig.getGrid() + + ######################################## + + # FCN TO COMPUTE GLOBAL ANNUAL RANGE AND MONSOON PRECIP INDEX + + annrange_obs, mpi_obs = mpd(dobs_orig) + ######################################### + # SETUP WHERE TO OUTPUT RESULTING DATA (netcdf) + nout = os.path.join(outpathdata, "_".join( + [args.experiment, args.mip, 'wang-monsoon'])) + try: + os.makedirs(nout) + except BaseException: + pass + + # SETUP WHERE TO OUTPUT RESULTS (json) + jout = outpathjsons + try: + os.makedirs(nout) + except BaseException: + pass + + modpathall = modpath.replace('MODS', '*') + lst = glob.glob(modpathall) + # CONFIRM DATA FOR MODS IS AVAIL AND REMOVE THOSE IT IS NOT + + gmods = [] # "Got" these MODS + for mod in mods: + for l in lst: + l1 = modpath.replace('MODS', mod) + if os.path.isfile(l1) is True: + if mod not in gmods: + gmods.append(mod) + + if args.experiment == 'historical' and mods is None: + gmods = [ + 'ACCESS1-0', + 'ACCESS1-3', + 'bcc-csm1-1', + 'bcc-csm1-1-m', + 'BNU-ESM', + 'CanCM4', + 'CanESM2', + 'CCSM4', + 'CESM1-BGC', + 'CESM1-CAM5', + 'CESM1-FASTCHEM', + 'CESM1-WACCM', + 'CMCC-CESM', + 'CMCC-CM', + 'CMCC-CMS', + 'CNRM-CM5-2', + 'CNRM-CM5', + 'CSIRO-Mk3-6-0', + 'FGOALS-g2', + 'FIO-ESM', + 'GFDL-CM2p1', + 'GFDL-CM3', + 'GFDL-ESM2G', + 'GFDL-ESM2M', + 'GISS-E2-H', + 'GISS-E2-H-CC', + 'GISS-E2-R', + 'GISS-E2-R-CC', + 'HadCM3', + 'HadGEM2-AO', + 'HadGEM2-CC', + 'HadGEM2-ES', + 'inmcm4', + 'IPSL-CM5A-LR', + 'IPSL-CM5A-MR', + 'IPSL-CM5B-LR', + 'MIROC4h', + 'MIROC5', + 'MIROC-ESM', + 'MIROC-ESM-CHEM', + 'MPI-ESM-LR', + 'MPI-ESM-MR', + 'MPI-ESM-P', + 'MRI-CGCM3', + 'MRI-ESM1', + 'NorESM1-M', + 'NorESM1-ME'] + + ######################################### + + egg_pth = pkg_resources.resource_filename( + pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") + globals = {} + locals = {} + exec(compile(open(os.path.join(egg_pth, "default_regions.py")).read(), + os.path.join(egg_pth, "default_regions.py"), 'exec'), globals, locals) + regions_specs = locals["regions_specs"] + doms = ['AllMW', 'AllM', 'NAMM', 'SAMM', 'NAFM', 'SAFM', 'ASM', 'AUSM'] + + mpi_stats_dic = {} + for mod in gmods: + modelFile = modpath.replace('MODS', mod) + + mpi_stats_dic[mod] = {} + + print("******************************************************************************************") + print(modelFile) + f = cdms2.open(modelFile) + d_orig = f(var) + + annrange_mod, mpi_mod = mpd(d_orig) + annrange_mod = annrange_mod.regrid(obsgrid) + mpi_mod = mpi_mod.regrid(obsgrid) + + for dom in doms: + + mpi_stats_dic[mod][dom] = {} + + reg_sel = regions_specs[dom]['domain'] + + mpi_obs_reg = mpi_obs(reg_sel) + mpi_obs_reg_sd = float(statistics.std(mpi_obs_reg, axis='xy')) + mpi_mod_reg = mpi_mod(reg_sel) + + cor = float( + statistics.correlation( + mpi_mod_reg, + mpi_obs_reg, + axis='xy')) + rms = float(statistics.rms(mpi_mod_reg, mpi_obs_reg, axis='xy')) + rmsn = rms / mpi_obs_reg_sd + + # DOMAIN SELECTED FROM GLOBAL ANNUAL RANGE FOR MODS AND OBS + annrange_mod_dom = annrange_mod(reg_sel) + annrange_obs_dom = annrange_obs(reg_sel) + + # SKILL SCORES + # HIT/(HIT + MISSED + FALSE ALARMS) + hit, missed, falarm, score, hitmap, missmap, falarmmap = mpi_skill_scores( + annrange_mod_dom, annrange_obs_dom, thr) + + # POPULATE DICTIONARY FOR JSON FILES + mpi_stats_dic[mod][dom] = {} + mpi_stats_dic[mod][dom]['cor'] = format(cor, sig_digits) + mpi_stats_dic[mod][dom]['rmsn'] = format(rmsn, sig_digits) + mpi_stats_dic[mod][dom]['threat_score'] = format(score, sig_digits) + + # SAVE ANNRANGE AND HIT MISS AND FALSE ALARM FOR EACH MOD DOM + fm = os.path.join(nout, '_'.join([mod, dom, 'wang-monsoon.nc'])) + g = cdms2.open(fm, 'w') + g.write(annrange_mod_dom) + g.write(hitmap, dtype=numpy.int32) + g.write(missmap, dtype=numpy.int32) + g.write(falarmmap, dtype=numpy.int32) + g.close() + f.close() + + # OUTPUT METRICS TO JSON FILE + OUT = pcmdi_metrics.io.base.Base(os.path.abspath(jout), json_filename) + + disclaimer = open( + os.path.join( + egg_pth, + "disclaimer.txt")).read() + + metrics_dictionary = collections.OrderedDict() + metrics_dictionary["DISCLAIMER"] = disclaimer + metrics_dictionary["REFERENCE"] = "The statistics in this file are based on" +\ + " Wang, B., Kim, HJ., Kikuchi, K. et al. " +\ + "Clim Dyn (2011) 37: 941. doi:10.1007/s00382-010-0877-0" + metrics_dictionary["RESULTS"] = mpi_stats_dic # collections.OrderedDict() + + OUT.var = var + OUT.write( + metrics_dictionary, + json_structure=["model", "domain", "statistic"], + indent=4, + separators=( + ',', + ': ')) diff --git a/pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py b/pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py new file mode 100644 index 000000000..71b857c25 --- /dev/null +++ b/pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python +from pcmdi_metrics.monsoon_wang import create_monsoon_wang_parser, monsoon_wang_runner + +P = create_monsoon_wang_parser() +args = P.get_parameter() +monsoon_wang_runner(args) diff --git a/src/python/pcmdi/__init__.py b/pcmdi_metrics/pcmdi/__init__.py similarity index 86% rename from src/python/pcmdi/__init__.py rename to pcmdi_metrics/pcmdi/__init__.py index 6346ba9a9..bc65976b5 100644 --- a/src/python/pcmdi/__init__.py +++ b/pcmdi_metrics/pcmdi/__init__.py @@ -15,3 +15,4 @@ from . import seasonal_mean # noqa from . import zonal_mean # noqa from . import pmp_parser # noqa +from .mean_climate_metrics_driver import PMPDriver, create_mean_climate_parser # noqa \ No newline at end of file diff --git a/src/python/pcmdi/annual_mean.py b/pcmdi_metrics/pcmdi/annual_mean.py similarity index 100% rename from src/python/pcmdi/annual_mean.py rename to pcmdi_metrics/pcmdi/annual_mean.py diff --git a/src/python/pcmdi/bias_xy.py b/pcmdi_metrics/pcmdi/bias_xy.py similarity index 100% rename from src/python/pcmdi/bias_xy.py rename to pcmdi_metrics/pcmdi/bias_xy.py diff --git a/src/python/pcmdi/bias_xyt.py b/pcmdi_metrics/pcmdi/bias_xyt.py similarity index 100% rename from src/python/pcmdi/bias_xyt.py rename to pcmdi_metrics/pcmdi/bias_xyt.py diff --git a/src/python/pcmdi/cor_xy.py b/pcmdi_metrics/pcmdi/cor_xy.py similarity index 100% rename from src/python/pcmdi/cor_xy.py rename to pcmdi_metrics/pcmdi/cor_xy.py diff --git a/src/python/pcmdi/cor_xyt.py b/pcmdi_metrics/pcmdi/cor_xyt.py similarity index 100% rename from src/python/pcmdi/cor_xyt.py rename to pcmdi_metrics/pcmdi/cor_xyt.py diff --git a/src/python/pcmdi/io.py b/pcmdi_metrics/pcmdi/io.py similarity index 100% rename from src/python/pcmdi/io.py rename to pcmdi_metrics/pcmdi/io.py diff --git a/src/python/pcmdi/mean_climate_metrics_calculations.py b/pcmdi_metrics/pcmdi/mean_climate_metrics_calculations.py similarity index 100% rename from src/python/pcmdi/mean_climate_metrics_calculations.py rename to pcmdi_metrics/pcmdi/mean_climate_metrics_calculations.py diff --git a/src/python/pcmdi/scripts/mean_climate_driver.py b/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py similarity index 57% rename from src/python/pcmdi/scripts/mean_climate_driver.py rename to pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py index c7ec61fc3..5030efa91 100644 --- a/src/python/pcmdi/scripts/mean_climate_driver.py +++ b/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py @@ -21,9 +21,11 @@ def __init__(self, parameter): for h in plog.handlers: h.setFormatter(formatter) - fh = logging.FileHandler('pcmdi_metrics_driver.%s.log' % (parameter.case_id)) + fh = logging.FileHandler( + 'pcmdi_metrics_driver.%s.log' % (parameter.case_id)) fh.setLevel(LOG_LEVEL) - formatter = logging.Formatter('%(levelname)s::%(asctime)s:: %(message)s', datefmt="%Y-%m-%d %H:%M") + formatter = logging.Formatter( + '%(levelname)s::%(asctime)s:: %(message)s', datefmt="%Y-%m-%d %H:%M") fh.setFormatter(formatter) plog.addHandler(fh) self.parameter = parameter @@ -32,7 +34,8 @@ def __init__(self, parameter): self.var = '' self.output_metric = None self.region = '' - self.sftlf = pcmdi_metrics.driver.dataset.DataSet.create_sftlf(self.parameter) + self.sftlf = pcmdi_metrics.driver.dataset.DataSet.create_sftlf( + self.parameter) self.default_regions = [] self.regions_specs = {} @@ -48,7 +51,8 @@ def run_diags(self): self.var = self.var_name_long.split('_')[0] if self.var not in self.obs_dict: - logging.getLogger("pcmdi_metrics").error('Variable %s not in obs_dict' % self.var) + logging.getLogger("pcmdi_metrics").error( + 'Variable %s not in obs_dict' % self.var) continue self.output_metric = OutputMetrics(self.parameter, self.var_name_long, @@ -68,7 +72,8 @@ def load_obs_dict(self): ''' Loads obs_info_dictionary.json and appends custom_observations from the parameter file if needed. ''' obs_file_name = 'obs_info_dictionary.json' - obs_json_file = pcmdi_metrics.driver.dataset.DataSet.load_path_as_file_obj(obs_file_name) + obs_json_file = pcmdi_metrics.driver.dataset.DataSet.load_path_as_file_obj( + obs_file_name) obs_dict = json.loads(obs_json_file.read()) obs_json_file.close() @@ -102,14 +107,17 @@ def load_default_regions_and_regions_specs(self): ''' Gets the default_regions dict and regions_specs dict from default_regions.py and stores them as attributes. ''' default_regions_file = \ - pcmdi_metrics.driver.dataset.DataSet.load_path_as_file_obj('default_regions.py') - exec(compile(open(default_regions_file.name).read(), default_regions_file.name, 'exec')) + pcmdi_metrics.driver.dataset.DataSet.load_path_as_file_obj( + 'default_regions.py') + exec(compile(open(default_regions_file.name).read(), + default_regions_file.name, 'exec')) default_regions_file.close() try: self.default_regions = locals()['default_regions'] self.regions_specs = locals()['regions_specs'] except KeyError: - logging.getLogger("pcmdi_metrics").error('Failed to open default_regions.py') + logging.getLogger("pcmdi_metrics").error( + 'Failed to open default_regions.py') region_values = self.parameter.regions_values region_values.update(getattr(self.parameter, "regions_values", {})) @@ -200,200 +208,200 @@ def determine_obs_or_model(self, is_obs, ref_or_test, data_path): ''' Actually create Observation or Module object based on if ref_or_test is an obs or model. ''' if is_obs: - logging.getLogger("pcmdi_metrics").info('%s is an obs' % ref_or_test) + logging.getLogger("pcmdi_metrics").info( + '%s is an obs' % ref_or_test) return Observation(self.parameter, self.var_name_long, self.region, ref_or_test, self.obs_dict, data_path, self.sftlf) else: - logging.getLogger("pcmdi_metrics").info('%s is a model' % ref_or_test) + logging.getLogger("pcmdi_metrics").info( + '%s is a model' % ref_or_test) return Model(self.parameter, self.var_name_long, self.region, ref_or_test, self.obs_dict, data_path, self.sftlf) -parser = pcmdi_metrics.driver.pmp_parser.PMPMetricsParser() -parser.add_argument( - '--case_id', - dest='case_id', - help='Defines a subdirectory to the metrics output, so multiple' + - 'cases can be compared', - required=False) - -parser.add_argument( - '-v', '--vars', - type=str, - nargs='+', - dest='vars', - help='Variables to use', - required=False) - -parser.add_argument( - '--regions', - type=ast.literal_eval, - dest='regions', - help='Regions on which to run the metrics', - required=False) - -parser.add_argument( - '--regions_values', - type=ast.literal_eval, - dest='regions_values', - help='Users can customize regions values names', - required=False) - -parser.add_argument( - '-r', '--reference_data_set', - type=str, - nargs='+', - dest='reference_data_set', - help='List of observations or models that are used as a ' + - 'reference against the test_data_set', - required=False) - -parser.add_argument( - '--reference_data_path', - dest='reference_data_path', - help='Path for the reference climitologies', - required=False) - -parser.add_argument( - '-t', '--test_data_set', - type=str, - nargs='+', - dest='test_data_set', - help='List of observations or models to test ' + - 'against the reference_data_set', - required=False) - -parser.add_argument( - '--test_data_path', - dest='test_data_path', - help='Path for the test climitologies', - required=False) - -parser.add_argument( - '--target_grid', - dest='target_grid', - help='Options are "2.5x2.5" or an actual cdms2 grid object', - required=False) - -parser.add_argument( - '--regrid_tool', - dest='regrid_tool', - help='Options are "regrid2" or "esmf"', - required=False) - -parser.add_argument( - '--regrid_method', - dest='regrid_method', - help='Options are "linear" or "conservative", ' + - 'only if regrid_tool is "esmf"', - required=False) - -parser.add_argument( - '--regrid_tool_ocn', - dest='regrid_tool_ocn', - help='Options are "regrid2" or "esmf"', - required=False) - -parser.add_argument( - '--regrid_method_ocn', - dest='regrid_method_ocn', - help='Options are "linear" or "conservative", ' + - 'only if regrid_tool is "esmf"', - required=False) - -parser.add_argument( - '--period', - dest='period', - help='A simulation parameter', - required=False) - -parser.add_argument( - '--realization', - dest='realization', - help='A simulation parameter', - required=False) - -parser.add_argument( - '--simulation_description_mapping', - type=ast.literal_eval, - dest='simulation_description_mapping', - help='List of observations or models to test ' + - 'against the reference_data_set', - default={}, - required=False) - -parser.add_argument( - '--ext', - dest='ext', - help='Extension for the output files?', - required=False) - -parser.add_argument( - '--dry_run', - # If input is 'True' or 'true', return True. Otherwise False. - type=lambda x: x.lower() == 'true', - dest='dry_run', - help='True if output is to be created, False otherwise', - required=False) - -parser.add_argument( - '--filename_template', - dest='filename_template', - help='Template for climatology files', - required=False) - -parser.add_argument( - '--sftlf_filename_template', - dest='sftlf_filename_template', - help='Filename template for landsea masks ("sftlf")', - required=False) - -parser.add_argument( - '--custom_observations', - dest='custom_observations', - help='Path to an alternative, custom observation file', - required=False) - -parser.add_argument( - '--metrics_output_path', - dest='metrics_output_path', - help='Directory of where to put the results', - required=False) - -parser.add_argument( - '--filename_output_template', - dest='filename_output_template', - help='Filename for the interpolated test climatologies', - required=False) - -parser.add_argument( - '--save_test_clims', - # If input is 'True' or 'true', return True. Otherwise False. - type=lambda x: x.lower() == 'true', - dest='save_test_clims', - help='True if to save interpolated test climatologies,' + - ' otherwise False', - required=False) - -parser.add_argument( - '--test_clims_interpolated_output', - dest='test_clims_interpolated_output', - help='Directory of where to put the interpolated ' + - 'test climatologies', - required=False) - -parser.add_argument( - '--output_json_template', - help='Filename template for results json files', - required=False) - -parser.add_argument( - '--user_notes', - dest='user_notes', - help='Provide a short description to help identify this run of the PMP mean climate.', - required=False) - -parameter = parser.get_parameter(cmd_default_vars=False, argparse_vals_only=False) - -driver = PMPDriver(parameter) -driver.run_diags() +def create_mean_climate_parser(): + parser = pcmdi_metrics.driver.pmp_parser.PMPMetricsParser() + parser.add_argument( + '--case_id', + dest='case_id', + help='Defines a subdirectory to the metrics output, so multiple' + + 'cases can be compared', + required=False) + + parser.add_argument( + '-v', '--vars', + type=str, + nargs='+', + dest='vars', + help='Variables to use', + required=False) + + parser.add_argument( + '--regions', + type=ast.literal_eval, + dest='regions', + help='Regions on which to run the metrics', + required=False) + + parser.add_argument( + '--regions_values', + type=ast.literal_eval, + dest='regions_values', + help='Users can customize regions values names', + required=False) + + parser.add_argument( + '-r', '--reference_data_set', + type=str, + nargs='+', + dest='reference_data_set', + help='List of observations or models that are used as a ' + + 'reference against the test_data_set', + required=False) + + parser.add_argument( + '--reference_data_path', + dest='reference_data_path', + help='Path for the reference climitologies', + required=False) + + parser.add_argument( + '-t', '--test_data_set', + type=str, + nargs='+', + dest='test_data_set', + help='List of observations or models to test ' + + 'against the reference_data_set', + required=False) + + parser.add_argument( + '--test_data_path', + dest='test_data_path', + help='Path for the test climitologies', + required=False) + + parser.add_argument( + '--target_grid', + dest='target_grid', + help='Options are "2.5x2.5" or an actual cdms2 grid object', + required=False) + + parser.add_argument( + '--regrid_tool', + dest='regrid_tool', + help='Options are "regrid2" or "esmf"', + required=False) + + parser.add_argument( + '--regrid_method', + dest='regrid_method', + help='Options are "linear" or "conservative", ' + + 'only if regrid_tool is "esmf"', + required=False) + + parser.add_argument( + '--regrid_tool_ocn', + dest='regrid_tool_ocn', + help='Options are "regrid2" or "esmf"', + required=False) + + parser.add_argument( + '--regrid_method_ocn', + dest='regrid_method_ocn', + help='Options are "linear" or "conservative", ' + + 'only if regrid_tool is "esmf"', + required=False) + + parser.add_argument( + '--period', + dest='period', + help='A simulation parameter', + required=False) + + parser.add_argument( + '--realization', + dest='realization', + help='A simulation parameter', + required=False) + + parser.add_argument( + '--simulation_description_mapping', + type=ast.literal_eval, + dest='simulation_description_mapping', + help='List of observations or models to test ' + + 'against the reference_data_set', + default={}, + required=False) + + parser.add_argument( + '--ext', + dest='ext', + help='Extension for the output files?', + required=False) + + parser.add_argument( + '--dry_run', + # If input is 'True' or 'true', return True. Otherwise False. + type=lambda x: x.lower() == 'true', + dest='dry_run', + help='True if output is to be created, False otherwise', + required=False) + + parser.add_argument( + '--filename_template', + dest='filename_template', + help='Template for climatology files', + required=False) + + parser.add_argument( + '--sftlf_filename_template', + dest='sftlf_filename_template', + help='Filename template for landsea masks ("sftlf")', + required=False) + + parser.add_argument( + '--custom_observations', + dest='custom_observations', + help='Path to an alternative, custom observation file', + required=False) + + parser.add_argument( + '--metrics_output_path', + dest='metrics_output_path', + help='Directory of where to put the results', + required=False) + + parser.add_argument( + '--filename_output_template', + dest='filename_output_template', + help='Filename for the interpolated test climatologies', + required=False) + + parser.add_argument( + '--save_test_clims', + # If input is 'True' or 'true', return True. Otherwise False. + type=lambda x: x.lower() == 'true', + dest='save_test_clims', + help='True if to save interpolated test climatologies,' + + ' otherwise False', + required=False) + + parser.add_argument( + '--test_clims_interpolated_output', + dest='test_clims_interpolated_output', + help='Directory of where to put the interpolated ' + + 'test climatologies', + required=False) + + parser.add_argument( + '--output_json_template', + help='Filename template for results json files', + required=False) + + parser.add_argument( + '--user_notes', + dest='user_notes', + help='Provide a short description to help identify this run of the PMP mean climate.', + required=False) + + return parser diff --git a/src/python/pcmdi/mean_xy.py b/pcmdi_metrics/pcmdi/mean_xy.py similarity index 100% rename from src/python/pcmdi/mean_xy.py rename to pcmdi_metrics/pcmdi/mean_xy.py diff --git a/src/python/pcmdi/meanabs_xy.py b/pcmdi_metrics/pcmdi/meanabs_xy.py similarity index 100% rename from src/python/pcmdi/meanabs_xy.py rename to pcmdi_metrics/pcmdi/meanabs_xy.py diff --git a/src/python/pcmdi/meanabs_xyt.py b/pcmdi_metrics/pcmdi/meanabs_xyt.py similarity index 100% rename from src/python/pcmdi/meanabs_xyt.py rename to pcmdi_metrics/pcmdi/meanabs_xyt.py diff --git a/src/python/pcmdi/pmp_parser.py b/pcmdi_metrics/pcmdi/pmp_parser.py similarity index 100% rename from src/python/pcmdi/pmp_parser.py rename to pcmdi_metrics/pcmdi/pmp_parser.py diff --git a/src/python/pcmdi/rms_0.py b/pcmdi_metrics/pcmdi/rms_0.py similarity index 100% rename from src/python/pcmdi/rms_0.py rename to pcmdi_metrics/pcmdi/rms_0.py diff --git a/src/python/pcmdi/rms_xy.py b/pcmdi_metrics/pcmdi/rms_xy.py similarity index 100% rename from src/python/pcmdi/rms_xy.py rename to pcmdi_metrics/pcmdi/rms_xy.py diff --git a/src/python/pcmdi/rms_xyt.py b/pcmdi_metrics/pcmdi/rms_xyt.py similarity index 100% rename from src/python/pcmdi/rms_xyt.py rename to pcmdi_metrics/pcmdi/rms_xyt.py diff --git a/src/python/pcmdi/rmsc_xy.py b/pcmdi_metrics/pcmdi/rmsc_xy.py similarity index 100% rename from src/python/pcmdi/rmsc_xy.py rename to pcmdi_metrics/pcmdi/rmsc_xy.py diff --git a/src/python/pcmdi/scripts/build_obs_meta_dictionary.py b/pcmdi_metrics/pcmdi/scripts/build_obs_meta_dictionary.py similarity index 100% rename from src/python/pcmdi/scripts/build_obs_meta_dictionary.py rename to pcmdi_metrics/pcmdi/scripts/build_obs_meta_dictionary.py diff --git a/src/python/pcmdi/scripts/make_obs_clim.py b/pcmdi_metrics/pcmdi/scripts/make_obs_clim.py similarity index 100% rename from src/python/pcmdi/scripts/make_obs_clim.py rename to pcmdi_metrics/pcmdi/scripts/make_obs_clim.py diff --git a/src/python/pcmdi/scripts/make_obs_clim.sh b/pcmdi_metrics/pcmdi/scripts/make_obs_clim.sh similarity index 100% rename from src/python/pcmdi/scripts/make_obs_clim.sh rename to pcmdi_metrics/pcmdi/scripts/make_obs_clim.sh diff --git a/src/python/pcmdi/scripts/make_obs_sftlf.py b/pcmdi_metrics/pcmdi/scripts/make_obs_sftlf.py similarity index 100% rename from src/python/pcmdi/scripts/make_obs_sftlf.py rename to pcmdi_metrics/pcmdi/scripts/make_obs_sftlf.py diff --git a/pcmdi_metrics/pcmdi/scripts/mean_climate_driver.py b/pcmdi_metrics/pcmdi/scripts/mean_climate_driver.py new file mode 100644 index 000000000..d431de0d3 --- /dev/null +++ b/pcmdi_metrics/pcmdi/scripts/mean_climate_driver.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python +from pcmdi_metrics.pcmdi import PMPDriver, create_mean_climate_parser + +parser = create_mean_climate_parser() +parameter = parser.get_parameter(cmd_default_vars=False, argparse_vals_only=False) +driver = PMPDriver(parameter) +driver.run_diags() diff --git a/src/python/pcmdi/scripts/obs_info_dictionary.json b/pcmdi_metrics/pcmdi/scripts/obs_info_dictionary.json similarity index 100% rename from src/python/pcmdi/scripts/obs_info_dictionary.json rename to pcmdi_metrics/pcmdi/scripts/obs_info_dictionary.json diff --git a/src/python/pcmdi/scripts/obs_info_dictionary.json.bak171117 b/pcmdi_metrics/pcmdi/scripts/obs_info_dictionary.json.bak171117 similarity index 100% rename from src/python/pcmdi/scripts/obs_info_dictionary.json.bak171117 rename to pcmdi_metrics/pcmdi/scripts/obs_info_dictionary.json.bak171117 diff --git a/src/python/pcmdi/scripts/pcmdi_compute_climatologies.py b/pcmdi_metrics/pcmdi/scripts/pcmdi_compute_climatologies.py similarity index 100% rename from src/python/pcmdi/scripts/pcmdi_compute_climatologies.py rename to pcmdi_metrics/pcmdi/scripts/pcmdi_compute_climatologies.py diff --git a/src/python/pcmdi/seasonal_mean.py b/pcmdi_metrics/pcmdi/seasonal_mean.py similarity index 100% rename from src/python/pcmdi/seasonal_mean.py rename to pcmdi_metrics/pcmdi/seasonal_mean.py diff --git a/src/python/pcmdi/std_xy.py b/pcmdi_metrics/pcmdi/std_xy.py similarity index 100% rename from src/python/pcmdi/std_xy.py rename to pcmdi_metrics/pcmdi/std_xy.py diff --git a/src/python/pcmdi/std_xyt.py b/pcmdi_metrics/pcmdi/std_xyt.py similarity index 100% rename from src/python/pcmdi/std_xyt.py rename to pcmdi_metrics/pcmdi/std_xyt.py diff --git a/src/python/pcmdi/zonal_mean.py b/pcmdi_metrics/pcmdi/zonal_mean.py similarity index 100% rename from src/python/pcmdi/zonal_mean.py rename to pcmdi_metrics/pcmdi/zonal_mean.py diff --git a/recipes/pcmdi_metrics/meta.yaml b/recipes/pcmdi_metrics/meta.yaml deleted file mode 100644 index 6d3bde534..000000000 --- a/recipes/pcmdi_metrics/meta.yaml +++ /dev/null @@ -1,34 +0,0 @@ -package: - name: pcmdi_metrics - version: 1.2 - -source: - git_url: git://github.com/PCMDI/pcmdi_metrics - git_rev: v1.2 - -build: - script: python setup.py install - number: 0 - -requirements: - build: - - python {{ python}} - - setuptools - - numpy - run: - - python {{ python }} - - vcs ==8.0 - - vcsaddons ==8.0 - - cdms2 ==3.0.1 - - genutil - - cdutil ==8.0 - - cdp >=1.4.0 - - numpy - - cia ==0.0.6 - - proj4 <5 - - -about: - home: http://gitub.com/PCMDI/pcmdi_metrics - summary: The PCMDI metrics package is used to objectively compare results from climate models with observations using well-established statistical tests. Results are produced in the context of all model simulations contributed to CMIP5 and earlier CMIP phases. Among other purposes, this enables modeling groups to evaluate changes during the development cycle in the context of the structural error distribution of the multi-model ensemble. Currently, the comparisons are focused on large- to global-scale annual cycle performance metrics. - diff --git a/recipes/pcmdi_metrics/meta.yaml.in b/recipes/pcmdi_metrics/meta.yaml.in index 776c750ad..718d1c988 100644 --- a/recipes/pcmdi_metrics/meta.yaml.in +++ b/recipes/pcmdi_metrics/meta.yaml.in @@ -9,6 +9,7 @@ source: build: script: python setup.py install number: @BUILD_NUMBER@ + noarch: python requirements: build: diff --git a/setup.py b/setup.py index d539a2c20..591694dfb 100755 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ from __future__ import print_function -from distutils.core import setup +from setuptools import setup, find_packages import glob import subprocess import os @@ -39,13 +39,13 @@ commit = p.stdout.readlines()[0].split()[1].decode("utf-8") except: commit = "" -f = open("src/python/version.py", "w") +f = open("pcmdi_metrics/version.py", "w") print("__version__ = '%s'" % Version, file=f) print("__git_tag_describe__ = '%s'" % descr, file=f) print("__git_sha1__ = '%s'" % commit, file=f) f.close() -portrait_files = ["src/python/graphics/share/portraits.scr", ] +portrait_files = ["pcmdi_metrics/graphics/share/portraits.scr", ] packages = {'pcmdi_metrics': 'src/python', 'pcmdi_metrics.io': 'src/python/io', @@ -56,19 +56,20 @@ 'pcmdi_metrics.monsoon_wang': 'src/python/monsoon_wang/lib', 'pcmdi_metrics.monsoon_sperber': 'src/python/monsoon_sperber/lib', } -scripts = ['src/python/pcmdi/scripts/mean_climate_driver.py', - 'src/python/pcmdi/scripts/pcmdi_compute_climatologies.py', - 'src/python/misc/scripts/parallelize_driver.py', - 'src/python/misc/scripts/get_pmp_data.py', - 'src/python/monsoon_wang/scripts/mpindex_compute.py', - 'src/python/monsoon_sperber/scripts/driver_monsoon_sperber.py', +packages = find_packages() +scripts = ['pcmdi_metrics/pcmdi/scripts/mean_climate_driver.py', + 'pcmdi_metrics/pcmdi/scripts/pcmdi_compute_climatologies.py', + 'pcmdi_metrics/misc/scripts/parallelize_driver.py', + 'pcmdi_metrics/misc/scripts/get_pmp_data.py', + 'pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py', + 'pcmdi_metrics/monsoon_sperber/scripts/driver_monsoon_sperber.py', ] -scripts += glob.glob("src/python/diurnal/scripts/*.py") +scripts += glob.glob("pcmdi_metrics/diurnal/scripts/*.py") demo_files = glob.glob("demo/*/*") print("demo files") -data_files = [ +data_files = ( ('share/pmp/graphics/vcs', portrait_files), ('share/pmp/graphics/png', ['share/pcmdi/171101_doutriaux1_UVCDATLogo_446x119px_72dpi.png', 'share/pcmdi/CDATLogo_140x49px_72dpi.png', @@ -96,7 +97,7 @@ 'share/default_regions.py' )), ('share/pmp/demo', demo_files), - ] + ) if install_dev: print("Adding experimental packages") @@ -131,8 +132,7 @@ author='PCMDI', description='model metrics tools', url='http://github.com/PCMDI/pcmdi_metrics', - packages=list(packages.keys()), - package_dir=packages, + packages=packages, scripts=scripts, data_files=data_files # include_dirs = [numpy.lib.utils.get_include()], diff --git a/src/python/monsoon_wang/lib/__init__.py b/src/python/monsoon_wang/lib/__init__.py deleted file mode 100644 index 2b620e938..000000000 --- a/src/python/monsoon_wang/lib/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .monsoon_precip_index_fncs import mpd, mpi_skill_scores # noqa diff --git a/src/python/monsoon_wang/scripts/mpindex_compute.py b/src/python/monsoon_wang/scripts/mpindex_compute.py deleted file mode 100644 index a4c0b1a7a..000000000 --- a/src/python/monsoon_wang/scripts/mpindex_compute.py +++ /dev/null @@ -1,313 +0,0 @@ -#!/usr/bin/env python - -import cdms2 -import numpy -import sys -import os -from genutil import statistics -from pcmdi_metrics.pcmdi.pmp_parser import PMPParser -from pcmdi_metrics.monsoon_wang import mpd, mpi_skill_scores -import pcmdi_metrics -import collections -import glob - - -P = PMPParser() - -P.use("--modpath") -P.use("--modnames") -P.use("--results_dir") -P.use("--reference_data_path") - -P.add_argument("--outpj", "--outpathjsons", - type=str, - dest='outpathjsons', - default='.', - help="Output path for jsons") -P.add_argument("--outnj", "--outnamejson", - type=str, - dest='jsonname', - default='out.json', - help="Output path for jsons") -P.add_argument("-e", "--experiment", - type=str, - dest='experiment', - default='historical', - help="AMIP, historical or picontrol") -P.add_argument("-c", "--MIP", - type=str, - dest='mip', - default='CMIP5', - help="put options here") -P.add_argument("--ovar", - dest='obsvar', - default='pr', - help="Name of variable in obs file") -P.add_argument("-v", "--var", - dest='modvar', - default='pr', - help="Name of variable in model files") -P.add_argument("-t", "--threshold", - default=2.5 / 86400., - type=float, - help="Threshold for a hit when computing skill score") - - -# args = P.parse_args(sys.argv[1:]) -args = P.get_parameter() -modpath = args.modpath -outpathjsons = args.outpathjsons -outpathdata = args.results_dir -if isinstance(args.modnames, str): - mods = eval(args.modnames) -else: - mods = args.modnames - -json_filename = args.jsonname - -if json_filename == 'CMIP_MME': - json_filename = '/MPI_' + args.mip + '_' + args.experiment - -if args.mip == 'CMIP5' and args.experiment == 'historical' and mods is None: - mods = [ - 'ACCESS1-0', - 'ACCESS1-3', - 'bcc-csm1-1', - 'bcc-csm1-1-m', - 'BNU-ESM', - 'CanCM4', - 'CanESM2', - 'CCSM4', - 'CESM1-BGC', - 'CESM1-CAM5', - 'CESM1-FASTCHEM', - 'CESM1-WACCM', - 'CMCC-CESM', - 'CMCC-CM', - 'CMCC-CMS', - 'CNRM-CM5-2', - 'CNRM-CM5', - 'CSIRO-Mk3-6-0', - 'FGOALS-g2', - 'FIO-ESM', - 'GFDL-CM2p1', - 'GFDL-CM3', - 'GFDL-ESM2G', - 'GFDL-ESM2M', - 'GISS-E2-H', - 'GISS-E2-H-CC', - 'GISS-E2-R', - 'GISS-E2-R-CC', - 'HadCM3', - 'HadGEM2-AO', - 'HadGEM2-CC', - 'HadGEM2-ES', - 'inmcm4', - 'IPSL-CM5A-LR', - 'IPSL-CM5A-MR', - 'IPSL-CM5B-LR', - 'MIROC4h', - 'MIROC5', - 'MIROC-ESM', - 'MIROC-ESM-CHEM', - 'MPI-ESM-LR', - 'MPI-ESM-MR', - 'MPI-ESM-P', - 'MRI-CGCM3', - 'MRI-ESM1', - 'NorESM1-M', - 'NorESM1-ME'] - - -# VAR IS FIXED TO BE PRECIP FOR CALCULATING MONSOON PRECIPITATION INDICES -var = args.modvar -thr = args.threshold -sig_digits = '.3f' - -######################################### -# PMP monthly default PR obs -cdms2.axis.longitude_aliases.append("longitude_prclim_mpd") -cdms2.axis.latitude_aliases.append("latitude_prclim_mpd") -fobs = cdms2.open(args.reference_data_path) -dobs_orig = fobs(args.obsvar) -fobs.close() - -obsgrid = dobs_orig.getGrid() - -######################################## - -# FCN TO COMPUTE GLOBAL ANNUAL RANGE AND MONSOON PRECIP INDEX - -annrange_obs, mpi_obs = mpd(dobs_orig) -######################################### -# SETUP WHERE TO OUTPUT RESULTING DATA (netcdf) -nout = os.path.join(outpathdata, "_".join( - [args.experiment, args.mip, 'wang-monsoon'])) -try: - os.makedirs(nout) -except BaseException: - pass - -# SETUP WHERE TO OUTPUT RESULTS (json) -jout = outpathjsons -try: - os.makedirs(nout) -except BaseException: - pass - -modpathall = modpath.replace('MODS', '*') -lst = glob.glob(modpathall) -# CONFIRM DATA FOR MODS IS AVAIL AND REMOVE THOSE IT IS NOT - -gmods = [] # "Got" these MODS -for mod in mods: - for l in lst: - l1 = modpath.replace('MODS', mod) - if os.path.isfile(l1) is True: - if mod not in gmods: - gmods.append(mod) - -if args.experiment == 'historical' and mods is None: - gmods = [ - 'ACCESS1-0', - 'ACCESS1-3', - 'bcc-csm1-1', - 'bcc-csm1-1-m', - 'BNU-ESM', - 'CanCM4', - 'CanESM2', - 'CCSM4', - 'CESM1-BGC', - 'CESM1-CAM5', - 'CESM1-FASTCHEM', - 'CESM1-WACCM', - 'CMCC-CESM', - 'CMCC-CM', - 'CMCC-CMS', - 'CNRM-CM5-2', - 'CNRM-CM5', - 'CSIRO-Mk3-6-0', - 'FGOALS-g2', - 'FIO-ESM', - 'GFDL-CM2p1', - 'GFDL-CM3', - 'GFDL-ESM2G', - 'GFDL-ESM2M', - 'GISS-E2-H', - 'GISS-E2-H-CC', - 'GISS-E2-R', - 'GISS-E2-R-CC', - 'HadCM3', - 'HadGEM2-AO', - 'HadGEM2-CC', - 'HadGEM2-ES', - 'inmcm4', - 'IPSL-CM5A-LR', - 'IPSL-CM5A-MR', - 'IPSL-CM5B-LR', - 'MIROC4h', - 'MIROC5', - 'MIROC-ESM', - 'MIROC-ESM-CHEM', - 'MPI-ESM-LR', - 'MPI-ESM-MR', - 'MPI-ESM-P', - 'MRI-CGCM3', - 'MRI-ESM1', - 'NorESM1-M', - 'NorESM1-ME'] - - -######################################### - -regions_specs = {} -default_regions = [] -exec(compile(open(sys.prefix + "/share/pmp/default_regions.py").read(), - sys.prefix + "/share/pmp/default_regions.py", 'exec')) - -doms = ['AllMW', 'AllM', 'NAMM', 'SAMM', 'NAFM', 'SAFM', 'ASM', 'AUSM'] - -mpi_stats_dic = {} -for mod in gmods: - modelFile = modpath.replace('MODS', mod) - - mpi_stats_dic[mod] = {} - - print("******************************************************************************************") - print(modelFile) - f = cdms2.open(modelFile) - d_orig = f(var) - - annrange_mod, mpi_mod = mpd(d_orig) - annrange_mod = annrange_mod.regrid(obsgrid) - mpi_mod = mpi_mod.regrid(obsgrid) - - for dom in doms: - - mpi_stats_dic[mod][dom] = {} - - reg_sel = regions_specs[dom]['domain'] - - mpi_obs_reg = mpi_obs(reg_sel) - mpi_obs_reg_sd = float(statistics.std(mpi_obs_reg, axis='xy')) - mpi_mod_reg = mpi_mod(reg_sel) - - cor = float( - statistics.correlation( - mpi_mod_reg, - mpi_obs_reg, - axis='xy')) - rms = float(statistics.rms(mpi_mod_reg, mpi_obs_reg, axis='xy')) - rmsn = rms / mpi_obs_reg_sd - -# DOMAIN SELECTED FROM GLOBAL ANNUAL RANGE FOR MODS AND OBS - annrange_mod_dom = annrange_mod(reg_sel) - annrange_obs_dom = annrange_obs(reg_sel) - -# SKILL SCORES -# HIT/(HIT + MISSED + FALSE ALARMS) - hit, missed, falarm, score, hitmap, missmap, falarmmap = mpi_skill_scores( - annrange_mod_dom, annrange_obs_dom, thr) - -# POPULATE DICTIONARY FOR JSON FILES - mpi_stats_dic[mod][dom] = {} - mpi_stats_dic[mod][dom]['cor'] = format(cor, sig_digits) - mpi_stats_dic[mod][dom]['rmsn'] = format(rmsn, sig_digits) - mpi_stats_dic[mod][dom]['threat_score'] = format(score, sig_digits) - -# SAVE ANNRANGE AND HIT MISS AND FALSE ALARM FOR EACH MOD DOM - fm = os.path.join(nout, '_'.join([mod, dom, 'wang-monsoon.nc'])) - g = cdms2.open(fm, 'w') - g.write(annrange_mod_dom) - g.write(hitmap, dtype=numpy.int32) - g.write(missmap, dtype=numpy.int32) - g.write(falarmmap, dtype=numpy.int32) - g.close() - f.close() - - -# OUTPUT METRICS TO JSON FILE -OUT = pcmdi_metrics.io.base.Base(os.path.abspath(jout), json_filename) - -disclaimer = open( - os.path.join( - sys.prefix, - "share", - "pmp", - "disclaimer.txt")).read() - -metrics_dictionary = collections.OrderedDict() -metrics_def_dictionary = collections.OrderedDict() -metrics_dictionary["DISCLAIMER"] = disclaimer -metrics_dictionary["REFERENCE"] = "The statistics in this file are based on Wang, B., Kim, HJ., Kikuchi, K. et al. " +\ - "Clim Dyn (2011) 37: 941. doi:10.1007/s00382-010-0877-0" -metrics_dictionary["RESULTS"] = mpi_stats_dic # collections.OrderedDict() - -OUT.var = var -OUT.write( - metrics_dictionary, - json_structure=["model", "domain", "statistic"], - indent=4, - separators=( - ',', - ': ')) diff --git a/tests/basepmpdriver.py b/tests/basepmpdriver.py index d8b024886..9c6201baa 100644 --- a/tests/basepmpdriver.py +++ b/tests/basepmpdriver.py @@ -1,21 +1,22 @@ import basepmp -import subprocess import os -import shlex import sys import pcmdi_metrics import glob import shutil +from pcmdi_metrics.pcmdi import PMPDriver, create_mean_climate_parser + class PMPDriverTest(basepmp.PMPTest): def setUp(self): - self.path_parameter_files = os.path.join(os.path.dirname(__file__),"pcmdi") - self.traceback = eval(os.environ.get("TRACEBACK","False")) - self.update = eval(os.environ.get("UPDATE_TESTS","False")) + self.path_parameter_files = os.path.join( + os.path.dirname(__file__), "pcmdi") + self.traceback = eval(os.environ.get("TRACEBACK", "False")) + self.update = eval(os.environ.get("UPDATE_TESTS", "False")) - def runPMP(self,parameterFile): + def runPMP(self, parameterFile): if self.traceback: - tb="-t" + tb = "-t" else: tb = "" print() @@ -29,12 +30,14 @@ def runPMP(self,parameterFile): print() print() print() - subprocess.call( - shlex.split( - "mean_climate_driver.py -p %s %s" % - (parameterFile, tb))) - parameters,files = self.assertFilesOut(parameterFile) + parser = create_mean_climate_parser() + parser.add_args_and_values(['-p', parameterFile]) + parameter = parser.get_parameter( + cmd_default_vars=False, argparse_vals_only=False) + driver = PMPDriver(parameter) + driver.run_diags() + parameters, files = self.assertFilesOut(parameterFile) for fnm in files: nm = os.path.basename(fnm) @@ -43,11 +46,11 @@ def runPMP(self,parameterFile): os.path.dirname(__file__) + "/pcmdi/%s/*.json" % parameters.case_id) - print("GOOD FILES:",good_files) + print("GOOD FILES:", good_files) if len(good_files) == 0: raise Exception(" ".join("could not find good files", - __file__, os.path.dirname(__file__), - "/pcmdi/%s/*.json" % parameters.case_id)) + __file__, os.path.dirname(__file__), + "/pcmdi/%s/*.json" % parameters.case_id)) allCorrect = True for gnm in good_files: if os.path.basename(gnm) == nm: @@ -55,14 +58,17 @@ def runPMP(self,parameterFile): if self.update: shutil.copy(fnm, gnm) else: - correct = self.assertSimilarJsons(fnm, gnm, rtol=5.E-3, atol=0., raiseOnError=False) + correct = self.assertSimilarJsons( + fnm, gnm, rtol=5.E-3, atol=0., raiseOnError=False) if not correct and os.path.exists(gnm+".mac"): - correct = self.assertSimilarJsons(fnm, gnm+".mac", rtol=5.E-3, atol=0, raiseOnError=False) + correct = self.assertSimilarJsons( + fnm, gnm+".mac", rtol=5.E-3, atol=0, raiseOnError=False) allCorrect = allCorrect and correct if not allCorrect: - raise Exception("Error Encountered on some of the output files, check log") + raise Exception( + "Error Encountered on some of the output files, check log") - def assertFilesOut(self,parameterFile): + def assertFilesOut(self, parameterFile): # Ok at that point we we can start testing things pth, fnm = os.path.split(parameterFile) if pth != "": @@ -78,6 +84,6 @@ def assertFilesOut(self,parameterFile): pthout.case_id = parameters.case_id files = glob.glob(pthout()) if len(files) == 0: - raise Exception("could not find output files after running mean_climate_driver on parameter file: %s" % parameterFile) + raise Exception( + "could not find output files after running mean_climate_driver on parameter file: %s" % parameterFile) return parameters, files - diff --git a/tests/coverage.json b/tests/coverage.json index 413b9a591..5180d58cd 100644 --- a/tests/coverage.json +++ b/tests/coverage.json @@ -1,15 +1,3 @@ { - "include": ["pcmdi_metrics"], - "subprocess": ["bin/mean_climate_driver.py", - "bin/pcmdi_compute_climatologies.py", - "bin/computeStdDailyMeansWrapped.py", - "bin/fourierDiurnalAllGridWrapped.py", - "bin/compositeDiurnalStatisticsWrapped.py", - "bin/std_of_hourlyvaluesWrappedInOut.py", - "bin/std_of_meandiurnalcycWrappedInOut.py", - "bin/savg_fourierWrappedInOut.py", - "bin/fourierDiurnalGridpoints.py", - "bin/std_of_dailymeansWrappedInOut.py", - "bin/mpindex_compute.py", - "bin/driver_monsoon_sperber.py"] + "include": ["pcmdi_metrics"] } diff --git a/tests/test_monsoon_wang.py b/tests/test_monsoon_wang.py index d696fecb4..fd986b638 100644 --- a/tests/test_monsoon_wang.py +++ b/tests/test_monsoon_wang.py @@ -2,9 +2,8 @@ import os import unittest import pcmdi_metrics -import subprocess -import shlex import numpy +from pcmdi_metrics.monsoon_wang import create_monsoon_wang_parser, monsoon_wang_runner class MonsoonTest(unittest.TestCase): @@ -12,61 +11,74 @@ def checkAllClose(self, a, b): if numpy.ma.allclose(a.filled(), b.filled()): return True else: - axes =a.getAxisList() - c = numpy.isclose(a.filled(),b.filled()) - w = numpy.argwhere(c==0) + axes = a.getAxisList() + c = numpy.isclose(a.filled(), b.filled()) + w = numpy.argwhere(c == 0) for d in w: print("Error for:", end=' ') - for i,indx in enumerate(d): + for i, indx in enumerate(d): print("%s, " % axes[i][indx], end=' ') print("(", end=' ') for indx in d: print("%i," % indx, end=' ') - print("). Test value %.3f vs expected value: %.3f" % (a[tuple(d)],b[tuple(d)])) + print("). Test value %.3f vs expected value: %.3f" % + (a[tuple(d)], b[tuple(d)])) return False return True def testMonsoonWang(self): - cmd = 'mpindex_compute.py --mp tests/monsoon/data/pr_1961_1999_MRI-CGCM3_regrid_MODS.nc --reference_data_path tests/monsoon/obs/pr_gpcp_79_07_mseas.nc --mns "[\'xa\',]" --results_dir test_monsoon --outpj test_monsoon --threshold=2.5' - print("CMD:",cmd) - p = subprocess.Popen(shlex.split(cmd)) - o, e = p.communicate() + P = create_monsoon_wang_parser() + P.add_args_and_values(["--mp", + "tests/monsoon/data/pr_1961_1999_MRI-CGCM3_regrid_MODS.nc", + "--reference_data_path", + "tests/monsoon/obs/pr_gpcp_79_07_mseas.nc", + "--mns", + "['xa',]", + "--results_dir", + "test_monsoon", + "--outpj", + "test_monsoon", + "--threshold=2.5"]) + args = P.get_parameter() + monsoon_wang_runner(args) test_file = "test_monsoon/out.json" correct_file = "tests/monsoon/mpi.json" - self.compareJsons(test_file,correct_file) + self.compareJsons(test_file, correct_file) os.remove(test_file) - def compareJsons(self, test_file, correct_file): - print("Comparing:",test_file, correct_file) + print("Comparing:", test_file, correct_file) T = pcmdi_metrics.io.base.JSONs([test_file], oneVariablePerFile=False) test = T() - V = pcmdi_metrics.io.base.JSONs([correct_file], oneVariablePerFile=False) + V = pcmdi_metrics.io.base.JSONs( + [correct_file], oneVariablePerFile=False) valid = V() self.assertEqual(test.shape, valid.shape) - tax = test.getAxisList() cax = valid.getAxisList() correct = True for i in range(len(tax)): if not tax[i].id == cax[i].id: - print("Axes index %i have different names, test is '%s' vs expected: '%s'" % (i,tax[i].id, cax[i].id)) + print("Axes index %i have different names, test is '%s' vs expected: '%s'" % ( + i, tax[i].id, cax[i].id)) correct = False for j in range(len(tax[i])): if not tax[i][j] == cax[i][j]: - print("Axes %s, differ at index %i, test value: %s vs expectedi value: %s" % (tax[i].id,j,tax[i][j], cax[i][j])) + print("Axes %s, differ at index %i, test value: %s vs expectedi value: %s" % ( + tax[i].id, j, tax[i][j], cax[i][j])) correct = False if not self.checkAllClose(test, valid): correct = False if not correct: - raise Exception("jsons file %s differ from correct one: %s" % (test_file, correct_file)) + raise Exception("jsons file %s differ from correct one: %s" % ( + test_file, correct_file)) diff --git a/tests/test_pmp_diurnal.py b/tests/test_pmp_diurnal.py index 0ec933337..9981434fd 100644 --- a/tests/test_pmp_diurnal.py +++ b/tests/test_pmp_diurnal.py @@ -8,10 +8,19 @@ import cdms2 import numpy import json +import sys class DiurnalTest(basepmp.PMPTest): + def setUp(self): + if "COVERAGE_PROCESS_START" in os.environ: + runner = "coverage run" + else: + runner = "python" + runner += " {}/".format(os.path.join(sys.prefix, "bin")) + self.runner = runner + def assertSame(self,a,b): self.assertTrue(numpy.ma.allclose(a,b)) @@ -32,16 +41,16 @@ def compare_nc(self,test_name): good = good_out(v) self.assertSame(test,good) - def testDiurnaliComputeStdDailyMean(self): + def teestDiurnaliComputeStdDailyMean(self): data_pth = cdat_info.get_sampledata_path() - cmd = 'computeStdDailyMeansWrapped.py --mp {} --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7'.format(data_pth) + cmd = '{}computeStdDailyMeansWrapped.py --num_workers=1 --mp {} --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7'.format(self.runner, data_pth) p = subprocess.Popen(shlex.split(cmd)) p.communicate() self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_std_of_dailymeans.nc") - def testFourierDiurnalAllGridWrapped(self): - cmd = 'fourierDiurnalAllGridWrapped.py --mp tests/diurnal/results/nc --rd test_data/results/nc -m7' + def teestFourierDiurnalAllGridWrapped(self): + cmd = '{}fourierDiurnalAllGridWrapped.py --num_workers=1 --mp tests/diurnal/results/nc --rd test_data/results/nc -m7'.format(self.runner) p = subprocess.Popen(shlex.split(cmd)) p.communicate() self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_tmean.nc") @@ -50,11 +59,12 @@ def testFourierDiurnalAllGridWrapped(self): def testDiurnalStdDailyVariance(self): self.runJsoner("std_of_dailymeansWrappedInOut.py","pr_Jul_1999_2005_std_of_dailymeans.json","std_of_dailymeans") + def runJsoner(self,script,json_file,ext): - cmd = '{} --region_name=TROPICS --lat1=-30. --lat2=30. --lon1=0. --lon2=360 --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_{}.nc"'.format(script, ext) + cmd = '{}{} --num_workers=1 --region_name=TROPICS --lat1=-30. --lat2=30. --lon1=0. --lon2=360 --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_{}.nc"'.format(self.runner, script, ext) p = subprocess.Popen(shlex.split(cmd)) p.communicate() - cmd = '{} --append --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_{}.nc"'.format(script, ext) + cmd = '{}{} --append --mp tests/diurnal/results/nc --rd test_data/results/jsons -m7 -t "pr_%(model)_%(month)_%(firstyear)-%(lastyear)_{}.nc"'.format(self.runner, script, ext) p = subprocess.Popen(shlex.split(cmd)) p.communicate() good = open("tests/diurnal/results/json/{}".format(json_file)) @@ -67,26 +77,27 @@ def runJsoner(self,script,json_file,ext): good = json.load(good) self.assertEqual(test["RESULTS"],good["RESULTS"]) """ - def testCompositeDiurnalStatisticsWrapped(self): + def teestCompositeDiurnalStatisticsWrapped(self): data_pth = cdat_info.get_sampledata_path() - cmd = 'compositeDiurnalStatisticsWrapped.py --mp {} --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7'.format(data_pth) + cmd = '{}compositeDiurnalStatisticsWrapped.py --num_workers=1 --mp {} --rd test_data/results/nc -t "sample_data_pr_%(model).nc" -m7'.format(self.runner, data_pth) + print("CCOOOMOMMOMONFDFDDFFDSASFGFDSAFGFFGSDFFGFSG", cmd) p = subprocess.Popen(shlex.split(cmd)) p.communicate() self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_diurnal_avg.nc") self.compare_nc("results/nc/pr_CMCC_Jul_1999-2005_diurnal_std.nc") self.compare_nc("results/nc/pr_CMCC_LocalSolarTimes.nc") - def testStd_of_hourlyvaluesWrappedInOut(self): + def teestStd_of_hourlyvaluesWrappedInOut(self): self.runJsoner("std_of_hourlyvaluesWrappedInOut.py","pr_Jul_1999-2005_std_of_hourlymeans.json","diurnal_std") - def testStd_of_meandiurnalcycWrappedInOut(self): + def teestStd_of_meandiurnalcycWrappedInOut(self): self.runJsoner("std_of_meandiurnalcycWrappedInOut.py","pr_Jul_1999-2005_std_of_meandiurnalcyc.json","diurnal_avg") - def testSavg_fourierWrappedInOut(self): + def teestSavg_fourierWrappedInOut(self): self.runJsoner("savg_fourierWrappedInOut.py","pr_Jul_1999-2005_savg_DiurnalFourier.json","S") - def testfourierDiurnalGridpoints(self): - cmd = 'fourierDiurnalGridpoints.py --mp tests/diurnal/results/nc --rd test_data/results/ascii' + def teestfourierDiurnalGridpoints(self): + cmd = '{}fourierDiurnalGridpoints.py --num_workers=1 --mp tests/diurnal/results/nc --rd test_data/results/ascii'.format(self.runner) p = subprocess.Popen(shlex.split(cmd)) p.communicate() self.assertTrue(os.path.exists("test_data/results/ascii/pr_Jul_1999-2005_fourierDiurnalGridPoints.asc")) diff --git a/tests/test_pmp_flake8.py b/tests/test_pmp_flake8.py index 78e739122..83832809e 100644 --- a/tests/test_pmp_flake8.py +++ b/tests/test_pmp_flake8.py @@ -11,7 +11,7 @@ def testFlake8(self): pth = os.path.dirname(__file__) pth = os.path.join(pth, "..") pth = os.path.abspath(pth) - pth = os.path.join(pth, "src/python") + pth = os.path.join(pth, "pcmdi_metrics") nopth = os.path.join(pth, "devel") print() print() @@ -25,7 +25,7 @@ def testFlake8(self): print() print() cmd = "flake8 --show-source --statistics " +\ - "--ignore=F999,F405,E121,E123,E126,E226,E24,E704,W504 " +\ + "--ignore=F999,F405,E121,E123,E126,E226,E24,E704,W605,W504 " +\ "--max-line-length=120 %s --exclude %s" % (pth,nopth) P = subprocess.Popen(shlex.split(cmd), stdin=subprocess.PIPE, diff --git a/tests/test_pmp_portrait_values_on.py b/tests/test_pmp_portrait_values_on.py index 50c0f8f28..d634b2a27 100644 --- a/tests/test_pmp_portrait_values_on.py +++ b/tests/test_pmp_portrait_values_on.py @@ -8,6 +8,8 @@ import genutil import vcs import sys +import pkg_resources +egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") class TestPortraits(basepmpgraphics.TestGraphics): def __init__(self,*args,**kargs): @@ -51,7 +53,7 @@ def test_portrait_values(self): P.PLOT_SETTINGS.ytic2.x2 = P.PLOT_SETTINGS.x2 # P.PLOT_SETTINGS.missing_color = 3 - P.PLOT_SETTINGS.logo = os.path.join(sys.prefix,"share","pmp","graphics","png","PCMDILogo-old_348x300px_72dpi.png") + P.PLOT_SETTINGS.logo = os.path.join(egg_pth, "graphics", "png", "PCMDILogo-old_348x300px_72dpi.png") P.PLOT_SETTINGS.logo.y = .95 P.PLOT_SETTINGS.logo.x = .93 P.PLOT_SETTINGS.logo.width = 85 @@ -61,9 +63,7 @@ def test_portrait_values(self): self.x.scriptrun( os.path.join( - sys.prefix, - "share", - "pmp", + egg_pth, "graphics", 'vcs', 'portraits.scr')) diff --git a/tests/test_pmp_portraits.py b/tests/test_pmp_portraits.py index e7a0e3fec..e067565d3 100644 --- a/tests/test_pmp_portraits.py +++ b/tests/test_pmp_portraits.py @@ -8,6 +8,10 @@ import genutil import vcs import sys +import pkg_resources +one = pkg_resources.Requirement.parse("pcmdi_metrics") +print("ONE:",one) +egg_pth = pkg_resources.resource_filename(one, "share/pmp") class TestPortraits(basepmpgraphics.TestGraphics): def __init__(self,*args,**kargs): @@ -51,7 +55,7 @@ def test_portrait(self): P.PLOT_SETTINGS.ytic2.x2 = P.PLOT_SETTINGS.x2 # P.PLOT_SETTINGS.missing_color = 3 - P.PLOT_SETTINGS.logo = os.path.join(sys.prefix,"share","pmp","graphics","png","PCMDILogo-old_348x300px_72dpi.png") + P.PLOT_SETTINGS.logo = os.path.join(egg_pth, "graphics", "png", "PCMDILogo-old_348x300px_72dpi.png") P.PLOT_SETTINGS.logo.y = .95 P.PLOT_SETTINGS.logo.x = .93 P.PLOT_SETTINGS.logo.width = 85 @@ -61,9 +65,7 @@ def test_portrait(self): self.x.scriptrun( os.path.join( - sys.prefix, - "share", - "pmp", + egg_pth, "graphics", 'vcs', 'portraits.scr')) From 9cf587023f7cc2347473371f27da1f74bc0556c1 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 15 Nov 2018 10:29:26 -0800 Subject: [PATCH 62/84] Json merge (#586) * slowly getting there * ok let's push it up, looks done to me * travis cannot handle more that one job at a time * fix autobounds issue --- pcmdi_metrics/io/base.py | 181 ++++++++++++++++++++++++++---- tests/test_pmp_merge_dims_json.py | 53 +++++++++ 2 files changed, 211 insertions(+), 23 deletions(-) create mode 100644 tests/test_pmp_merge_dims_json.py diff --git a/pcmdi_metrics/io/base.py b/pcmdi_metrics/io/base.py index b669eb3b8..6a0fbed52 100755 --- a/pcmdi_metrics/io/base.py +++ b/pcmdi_metrics/io/base.py @@ -31,6 +31,25 @@ basestring = str +# Group merged axes +def groupAxes(axes, final=[], ids=None, separator="_"): + if axes == []: + return cdms2.createAxis(final, id=separator.join(ids)) + if final == []: + final = [val for val in axes[0]] + ids = [ax.id for ax in axes] + return groupAxes(axes[1:], final, ids) + axis = axes[0] + original_length = len(final) + final = final * len(axis) + idx = 0 + for val in axis: + for i in range(original_length): + final[idx] = "{}{}{}".format(final[idx], separator, val) + idx += 1 + return groupAxes(axes[1:], final, ids) + + # cdutil region object need a serializer def update_dict(d, u): for k, v in u.items(): @@ -45,7 +64,10 @@ def update_dict(d, u): # Platform def populate_prov(prov, cmd, pairs, sep=None, index=1, fill_missing=False): try: - p = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p = subprocess.Popen( + shlex.split(cmd), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) except Exception: return out, stde = p.communicate() @@ -136,7 +158,9 @@ def generateProvenance(): } prov["openGL"] = collections.OrderedDict() populate_prov(prov["openGL"], "glxinfo", pairs, sep=":", index=-1) - prov["openGL"]["GLX"] = {"server": collections.OrderedDict(), "client": collections.OrderedDict()} + prov["openGL"]["GLX"] = { + "server": collections.OrderedDict(), + "client": collections.OrderedDict()} pairs = { "version": "GLX version", } @@ -145,12 +169,22 @@ def generateProvenance(): "vendor": "server glx vendor string", "version": "server glx version string", } - populate_prov(prov["openGL"]["GLX"]["server"], "glxinfo", pairs, sep=":", index=-1) + populate_prov( + prov["openGL"]["GLX"]["server"], + "glxinfo", + pairs, + sep=":", + index=-1) pairs = { "vendor": "client glx vendor string", "version": "client glx version string", } - populate_prov(prov["openGL"]["GLX"]["client"], "glxinfo", pairs, sep=":", index=-1) + populate_prov( + prov["openGL"]["GLX"]["client"], + "glxinfo", + pairs, + sep=":", + index=-1) return prov @@ -198,8 +232,15 @@ def write(self, data, type='json', *args, **kwargs): 'Could not create output directory: %s' % dir_path) if self.type == 'json': - json_version = float(kwargs.get("json_version", data.get("json_version", 3.0))) - json_structure = kwargs.get("json_structure", data.get("json_structure", None)) + json_version = float( + kwargs.get( + "json_version", + data.get( + "json_version", + 3.0))) + json_structure = kwargs.get( + "json_structure", data.get( + "json_structure", None)) if json_version >= 3.0 and json_structure is None: raise Exception( "json_version 3.0 of PMP requires json_structure to be passed" + @@ -232,7 +273,9 @@ def write(self, data, type='json', *args, **kwargs): logging.getLogger("pcmdi_metrics").error('Unknown type: %s' % type) raise RuntimeError('Unknown type: %s' % type) - logging.getLogger("pcmdi_metrics").info('Results saved to a %s file: %s' % (type, file_name)) + logging.getLogger("pcmdi_metrics").info( + 'Results saved to a %s file: %s' % + (type, file_name)) def get(self, var, var_in_file=None, region={}, *args, **kwargs): @@ -342,7 +385,8 @@ def set_target_grid(self, target, regrid_tool='esmf', self.target_grid = target self.target_grid_name = target else: - logging.getLogger("pcmdi_metrics").error('Unknown grid: %s' % target) + logging.getLogger("pcmdi_metrics").error( + 'Unknown grid: %s' % target) raise RuntimeError('Unknown grid: %s' % target) def setup_cdms2(self): @@ -370,7 +414,8 @@ def addDict2Self(self, json_dict, json_struct, json_version): m = V[model] for ref in list(m.keys()): aref = m[ref] - if not(isinstance(aref, dict) and "source" in aref): # not an obs key + if not(isinstance(aref, dict) and + "source" in aref): # not an obs key continue reals = list(aref.keys()) src = reals.pop(reals.index("source")) @@ -399,15 +444,19 @@ def addDict2Self(self, json_dict, json_struct, json_version): domain = "global" sp = new_key.split("_") stat = "_".join(sp[:-1]) - stat_dict = areal2[region2 + domain].get(stat, {}) + stat_dict = areal2[region2 + + domain].get(stat, {}) season = sp[-1] season_dict = stat_dict stat_dict[season] = reg[k] if stat in areal2[region2 + domain]: - areal2[region2 + domain][stat].update(stat_dict) + areal2[region2 + + domain][stat].update(stat_dict) else: - areal2[region2 + domain][stat] = stat_dict - # Now we can replace the realization with the correctly formatted one + areal2[region2 + + domain][stat] = stat_dict + # Now we can replace the realization with the correctly + # formatted one aref[real] = areal2 # restore ref into model m[ref] = aref @@ -417,7 +466,8 @@ def addDict2Self(self, json_dict, json_struct, json_version): m = V[model] for ref in list(m.keys()): aref = m[ref] - if not(isinstance(aref, dict) and "source" in aref): # not an obs key + if not(isinstance(aref, dict) and + "source" in aref): # not an obs key continue reals = list(aref.keys()) src = reals.pop(reals.index("source")) @@ -453,10 +503,12 @@ def addDict2Self(self, json_dict, json_struct, json_version): def get_axes_values_recursive(self, depth, max_depth, data, values): for k in list(data.keys()): - if k not in self.ignored_keys and (isinstance(data[k], dict) or depth == max_depth): + if k not in self.ignored_keys and ( + isinstance(data[k], dict) or depth == max_depth): values[depth].add(k) if depth != max_depth: - self.get_axes_values_recursive(depth + 1, max_depth, data[k], values) + self.get_axes_values_recursive( + depth + 1, max_depth, data[k], values) def get_array_values_from_dict_recursive(self, out, ids, nms, axval, axes): if len(axes) > 0: @@ -477,7 +529,8 @@ def get_array_values_from_dict_recursive(self, out, ids, nms, axval, axes): except Exception: out[tuple(ids)] = 1.e20 - def __init__(self, files=[], structure=[], ignored_keys=[], oneVariablePerFile=True): + def __init__(self, files=[], structure=[], ignored_keys=[], + oneVariablePerFile=True): self.json_version = 3.0 self.json_struct = structure self.data = {} @@ -530,7 +583,8 @@ def getAxisList(self): axes = [] for a in self.json_struct: values.append(set()) - self.get_axes_values_recursive(0, len(self.json_struct) - 1, self.data, values) + self.get_axes_values_recursive( + 0, len(self.json_struct) - 1, self.data, values) autoBounds = cdms2.getAutoBounds() cdms2.setAutoBounds("off") for i, nm in enumerate(self.json_struct): @@ -539,17 +593,34 @@ def getAxisList(self): cdms2.setAutoBounds(autoBounds) return self.axes - def __call__(self, **kargs): + def __call__(self, merge=[], **kargs): """ Returns the array of values""" + ab = cdms2.getAutoBounds() + cdms2.setAutoBounds("off") axes = self.getAxisList() + axes_ids = self.getAxisIds() sh = [] ids = [] + used_ids = [] for a in axes: + # Regular axis not a merged one sh.append(len(a)) # store length to construct array shape ids.append(a.id) # store ids + used_ids.append(a.id) + # first let's see which vars are actually asked for # for now assume all keys means restriction on dims + if "merge" in kargs: + merge = kargs["merge"] + del(kargs["merge"]) + if not isinstance(merge, (list, tuple)): + raise RuntimeError( + "merge keyword must be a list of dimensions to merge together") + + if len(merge) > 0 and not isinstance(merge[0], (list, tuple)): + merge = [merge, ] + for axis_id in kargs: if axis_id not in ids: raise ValueError("Invalid axis '%s'" % axis_id) @@ -579,7 +650,71 @@ def __call__(self, **kargs): # Now let's fill this array self.get_array_values_from_dict_recursive(array, [], [], [], axes) - array = MV2.masked_greater(array, 9.e19) - array.id = "pmp" - array.setAxisList(axes) - return array + # Ok at this point we need to take care of merged axes + # First let's create the merged axes + new_axes = [groupAxes([self.getAxis(x) for x in merger]) + for merger in merge] + sh2 = list(sh) + for merger in merge: + for merger in merge: # loop through all possible merging + merged_indices = [] + for id in merger: + merged_indices.append(axes_ids.index(id)) + for indx in merged_indices: + sh2[indx] = 1 + smallest = min(merged_indices) + for indx in merged_indices: + sh2[smallest] *= sh[indx] + + myorder = [] + for index in range(len(sh)): + if index in myorder: + continue + for merger in merge: + merger = [axes_ids.index(x) for x in merger] + if index in merger and index not in myorder: + for indx in merger: + myorder.append(indx) + if index not in myorder: # ok did not find this one anywhere + myorder.append(index) + + outData = numpy.transpose(array, myorder) + outData = numpy.reshape(outData, sh2) + + yank = [] + for merger in merge: + merger = [axes_ids.index(x) for x in merger] + mn = min(merger) + merger.remove(mn) + yank += merger + yank = sorted(yank, reverse=True) + for yk in yank: + extract = (slice(0, None),) * yk + extract += (0,) + outData = outData[extract] + # Ok now let's apply the newaxes + sub = 0 + outData = MV2.array(outData) + merged_axis_done = [] + for index in range(len(array.shape)): + foundInMerge = False + for imerge, merger in enumerate(merge): + merger = [axes_ids.index(x) for x in merger] + if index in merger: + foundInMerge = True + if imerge not in merged_axis_done: + merged_axis_done.append(imerge) + setMergedAxis = imerge + else: + setMergedAxis = -1 + if not foundInMerge: + outData.setAxis(index - sub, axes[index]) + else: + if setMergedAxis == -1: + sub += 1 + else: + outData.setAxis(index - sub, new_axes[setMergedAxis]) + outData = MV2.masked_greater(outData, 9.e19) + outData.id = "pmp" + cdms2.setAutoBounds(ab) + return outData diff --git a/tests/test_pmp_merge_dims_json.py b/tests/test_pmp_merge_dims_json.py new file mode 100644 index 000000000..5bc0bf9fc --- /dev/null +++ b/tests/test_pmp_merge_dims_json.py @@ -0,0 +1,53 @@ +import pcmdi_metrics +import json +import unittest +import numpy + + +class JSONTest(unittest.TestCase): + def testMerge(self): + data = {} + for i in range(8): + data[i] = {} + for j in range(7): + data[i][j] = {} + for k in range(6): + data[i][j][k] = {} + for l in range(5): + data[i][j][k][l] = {} + for m in range(4): + data[i][j][k][l][m] = i + j/10. + k/100. + l/1000. + m/10000. + + out = {"RESULTS": data, + "json_structure": ["i", "j", "k", "l", "m"], + "json_version": 3.0 + } + + with open("data.json", "w") as f: + json.dump(out, f) + + + J = pcmdi_metrics.io.base.JSONs(["data.json"], oneVariablePerFile=False) + + + regular = J() + self.assertEqual(regular.shape, (8,7,6,5,4)) + merged_one = J(merge=[["k", "l"]]) + self.assertEqual(merged_one.shape, (8,7,30,4)) + + merged_two = J(merge=[["j", "m"], ["k", "l"]]) + self.assertEqual(merged_two.shape, (8,28,30)) + merged_three = J(merge=[["k", "l"], ["j","m"]]) + self.assertEqual(merged_three.shape, (8,28,30)) + merged_four = J(merge=[["j","m"],["k","i"]]) + self.assertEqual(merged_four.shape, (48, 28, 5)) + + merged_five = J(merge=[["i","k","l"], ["j", "m"]]) + self.assertEqual(merged_five.shape, (240, 28)) + regular = regular.filled() + merged_six = J(merge=["l","m"]).filled() + self.assertEqual(merged_six.shape, (8,7,6,20)) + self.assertTrue(numpy.allclose(regular[0,0,0].flat, merged_six[0,0,0].flat)) + + merged_seven = J(merge=["m","l"]).filled() + self.assertTrue(numpy.allclose(numpy.transpose(regular[0,0,0]).flat, merged_seven[0,0,0].flat)) From 0bebaab0221b58488986dcb9f17aa86206c19520 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 20 Dec 2018 17:43:37 -0800 Subject: [PATCH 63/84] testing new vcs (#588) --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5a43b6e59..e43a2e8b4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,7 +16,7 @@ aliases: - &create_conda_env name: create_conda_env environment: - PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5'" + PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5' 'vtk-cdat>8.1'" CHANNELS: "-c cdat/label/nightly -c cdat-forge -c conda-forge -c cdat -c pcmdi" command: | export PATH=$WORKDIR/miniconda/bin:$PATH From 26dae6628e40328d2a04a4dd4f09d919de41a56a Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Mon, 14 Jan 2019 10:54:23 -0800 Subject: [PATCH 64/84] adding version.py to repo so that nightly test pass again on python2 (they are run from repo) --- pcmdi_metrics/version.py | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 pcmdi_metrics/version.py diff --git a/pcmdi_metrics/version.py b/pcmdi_metrics/version.py new file mode 100644 index 000000000..88e047637 --- /dev/null +++ b/pcmdi_metrics/version.py @@ -0,0 +1,3 @@ +__version__ = 'v1.2' +__git_tag_describe__ = 'v1.2-35-g0bebaab' +__git_sha1__ = '0bebaab0221b58488986dcb9f17aa86206c19520' From 7893fb033fdf8aa1fbbe1344fb8deb2cc950ad73 Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Wed, 13 Feb 2019 15:32:26 -0800 Subject: [PATCH 65/84] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7520f032e..655c33826 100755 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ PCMDI metrics package (PMP) [![Anaconda-Server Badge](https://anaconda.org/pcmdi/pcmdi_metrics/badges/downloads.svg)](https://anaconda.org/pcmdi/pcmdi_metrics) [![CircleCI](https://circleci.com/gh/PCMDI/pcmdi_metrics.svg?style=svg)](https://circleci.com/gh/PCMDI/pcmdi_metrics) [![Coverage Status](https://coveralls.io/repos/github/PCMDI/pcmdi_metrics/badge.svg)](https://coveralls.io/github/PCMDI/pcmdi_metrics) -![repo size](https://reposs.herokuapp.com/?path=PCMDI/pcmdi_metrics) The PCMDI metrics package is used to objectively compare results from climate models with observations using well-established statistical tests. Results are produced in the context of all model simulations contributed to CMIP5 and earlier CMIP phases. Among other purposes, this enables modeling groups to evaluate changes during the development cycle in the context of the structural error distribution of the multi-model ensemble. Currently, the comparisons emphasize large- to global-scale annual cycle performance metrics. Current work in v1.x development branches include established statistics for ENSO, regional monsoon precipitation, and the diurnal cycle of precipitation. These diagnostics will be included in a future PMP release. From 78c6155722953fc7e9daf112fbd2e26b45af8be9 Mon Sep 17 00:00:00 2001 From: gleckler1 Date: Fri, 1 Mar 2019 10:06:47 -0800 Subject: [PATCH 66/84] For peter (#591) * use templates keys for args * works for me * fixing model prob and paralel driver' * version changes * version bla * Trying to let peter overwrite path via subpath keyword * pefrect way * remove C commments * first pass at getting correct version for test suite * flake8ed , caught a bunch of things in dump_cmor as well * no py37 yet on mac need to force 3.6 --- .circleci/config.yml | 4 +- pcmdi_metrics/driver/observation.py | 26 +- pcmdi_metrics/driver/pmp_parameter.py | 31 +- .../misc/scripts/parallelize_driver.py | 1 + .../pcmdi/mean_climate_metrics_driver.py | 2 + .../scripts/pcmdi_compute_climatologies.py | 700 +++++++++--------- pcmdi_metrics/version.py | 4 +- 7 files changed, 411 insertions(+), 357 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e43a2e8b4..28612456c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,7 +17,7 @@ aliases: name: create_conda_env environment: PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5' 'vtk-cdat>8.1'" - CHANNELS: "-c cdat/label/nightly -c cdat-forge -c conda-forge -c cdat -c pcmdi" + CHANNELS: "-c cdat/label/nightly -c conda-forge -c pcmdi" command: | export PATH=$WORKDIR/miniconda/bin:$PATH conda config --set always_yes yes --set changeps1 no @@ -26,7 +26,7 @@ aliases: if [[ $PY_VER = "py2" ]]; then conda create -q -n $PY_VER $CHANNELS "python<3" $PKGS $FFMPEG else - conda create -q -n $PY_VER $CHANNELS "python>3" $PKGS $FFMPEG $COVERAGE_PKGS + conda create -q -n $PY_VER $CHANNELS "python=3.6" $PKGS $FFMPEG $COVERAGE_PKGS fi - &setup_pmp diff --git a/pcmdi_metrics/driver/observation.py b/pcmdi_metrics/driver/observation.py index 8c403ca0d..c4d8b289a 100644 --- a/pcmdi_metrics/driver/observation.py +++ b/pcmdi_metrics/driver/observation.py @@ -13,11 +13,9 @@ class OBS(Base): ''' Creates an output the netCDF file for an observation. ''' + def __init__(self, root, var, obs_dict, obs='default', file_mask_template=None): - template = "%(realm)/%(frequency)/%(variable)/" +\ - "%(reference)/%(ac)/%(filename)" - super(OBS, self).__init__(root, template, file_mask_template) logging.getLogger("pcmdi_metrics").setLevel(LOG_LEVEL) @@ -29,6 +27,13 @@ def __init__(self, root, var, obs_dict, obs='default', if isinstance(obs_name, dict): obs_name = obs + template = obs_dict[var][obs_name].get("template", "%(realm)/%(frequency)/%(variable)/" + + "%(reference)/%(ac)/%(filename)") + print("OBFDDF:", obs_dict[var]) + print("TEMPLATE:", root, template) + + super(OBS, self).__init__(root, template, file_mask_template) + obs_table = obs_dict[var][obs_name]['CMIP_CMOR_TABLE'] self.realm = '' self.frequency = '' @@ -39,6 +44,9 @@ def __init__(self, root, var, obs_dict, obs='default', self.reference = obs_name self.variable = var + if "subpath" in obs_dict[var][obs_name]: + self.template = obs_dict[var][obs_name]["subpath"] + def setup_based_on_obs_table(self, obs_table): ''' Set the realm, frequency, ac based on the CMIP_CMOR_TABLE value in the obs dict.''' @@ -59,6 +67,7 @@ def setup_based_on_obs_table(self, obs_table): class Observation(DataSet): ''' Handles all the computation (setting masking, target grid, etc) and some file I/O related to observations. ''' + def __init__(self, parameter, var_name_long, region, obs, obs_dict, data_path, sftlf): super(Observation, self).__init__(parameter, var_name_long, region, @@ -98,7 +107,8 @@ def get_obs_from_obs_dict(self): dictionary for self.var and self.obs_or_model. ''' if isinstance(self.obs_dict[self.var][self.obs_or_model], basestring): obs_from_obs_dict = \ - self.obs_dict[self.var][self.obs_dict[self.var][self.obs_or_model]] + self.obs_dict[self.var][self.obs_dict[self.var] + [self.obs_or_model]] else: obs_from_obs_dict = self.obs_dict[self.var][self.obs_or_model] return obs_from_obs_dict @@ -128,12 +138,12 @@ def get(self): except Exception as e: if self.level is not None: logging.getLogger("pcmdi_metrics").error("{} {} {} {}".format('Failed opening 4D OBS', - self.var, self.obs_or_model, - e)) + self.var, self.obs_or_model, + e)) else: logging.getLogger("pcmdi_metrics").error("{} {} {} {}".format('Failed opening 3D OBS', - self.var, - self.obs_or_model, e)) + self.var, + self.obs_or_model, e)) def hash(self): ''' Return a hash of the file. ''' diff --git a/pcmdi_metrics/driver/pmp_parameter.py b/pcmdi_metrics/driver/pmp_parameter.py index 5d3a705c1..7fdca2e69 100755 --- a/pcmdi_metrics/driver/pmp_parameter.py +++ b/pcmdi_metrics/driver/pmp_parameter.py @@ -25,18 +25,20 @@ def process_templated_argument(self, name, default_value="*", extras=None): """ process = getattr(self, name, None) + print("PROCESS IS:", process) if process is None: # Ok not an argument from arg_parse maybe a template or string constructor itself if isinstance(name, basestring): process = name elif isinstance(name, genutil.StringConstructor): process = name.template else: - raise RuntimeError("Could not figure out how to process argument {}".format(name)) - - if not isinstance(process, basestring): raise RuntimeError( "Could not figure out how to process argument {}".format(name)) + if not isinstance(process, basestring): + raise RuntimeError( + "Could not figure out how to process argument {}".format(name)) + if extras is None: sources = [] elif not isinstance(extras, (list, tuple)): @@ -97,7 +99,8 @@ def check_str(self, str_var, str_var_name): ) if str_var == '': - logging.getLogger("pcmdi_metrics").warning("%s is blank." % str_var_name) + logging.getLogger("pcmdi_metrics").warning( + "%s is blank." % str_var_name) def check_str_seq_in_str_list(self, str_sequence, str_sequence_name, str_vars_list): @@ -116,15 +119,15 @@ def check_str_seq_in_str_list(self, str_sequence, def check_str_var_in_str_list(self, str_var, str_var_name, str_vars_list): if type(str_var) is not str: - raise TypeError( - "%s is the wrong type. It must be a string." % str_var_name - ) + raise TypeError( + "%s is the wrong type. It must be a string." % str_var_name + ) if str_var not in str_vars_list: - logging.getLogger("pcmdi_metrics").warning( - ("%s might not be a valid value in %s." - % (str_var, str_var_name)) - ) + logging.getLogger("pcmdi_metrics").warning( + ("%s might not be a valid value in %s." + % (str_var, str_var_name)) + ) def check_case_id(self): self.check_str(self.case_id, 'case_id') @@ -138,7 +141,8 @@ def check_reference_data_set(self): ) if self.reference_data_set == [] or self.reference_data_set == (): - logging.getLogger("pcmdi_metrics").error("reference_data_set is blank.") + logging.getLogger("pcmdi_metrics").error( + "reference_data_set is blank.") def check_test_data_set(self): if type(self.test_data_set) is not list \ @@ -170,7 +174,8 @@ def check_vars(self): def check_ref(self): ref_values = ['default', 'all', 'alternate', 'ref3'] - self.check_str_seq_in_str_list(self.reference_data_set, 'reference_data_set', ref_values) + self.check_str_seq_in_str_list( + self.reference_data_set, 'reference_data_set', ref_values) def check_target_grid(self): self.check_str_var_in_str_list( diff --git a/pcmdi_metrics/misc/scripts/parallelize_driver.py b/pcmdi_metrics/misc/scripts/parallelize_driver.py index 6b3b4af53..c6d8b1bb4 100644 --- a/pcmdi_metrics/misc/scripts/parallelize_driver.py +++ b/pcmdi_metrics/misc/scripts/parallelize_driver.py @@ -17,6 +17,7 @@ parser.add_argument("--driver", help="driver to prallelize") parser.add_argument("--bash", help="generate a bash script rather than running in parallel", action="store_true") parser.use("num_workers") +parser.add_argument("--granularize") p = parser.get_parameter() param_name = parser.view_args().parameters diff --git a/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py b/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py index 5030efa91..a3e6688fd 100644 --- a/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py +++ b/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py @@ -79,6 +79,8 @@ def load_obs_dict(self): if hasattr(self.parameter, 'custom_observations'): # Can't use load_path_as_file_obj() b/c might not be in /share/ + print("WE ARE USING CUSTOM OBS:", + self.parameter.custom_observations) cust_obs_json_file = open(self.parameter.custom_observations) obs_dict.update(json.load(cust_obs_json_file)) cust_obs_json_file.close() diff --git a/pcmdi_metrics/pcmdi/scripts/pcmdi_compute_climatologies.py b/pcmdi_metrics/pcmdi/scripts/pcmdi_compute_climatologies.py index 6ada495c0..28e56647c 100644 --- a/pcmdi_metrics/pcmdi/scripts/pcmdi_compute_climatologies.py +++ b/pcmdi_metrics/pcmdi/scripts/pcmdi_compute_climatologies.py @@ -9,6 +9,7 @@ from pcmdi_metrics.driver.pmp_parser import PMPParser import glob import genutil +import cdp try: import cmor @@ -18,104 +19,6 @@ parser = PMPParser(description='Generates Climatologies from files') -p = parser.add_argument_group('processing') -p.add_argument( - "--verbose", - action="store_true", - dest="verbose", - help="verbose output", - default=True) -p.add_argument( - "--quiet", - action="store_false", - dest="verbose", - help="quiet output") -p.add_argument("-v", "--variable", - dest="variable", - default=None, - # required=True, - help="variable to use for climatology") -p.add_argument("-t", "--threshold", - dest='threshold', - default=.5, - type=float, - help="Threshold bellow which a season is considered as " + - "not having enough data to be computed") -p.add_argument("-c", "--climatological_season", - dest="seasons", - default=["all"], - nargs="*", - choices=["djf", "DJF", "ann", "ANN", "all", "ALL", - "mam", "MAM", "jja", "JJA", "son", "SON", "year", - "YEAR"], - help="Which season you wish to produce" - ) -p.add_argument("-s", "--start", - dest="start", - default=None, - help="Start for climatology: date, value or index " + - "as determined by -i arg") -p.add_argument("-e", "--end", - dest="end", - default=None, - help="End for climatology: date, value or index " + - "as determined by -I arg") -p.add_argument("-i", "--indexation-type", - dest="index", - default="date", - choices=["date", "value", "index"], - help="indexation type") -p.add_argument("-o", "--output_filename_template", - help="template for output filename", - default="%(variable)_PMP_%(model_id)_%(experiment_id)_" + - "r%(realization)i%(initialization_method)p%(physics_version)" + - "_%(start)-%(end)-clim-%(season).nc" - ) -p.add_argument("-f", "--filename_template", - dest="filename_template", - help="Input file template") -p.add_argument("-m", "--model", - dest="model", - help="Model Name") -p.add_argument("-b", "--bounds", - action="store_true", - dest="bounds", - default=False, - help="reset bounds to monthly") -# parser.use("results_dir", p) -parser.use("results_dir") -parser.use("modpath") -c = parser.add_argument_group("CMOR options") -c.add_argument("--use-cmor", dest="cmor", default=False, action="store_true") -c.add_argument("-D", "--drs", - action="store_true", - dest="drs", - default=False, - help="Use drs for output path" - ) -c.add_argument("-T", "--table", - dest="table", - nargs="+", - help="CMOR table") -c.add_argument("-U", "--units", - dest="units", - help="variable(s) units") -c.add_argument("-V", "--cf-var", - dest="cf_var", - help="variable name in CMOR tables") -c.add_argument("-E", "--experiment_id", default=None, - help="'experiment id' for this run (will try to get from input file", - ) -c.add_argument("-I", "--institution", default=None, - help="'institution' for this run (will try to get from input file", - ) -c.add_argument("-S", "--source", default=None, - help="'source' for this run (will try to get from input file", - ) -c.add_argument("-X", "--variable_extra_args", default="{}", - help="Potential extra args to pass to cmor_variable call", - ) - cmor_xtra_args = ["contact", "references", "model_id", "institute_id", "forcing", "parent_experiment_id", @@ -124,37 +27,131 @@ "branch_time", "physics_version", "initialization_method", ] -for x in cmor_xtra_args: - c.add_argument("--%s" % x, default=None, - dest=x, - help="'%s' for this run (will try to get from input file" % x - ) -A = parser.get_parameter() -# season dictionary -season_function = { - "djf": cdutil.times.DJF, - "mam": cdutil.times.MAM, - "jja": cdutil.times.JJA, - "son": cdutil.times.SON, - "ann": cdutil.times.ANNUALCYCLE, - "year": cdutil.times.YEAR, -} +def load_parser(parser): + p = parser.add_argument_group('processing') + p.add_argument( + "--verbose", + action="store_true", + dest="verbose", + help="verbose output", + default=True) + p.add_argument( + "--quiet", + action="store_false", + dest="verbose", + help="quiet output") + p.add_argument("-v", "--variable", + dest="variable", + default=None, + # required=True, + help="variable to use for climatology") + p.add_argument("-t", "--threshold", + dest='threshold', + default=.5, + type=float, + help="Threshold bellow which a season is considered as " + + "not having enough data to be computed") + p.add_argument("-c", "--climatological_season", + dest="seasons", + default=["all"], + nargs="*", + choices=["djf", "DJF", "ann", "ANN", "all", "ALL", + "mam", "MAM", "jja", "JJA", "son", "SON", "year", + "YEAR"], + help="Which season you wish to produce" + ) + p.add_argument("-s", "--start", + dest="start", + default=None, + help="Start for climatology: date, value or index " + + "as determined by -i arg") + p.add_argument("-e", "--end", + dest="end", + default=None, + help="End for climatology: date, value or index " + + "as determined by -I arg") + p.add_argument("-i", "--indexation-type", + dest="index", + default="date", + choices=["date", "value", "index"], + help="indexation type") + p.add_argument("-o", "--output_filename_template", + help="template for output filename", + default="%(variable)_PMP_%(model_id)_%(experiment_id)_" + + "r%(realization)i%(initialization_method)p%(physics_version)" + + "_%(start)-%(end)-clim-%(season).nc" + ) + p.add_argument("-f", "--filename_template", + dest="filename_template", + help="Input file template") + p.add_argument("-m", "--model", + dest="model", + help="Model Name") + p.add_argument("-b", "--bounds", + action="store_true", + dest="bounds", + default=False, + help="reset bounds to monthly") + p.add_argument("--mapping_dictionary", default={}, type=dict, + help="A mapping dictionary to map undefnied parameters") + # parser.use("results_dir", p) + parser.use("results_dir") + parser.use("modpath") + c = parser.add_argument_group("CMOR options") + c.add_argument("--use-cmor", dest="cmor", + default=False, action="store_true") + c.add_argument("-D", "--drs", + action="store_true", + dest="drs", + default=False, + help="Use drs for output path" + ) + c.add_argument("-T", "--table", + dest="table", + nargs="+", + help="CMOR table") + c.add_argument("-U", "--units", + dest="units", + help="variable(s) units") + c.add_argument("-V", "--cf-var", + dest="cf_var", + help="variable name in CMOR tables") + c.add_argument("-E", "--experiment_id", default=None, + help="'experiment id' for this run (will try to get from input file", + ) + c.add_argument("-I", "--institution", default=None, + help="'institution' for this run (will try to get from input file", + ) + c.add_argument("-S", "--source", default=None, + help="'source' for this run (will try to get from input file", + ) + c.add_argument("-X", "--variable_extra_args", default="{}", + help="Potential extra args to pass to cmor_variable call", + ) + + for x in cmor_xtra_args: + c.add_argument("--%s" % x, default=None, + dest=x, + help="'%s' for this run (will try to get from input file" % x + ) -results_dir = A.process_templated_argument("results_dir") -A.results_dir = results_dir() -filename_in = A.process_templated_argument(os.path.join(A.modpath, A.filename_template)) +load_parser(parser) -if A.verbose: - print("filename in after templating:", filename_in()) -filename = glob.glob(filename_in())[0] +As = parser.get_parameters() -if not os.path.exists(filename): - raise RuntimeError("file '{}' doe not exits".format(filename)) +parser = PMPParser(description='Generates Climatologies from files') +load_parser(parser) -filein = cdms2.open(filename) +for A in As: + for tmpl in [A.modpath, A.filename_template, A.output_filename_template]: + con = genutil.StringConstructor(tmpl) + print("TEMPLE:", con.template) + for k in con.keys(): + print("ADDING OPTION:", k) + parser.add_argument("--{}".format(k)) def getCalendarName(cal): @@ -163,7 +160,7 @@ def getCalendarName(cal): return att[:-8].lower() -def dump_cmor(A, s, time, bounds): +def dump_cmor(A, data, time, bounds, season): inst = checkCMORAttribute("institution") src = checkCMORAttribute("source") exp = checkCMORAttribute("experiment_id") @@ -286,7 +283,7 @@ def dump_cmor(A, s, time, bounds): # Ok CMOR is ready let's create axes cmor_axes = [] - for ax in s.getAxisList(): + for ax in data.getAxisList(): if ax.isLatitude(): table_entry = "latitude" elif ax.isLongitude(): @@ -296,9 +293,9 @@ def dump_cmor(A, s, time, bounds): if ax.isTime(): table_entry = "time2" ntimes = len(ax) - axvals = numpy.array(values) + axvals = numpy.array(time) axbnds = numpy.array(bounds) - axunits = Tunits + axunits = ax.units else: axvals = ax[:] axbnds = ax.getBounds() @@ -326,12 +323,12 @@ def dump_cmor(A, s, time, bounds): var_id = cmor.variable(table_entry=var_entry, units=units, axis_ids=cmor_axes, - type=s.typecode(), - missing_value=s.missing_value, + type=data.typecode(), + missing_value=data.missing_value, **kw) # And finally write the data - data2 = s.filled(s.missing_value) + data2 = data.filled(data.missing_value) cmor.write(var_id, data2, ntimes_passed=ntimes) # Close cmor @@ -350,7 +347,7 @@ def dump_cmor(A, s, time, bounds): print("closed cmor") -def checkCMORAttribute(att, source=filein): +def checkCMORAttribute(att, source): res = getattr(A, att) if res is None: if hasattr(source, att): @@ -374,214 +371,253 @@ def store_attributes(var): return attributes -fvars = list(filein.variables.keys()) -v = A.variable -if v not in fvars: - raise RuntimeError( - "Variable '%s' is not contained in input file(s)" % - v) -V = filein[v] -tim = V.getTime().clone() -# "monthly" -if A.bounds: - cdutil.times.setTimeBoundsMonthly(tim) -# Now make sure we can get the requested period -if A.start is None: - i0 = 0 -else: # Ok user specified a start time - if A.index == "index": # index-based slicing - if int(A.start) >= len(tim): - raise RuntimeError( - "For variable %s you requested start time to be at index: %i but the file only has %i time steps" % - (v, int( - A.start), len(tim))) - i0 = int(A.start) - elif A.index == "value": # actual value used for slicing - v0 = float(A.start) - try: - i0, tmp = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find value %s for start time for variable %s" % - (A.start, v)) - elif A.index == "date": - v0 = A.start - # When too close from bounds it messes it up, adding a minute seems to help - v0 = cdtime.s2c(A.start) - v0 = v0.add(1, cdtime.Minute) - try: - i0, tmp = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find start time %s for variable: %s" % - (A.start, v)) - -if A.end is None: - i1 = None -else: # Ok user specified a end time - if A.index == "index": # index-based slicing - if int(A.end) >= len(tim): - raise RuntimeError( - "For variable %s you requested end time to be at index: %i but the file only has %i time steps" % - (v, int( - A.end), len(tim))) - i1 = int(A.end) - elif A.index == "value": # actual value used for slicing - v0 = float(A.end) - try: - tmp, i1 = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find value %s for end time for variable %s" % - (A.end, v)) - elif A.index == "date": - v0 = A.end - # When too close from bounds it messes it up, adding a minute seems to help - v0 = cdtime.s2c(A.end) - v0 = v0.add(1, cdtime.Minute) - try: - tmp, i1 = tim.mapInterval((v0, v0), 'cob') - except Exception: - raise RuntimeError( - "Could not find end time %s for variable: %s" % - (A.end, v)) -# Read in data -data = V(time=slice(i0, i1)) -if A.verbose: - print("DATA:", data.shape, data.getTime().asComponentTime() - [0], data.getTime().asComponentTime()[-1]) -if A.bounds: - cdutil.times.setTimeBoundsMonthly(data) -# Now we can actually read and compute the climo -seasons = [s.lower() for s in A.seasons] -if "all" in seasons: - seasons = ["djf", "mam", "jja", "son", "year", "ann"] - -for season in seasons: - s = season_function[season].climatology( - data, criteriaarg=[A.threshold, None]) - g = season_function[season].get(data, criteriaarg=[A.threshold, None]) - # Ok we know we have monthly data - # We want to tweak bounds - T = data.getTime() - Tg = g.getTime() - istart = 0 - while numpy.ma.allequal(g[istart].mask, True): - istart += 1 - iend = -1 - while numpy.ma.allequal(g[iend].mask, True): - iend -= 1 - if iend == -1: - iend = None - else: - iend += 1 - if iend is None: - iend = len(Tg) - Tg = Tg.subAxis(istart, iend) +def runClim(A): - cal = T.getCalendar() - cal_name = getCalendarName(cal) - Tunits = T.units - bnds = T.getBounds() - tc = T.asComponentTime() + print("OK SO START IS:", A.start) + # season dictionary + season_function = { + "djf": cdutil.times.DJF, + "mam": cdutil.times.MAM, + "jja": cdutil.times.JJA, + "son": cdutil.times.SON, + "ann": cdutil.times.ANNUALCYCLE, + "year": cdutil.times.YEAR, + } + + print("BEFORE RPOCESEED:", A.results_dir) +# print("A VAR:", A.variable) +# print("A REF:", A.reference) + results_dir = A.process_templated_argument("results_dir") + print("RESDIR:", results_dir.template) + A.results_dir = results_dir() + + print("HERE?", os.path.join(A.modpath, A.filename_template)) + print("A.variable", A.variable, A.model) + filename_in = A.process_templated_argument( + os.path.join(A.modpath, A.filename_template)) if A.verbose: - print("TG:", Tg.asComponentTime()[0]) - print("START END THRESHOLD:", istart, iend, A.threshold, len(Tg)) - # print "SEASON:", season, "ORIGINAL:", T.asComponentTime() - b1 = cdtime.reltime(Tg.getBounds()[0][0], Tg.units) - b2 = cdtime.reltime(Tg.getBounds()[-1][1], Tg.units) + print("filename in after templating:", filename_in()) + filename = glob.glob(filename_in())[0] - # First and last time points - y1 = cdtime.reltime(Tg[0], T.units) - y2 = cdtime.reltime(Tg[-1], T.units) + if not os.path.exists(filename): + raise RuntimeError("file '{}' doe not exits".format(filename)) - # Mid year is: - yr = (y2.value + y1.value) / 2. - y = cdtime.reltime(yr, T.units).tocomp(cal).year + filein = cdms2.open(filename) + fvars = list(filein.variables.keys()) + v = A.variable + if v not in fvars: + raise RuntimeError( + "Variable '%s' is not contained in input file(s)" % + v) + V = filein[v] + tim = V.getTime().clone() + # "monthly" + if A.bounds: + cdutil.times.setTimeBoundsMonthly(tim) + # Now make sure we can get the requested period + if A.start is None: + i0 = 0 + else: # Ok user specified a start time + if A.index == "index": # index-based slicing + if int(A.start) >= len(tim): + raise RuntimeError( + "For variable %s you requested start time to be at index: %i but the file only has %i time steps" % + (v, int( + A.start), len(tim))) + i0 = int(A.start) + elif A.index == "value": # actual value used for slicing + v0 = float(A.start) + try: + i0, tmp = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find value %s for start time for variable %s" % + (A.start, v)) + elif A.index == "date": + v0 = A.start + # When too close from bounds it messes it up, adding a minute seems to help + v0 = cdtime.s2c(A.start) + v0 = v0.add(1, cdtime.Minute) + try: + i0, tmp = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find start time %s for variable: %s" % + (A.start, v)) + + if A.end is None: + i1 = None + else: # Ok user specified a end time + if A.index == "index": # index-based slicing + if int(A.end) >= len(tim): + raise RuntimeError( + "For variable %s you requested end time to be at index: %i but the file only has %i time steps" % + (v, int( + A.end), len(tim))) + i1 = int(A.end) + elif A.index == "value": # actual value used for slicing + v0 = float(A.end) + try: + tmp, i1 = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find value %s for end time for variable %s" % + (A.end, v)) + elif A.index == "date": + v0 = A.end + # When too close from bounds it messes it up, adding a minute seems to help + v0 = cdtime.s2c(A.end) + v0 = v0.add(1, cdtime.Minute) + try: + tmp, i1 = tim.mapInterval((v0, v0), 'cob') + except Exception: + raise RuntimeError( + "Could not find end time %s for variable: %s" % + (A.end, v)) + # Read in data + data = V(time=slice(i0, i1)) if A.verbose: - print("We found data from ", y1.tocomp(cal), - "to", y2.tocomp(cal), "MID YEAR:", y) - print("bounds:", b1.tocomp(cal), b2.tocomp(cal)) - - values = [] - bounds = [] - - # Loop thru clim month and set value and bounds appropriately - ts = s.getTime().asComponentTime() - for ii in range(s.shape[0]): - t = ts[ii] - t.year = y - values.append(t.torel(Tunits, cal).value) - if (s.shape[0] > 1): - B1 = b1.tocomp(cal).add(ii, cdtime.Month) - B2 = b2.tocomp(cal).add(ii - s.shape[0] + 1, cdtime.Month) + print("DATA:", data.shape, data.getTime().asComponentTime() + [0], data.getTime().asComponentTime()[-1]) + if A.bounds: + cdutil.times.setTimeBoundsMonthly(data) + # Now we can actually read and compute the climo + seasons = [s.lower() for s in A.seasons] + if "all" in seasons: + seasons = ["djf", "mam", "jja", "son", "year", "ann"] + + for season in seasons: + s = season_function[season].climatology( + data, criteriaarg=[A.threshold, None]) + g = season_function[season].get(data, criteriaarg=[A.threshold, None]) + # Ok we know we have monthly data + # We want to tweak bounds + T = data.getTime() + Tg = g.getTime() + istart = 0 + while numpy.ma.allequal(g[istart].mask, True): + istart += 1 + iend = -1 + while numpy.ma.allequal(g[iend].mask, True): + iend -= 1 + if iend == -1: + iend = None else: - B1 = b1 - B2 = b2 - # b2.year = y - # b1.year = y - # if b1.cmp(b2) > 0: # ooops - # if b1.month>b2.month and b1.month-b2.month!=11: - # b1.year -= 1 - # else: - # b2.year += 1 - # if b1.month == b2.month: - # b2.year = b1.year+1 + iend += 1 + if iend is None: + iend = len(Tg) + Tg = Tg.subAxis(istart, iend) + + cal = T.getCalendar() + cal_name = getCalendarName(cal) + Tunits = T.units + bnds = T.getBounds() + tc = T.asComponentTime() + if A.verbose: - print(B1.tocomp(cal), "<", t, "<", B2.tocomp(cal)) - bounds.append([B1.torel(Tunits, cal).value, - B2.torel(Tunits, cal).value]) - -fnmout = genutil.StringConstructor(A.output_filename_template) - -if "model_id" in fnmout.keys(): - model_id = checkCMORAttribute("model_id") -if "experiment_id" in fnmout.keys(): - experiment_id = checkCMORAttribute("experiment_id") -if "realization" in fnmout.keys(): - realization = checkCMORAttribute("realization") -if "initialization_method" in fnmout.keys(): - initialization = checkCMORAttribute("initialization_method") -if "physics_version" in fnmout.keys(): - physics_version = checkCMORAttribute("physics_version") -if A.cmor and hasCMOR: - dump_cmor(A, s, values, bounds) -else: - if A.cmor and not hasCMOR: - print("Your Python does not have CMOR, using regular cdms to write out files") - if not os.path.exists(A.results_dir): - os.makedirs(A.results_dir) - end_tc = tc[-1].add(1, cdtime.Month) - - # Populate fout template with values - start = "{}{:02d}".format(tc[0].year, tc[0].month) - end = "{}{:02d}".format(end_tc.year, end_tc.month) - for k in fnmout.keys(): - try: - setattr(fnmout, k, getattr(A, k)) - except Exception: - pass - # overwrite with locals - try: - setattr(fnmout, k, locals()[k]) - except Exception: - pass - nm = os.path.join(A.results_dir, fnmout()) - f = cdms2.open(nm, "w") - # Global attributes copied - for att, value in store_globals(filein).items(): - setattr(f, att, value) - t = cdms2.createAxis(values) - t.setBounds(numpy.array(bounds)) - t.designateTime() - t.id = "time" - s.setAxis(0, t) - # copy orignal attributes - for att, value in store_attributes(V).items(): - setattr(s, att, value) - f.write(s, dtype=data.dtype) - f.close() - if A.verbose: - print("Results out to:", nm) + print("TG:", Tg.asComponentTime()[0]) + print("START END THRESHOLD:", istart, iend, A.threshold, len(Tg)) + # print "SEASON:", season, "ORIGINAL:", T.asComponentTime() + b1 = cdtime.reltime(Tg.getBounds()[0][0], Tg.units) + b2 = cdtime.reltime(Tg.getBounds()[-1][1], Tg.units) + + # First and last time points + y1 = cdtime.reltime(Tg[0], T.units) + y2 = cdtime.reltime(Tg[-1], T.units) + + # Mid year is: + yr = (y2.value + y1.value) / 2. + y = cdtime.reltime(yr, T.units).tocomp(cal).year + + if A.verbose: + print("We found data from ", y1.tocomp(cal), + "to", y2.tocomp(cal), "MID YEAR:", y) + print("bounds:", b1.tocomp(cal), b2.tocomp(cal)) + + values = [] + bounds = [] + + # Loop thru clim month and set value and bounds appropriately + ts = s.getTime().asComponentTime() + for ii in range(s.shape[0]): + t = ts[ii] + t.year = y + values.append(t.torel(Tunits, cal).value) + if (s.shape[0] > 1): + B1 = b1.tocomp(cal).add(ii, cdtime.Month) + B2 = b2.tocomp(cal).add(ii - s.shape[0] + 1, cdtime.Month) + else: + B1 = b1 + B2 = b2 + # b2.year = y + # b1.year = y + # if b1.cmp(b2) > 0: # ooops + # if b1.month>b2.month and b1.month-b2.month!=11: + # b1.year -= 1 + # else: + # b2.year += 1 + # if b1.month == b2.month: + # b2.year = b1.year+1 + if A.verbose: + print(B1.tocomp(cal), "<", t, "<", B2.tocomp(cal)) + bounds.append([B1.torel(Tunits, cal).value, + B2.torel(Tunits, cal).value]) + + fnmout = genutil.StringConstructor(A.output_filename_template) + + if "model_id" in fnmout.keys(): + model_id = checkCMORAttribute("model_id") + if "experiment_id" in fnmout.keys(): + experiment_id = checkCMORAttribute("experiment_id") + if "realization" in fnmout.keys(): + realization = checkCMORAttribute("realization") + if "initialization_method" in fnmout.keys(): + initialization = checkCMORAttribute("initialization_method") + if "physics_version" in fnmout.keys(): + physics_version = checkCMORAttribute("physics_version") + if A.cmor and hasCMOR: + dump_cmor(A, s, values, bounds, season) + else: + if A.cmor and not hasCMOR: + print("Your Python does not have CMOR, using regular cdms to write out files") + if not os.path.exists(A.results_dir): + os.makedirs(A.results_dir) + end_tc = tc[-1].add(1, cdtime.Month) + + # Populate fout template with values + start = "{}{:02d}".format(tc[0].year, tc[0].month) + end = "{}{:02d}".format(end_tc.year, end_tc.month) + for k in fnmout.keys(): + try: + setattr(fnmout, k, getattr(A, k)) + except Exception: + pass + # overwrite with locals + try: + setattr(fnmout, k, locals()[k]) + except Exception: + pass + nm = os.path.join(A.results_dir, fnmout()) + f = cdms2.open(nm, "w") + # Global attributes copied + for att, value in store_globals(filein).items(): + setattr(f, att, value) + t = cdms2.createAxis(values) + t.setBounds(numpy.array(bounds)) + t.designateTime() + t.id = "time" + s.setAxis(0, t) + # copy orignal attributes + for att, value in store_attributes(V).items(): + setattr(s, att, value) + f.write(s, dtype=data.dtype) + f.close() + if A.verbose: + print("Results out to:", nm) + + +parameters = parser.get_parameters() + +cdp.cdp_run.multiprocess(runClim, parameters) diff --git a/pcmdi_metrics/version.py b/pcmdi_metrics/version.py index 88e047637..b8ccaa34b 100644 --- a/pcmdi_metrics/version.py +++ b/pcmdi_metrics/version.py @@ -1,3 +1,3 @@ __version__ = 'v1.2' -__git_tag_describe__ = 'v1.2-35-g0bebaab' -__git_sha1__ = '0bebaab0221b58488986dcb9f17aa86206c19520' +__git_tag_describe__ = 'v1.2-43-g8c03362' +__git_sha1__ = '8c03362cc62e0cb41036e891847dbdd2d1f9b151' From 9001da65c63f66a6a1317cb1c634b28c04e7f4df Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Fri, 1 Mar 2019 10:14:45 -0800 Subject: [PATCH 67/84] For peter (#592) * use templates keys for args * works for me * fixing model prob and paralel driver' * version changes * version bla * Trying to let peter overwrite path via subpath keyword * pefrect way * remove C commments * first pass at getting correct version for test suite * flake8ed , caught a bunch of things in dump_cmor as well * no py37 yet on mac need to force 3.6 * removed pribt statemrnts --- pcmdi_metrics/driver/observation.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pcmdi_metrics/driver/observation.py b/pcmdi_metrics/driver/observation.py index c4d8b289a..c6bdc780d 100644 --- a/pcmdi_metrics/driver/observation.py +++ b/pcmdi_metrics/driver/observation.py @@ -29,8 +29,6 @@ def __init__(self, root, var, obs_dict, obs='default', template = obs_dict[var][obs_name].get("template", "%(realm)/%(frequency)/%(variable)/" + "%(reference)/%(ac)/%(filename)") - print("OBFDDF:", obs_dict[var]) - print("TEMPLATE:", root, template) super(OBS, self).__init__(root, template, file_mask_template) From e4e2258d063e0da11442c7dae5ec6ce688387f51 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Fri, 1 Mar 2019 10:17:11 -0800 Subject: [PATCH 68/84] For peter (#593) * use templates keys for args * works for me * fixing model prob and paralel driver' * version changes * version bla * Trying to let peter overwrite path via subpath keyword * pefrect way * remove C commments * first pass at getting correct version for test suite * flake8ed , caught a bunch of things in dump_cmor as well * no py37 yet on mac need to force 3.6 * removed pribt statemrnts * removing AGAIN the print statements --- pcmdi_metrics/driver/pmp_parameter.py | 1 - pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/pcmdi_metrics/driver/pmp_parameter.py b/pcmdi_metrics/driver/pmp_parameter.py index 7fdca2e69..72c9c9049 100755 --- a/pcmdi_metrics/driver/pmp_parameter.py +++ b/pcmdi_metrics/driver/pmp_parameter.py @@ -25,7 +25,6 @@ def process_templated_argument(self, name, default_value="*", extras=None): """ process = getattr(self, name, None) - print("PROCESS IS:", process) if process is None: # Ok not an argument from arg_parse maybe a template or string constructor itself if isinstance(name, basestring): process = name diff --git a/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py b/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py index a3e6688fd..5030efa91 100644 --- a/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py +++ b/pcmdi_metrics/pcmdi/mean_climate_metrics_driver.py @@ -79,8 +79,6 @@ def load_obs_dict(self): if hasattr(self.parameter, 'custom_observations'): # Can't use load_path_as_file_obj() b/c might not be in /share/ - print("WE ARE USING CUSTOM OBS:", - self.parameter.custom_observations) cust_obs_json_file = open(self.parameter.custom_observations) obs_dict.update(json.load(cust_obs_json_file)) cust_obs_json_file.close() From 944883ea16eba35c0c65d48c482bc4f30d27a650 Mon Sep 17 00:00:00 2001 From: Peter Gleckler Date: Sat, 2 Mar 2019 16:19:30 -0800 Subject: [PATCH 69/84] version change --- pcmdi_metrics/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pcmdi_metrics/version.py b/pcmdi_metrics/version.py index b8ccaa34b..3f1704c7a 100644 --- a/pcmdi_metrics/version.py +++ b/pcmdi_metrics/version.py @@ -1,3 +1,3 @@ __version__ = 'v1.2' -__git_tag_describe__ = 'v1.2-43-g8c03362' -__git_sha1__ = '8c03362cc62e0cb41036e891847dbdd2d1f9b151' +__git_tag_describe__ = 'v1.2-40-ge4e2258' +__git_sha1__ = 'e4e2258d063e0da11442c7dae5ec6ce688387f51' From 8e149e0c331f725fd4340c2f52afc29a0d6b390f Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 21 Mar 2019 14:25:48 -0700 Subject: [PATCH 70/84] Click (#595) * changes needed for click * remove debug print * turn off verbose by default * few places we were using x instead of self.x moved generatetemplate into its own function decorate function changed the input axes, so I now store the original ids * if user passes a colormap do not use only the 16->39 range to autogen colors * almost there * nearly there * corect python * testing all combinations, also added an order keyword and tested against that as well * print statements * merge now masked and scrap the data generated by extra keys and then masked missing data, adding tets for merge fucntion * for now use v81 since nightly cdms missing something in recipe * fix @lee1043 error when sending list or merge * if no colormap on object it would die, so creating a cmap * if no colormap on object it would die, so creating a cmap * numpy lowered * numpy lowered some more * numpy lowered some more even * not a numpy issue * fixed issue where reading data sudnely failed, it was autobounds that was set back too early * flake8ed --- .circleci/config.yml | 4 +- pcmdi_metrics/graphics/portraits.py | 933 ++---------------- pcmdi_metrics/io/base.py | 109 +- pcmdi_metrics/version.py | 4 +- tests/io/merge.json | 1 + tests/io/merge_incomplete_and_missing.json | 1 + tests/test_pmp_jsons_merge.py | 153 +++ ...test_pmp_jsons_merge_incomplete_missing.py | 25 + 8 files changed, 378 insertions(+), 852 deletions(-) create mode 100644 tests/io/merge.json create mode 100644 tests/io/merge_incomplete_and_missing.json create mode 100644 tests/test_pmp_jsons_merge.py create mode 100644 tests/test_pmp_jsons_merge_incomplete_missing.py diff --git a/.circleci/config.yml b/.circleci/config.yml index 28612456c..cc225bf27 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,13 +11,13 @@ aliases: command: | mkdir -p workspace git clone -b validateNightly git@github.com:CDAT/cdat workspace/cdat --depth=1 - python workspace/cdat/scripts/install_miniconda.py -w $WORKDIR -p 'py3' + python workspace/cdat/scripts/install_miniconda.py -w $WORKDIR -p 'py3.6' - &create_conda_env name: create_conda_env environment: PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5' 'vtk-cdat>8.1'" - CHANNELS: "-c cdat/label/nightly -c conda-forge -c pcmdi" + CHANNELS: "-c cdat/label/v81 -c conda-forge -c pcmdi" command: | export PATH=$WORKDIR/miniconda/bin:$PATH conda config --set always_yes yes --set changeps1 no diff --git a/pcmdi_metrics/graphics/portraits.py b/pcmdi_metrics/graphics/portraits.py index cf8730ec1..ff7e31c4d 100644 --- a/pcmdi_metrics/graphics/portraits.py +++ b/pcmdi_metrics/graphics/portraits.py @@ -78,6 +78,15 @@ def setlogo(self, value): logo = property(getlogo, setlogo) + def _repr_png_(self): + import tempfile + tmp = tempfile.mktemp() + ".png" + self.x.png(tmp) + f = open(tmp, "rb") + st = f.read() + f.close() + return st + def __init__(self): self.x1 = .12 self.x2 = .84 @@ -142,7 +151,7 @@ def __init__(self, files_structure=None, exclude=[], **kw): self.x = kw["x"] else: self.x = vcs.init() - self.verbose = True # output files looked for to the screen + self.verbose = False # output files looked for to the screen self.files_structure = files_structure self.exclude = exclude # First determine the list of parameters on which we can have a @@ -708,15 +717,104 @@ def decorate(self, output, ynm, xnm): x.names = repr(dic) nm = '___'.join(ynm) y.id = nm + y.original_id = output.getAxis(0,).id output.setAxis(0, y) dic = {} for i in range(len(ynm)): dic[i] = ynm[i] y.names = repr(dic) + x.original_id = output.getAxis(1,).id output.setAxis(1, x) return + def generateTemplate(self): + template = vcs.createtemplate() + # Now sets all the things for the template... + # Sets a bunch of template attributes to off + for att in [ + 'line1', 'line2', 'line3', 'line4', + 'box2', 'box3', 'box4', + 'min', 'max', 'mean', + 'xtic1', 'xtic2', + 'ytic1', 'ytic2', + 'xvalue', 'yvalue', 'zvalue', 'tvalue', + 'xunits', 'yunits', 'zunits', 'tunits', + 'source', 'title', 'dataname', + ]: + a = getattr(template, att) + setattr(a, 'priority', 0) + for att in [ + 'xname', 'yname', + ]: + a = getattr(template, att) + setattr(a, 'priority', 0) + + template.data.x1 = self.PLOT_SETTINGS.x1 + template.data.x2 = self.PLOT_SETTINGS.x2 + template.data.y1 = self.PLOT_SETTINGS.y1 + template.data.y2 = self.PLOT_SETTINGS.y2 + template.box1.x1 = self.PLOT_SETTINGS.x1 + template.box1.x2 = self.PLOT_SETTINGS.x2 + template.box1.y1 = self.PLOT_SETTINGS.y1 + template.box1.y2 = self.PLOT_SETTINGS.y2 + template.xname.y = self.PLOT_SETTINGS.y2 + .02 + template.yname.x = self.PLOT_SETTINGS.x2 + .01 + template.xlabel1.y = self.PLOT_SETTINGS.y1 + template.xlabel2.y = self.PLOT_SETTINGS.y2 + template.xlabel1.texttable = self.PLOT_SETTINGS.tictable + template.xlabel2.texttable = self.PLOT_SETTINGS.tictable + template.xlabel1.textorientation = \ + self.PLOT_SETTINGS.xticorientation + template.xlabel2.textorientation = \ + self.PLOT_SETTINGS.xticorientation + template.ylabel1.x = self.PLOT_SETTINGS.x1 + template.ylabel2.x = self.PLOT_SETTINGS.x2 + template.ylabel1.texttable = self.PLOT_SETTINGS.tictable + template.ylabel2.texttable = self.PLOT_SETTINGS.tictable + template.ylabel1.textorientation = \ + self.PLOT_SETTINGS.yticorientation + template.ylabel2.textorientation = \ + self.PLOT_SETTINGS.yticorientation + + if self.PLOT_SETTINGS.xtic1.y1 is not None: + template.xtic1.y1 = self.PLOT_SETTINGS.xtic1.y1 + template.xtic1.priority = 1 + if self.PLOT_SETTINGS.xtic1.y2 is not None: + template.xtic1.y2 = self.PLOT_SETTINGS.xtic1.y2 + template.xtic1.priority = 1 + if self.PLOT_SETTINGS.xtic2.y1 is not None: + template.xtic2.y1 = self.PLOT_SETTINGS.xtic2.y1 + template.xtic2.priority = 1 + if self.PLOT_SETTINGS.xtic2.y2 is not None: + template.xtic2.y2 = self.PLOT_SETTINGS.xtic2.y2 + template.xtic2.priority = 1 + if self.PLOT_SETTINGS.ytic1.x1 is not None: + template.ytic1.x1 = self.PLOT_SETTINGS.ytic1.x1 + template.ytic1.priority = 1 + if self.PLOT_SETTINGS.ytic1.x2 is not None: + template.ytic1.x2 = self.PLOT_SETTINGS.ytic1.x2 + template.ytic1.priority = 1 + if self.PLOT_SETTINGS.ytic2.x1 is not None: + template.ytic2.priority = 1 + template.ytic2.x1 = self.PLOT_SETTINGS.ytic2.x1 + if self.PLOT_SETTINGS.ytic2.x2 is not None: + template.ytic2.priority = 1 + template.ytic2.x2 = self.PLOT_SETTINGS.ytic2.x2 + template.legend.x1 = self.PLOT_SETTINGS.legend.x1 + template.legend.x2 = self.PLOT_SETTINGS.legend.x2 + template.legend.y1 = self.PLOT_SETTINGS.legend.y1 + template.legend.y2 = self.PLOT_SETTINGS.legend.y2 + try: + tmp = vcs.createtextorientation('crap22') + except Exception: + tmp = vcs.gettextorientation('crap22') + tmp.height = 12 + # tmp.halign = 'center' + # template.legend.texttable = tmp + template.legend.textorientation = tmp + return template + def plot(self, data=None, mesh=None, template=None, meshfill=None, x=None, bg=0, multiple=1.1): self.bg = bg @@ -732,91 +830,7 @@ def plot(self, data=None, mesh=None, template=None, # Do we use a predefined template ? if template is None: - template = vcs.createtemplate() - # Now sets all the things for the template... - # Sets a bunch of template attributes to off - for att in [ - 'line1', 'line2', 'line3', 'line4', - 'box2', 'box3', 'box4', - 'min', 'max', 'mean', - 'xtic1', 'xtic2', - 'ytic1', 'ytic2', - 'xvalue', 'yvalue', 'zvalue', 'tvalue', - 'xunits', 'yunits', 'zunits', 'tunits', - 'source', 'title', 'dataname', - ]: - a = getattr(template, att) - setattr(a, 'priority', 0) - for att in [ - 'xname', 'yname', - ]: - a = getattr(template, att) - setattr(a, 'priority', 0) - - template.data.x1 = self.PLOT_SETTINGS.x1 - template.data.x2 = self.PLOT_SETTINGS.x2 - template.data.y1 = self.PLOT_SETTINGS.y1 - template.data.y2 = self.PLOT_SETTINGS.y2 - template.box1.x1 = self.PLOT_SETTINGS.x1 - template.box1.x2 = self.PLOT_SETTINGS.x2 - template.box1.y1 = self.PLOT_SETTINGS.y1 - template.box1.y2 = self.PLOT_SETTINGS.y2 - template.xname.y = self.PLOT_SETTINGS.y2 + .02 - template.yname.x = self.PLOT_SETTINGS.x2 + .01 - template.xlabel1.y = self.PLOT_SETTINGS.y1 - template.xlabel2.y = self.PLOT_SETTINGS.y2 - template.xlabel1.texttable = self.PLOT_SETTINGS.tictable - template.xlabel2.texttable = self.PLOT_SETTINGS.tictable - template.xlabel1.textorientation = \ - self.PLOT_SETTINGS.xticorientation - template.xlabel2.textorientation = \ - self.PLOT_SETTINGS.xticorientation - template.ylabel1.x = self.PLOT_SETTINGS.x1 - template.ylabel2.x = self.PLOT_SETTINGS.x2 - template.ylabel1.texttable = self.PLOT_SETTINGS.tictable - template.ylabel2.texttable = self.PLOT_SETTINGS.tictable - template.ylabel1.textorientation = \ - self.PLOT_SETTINGS.yticorientation - template.ylabel2.textorientation = \ - self.PLOT_SETTINGS.yticorientation - - if self.PLOT_SETTINGS.xtic1.y1 is not None: - template.xtic1.y1 = self.PLOT_SETTINGS.xtic1.y1 - template.xtic1.priority = 1 - if self.PLOT_SETTINGS.xtic1.y2 is not None: - template.xtic1.y2 = self.PLOT_SETTINGS.xtic1.y2 - template.xtic1.priority = 1 - if self.PLOT_SETTINGS.xtic2.y1 is not None: - template.xtic2.y1 = self.PLOT_SETTINGS.xtic2.y1 - template.xtic2.priority = 1 - if self.PLOT_SETTINGS.xtic2.y2 is not None: - template.xtic2.y2 = self.PLOT_SETTINGS.xtic2.y2 - template.xtic2.priority = 1 - if self.PLOT_SETTINGS.ytic1.x1 is not None: - template.ytic1.x1 = self.PLOT_SETTINGS.ytic1.x1 - template.ytic1.priority = 1 - if self.PLOT_SETTINGS.ytic1.x2 is not None: - template.ytic1.x2 = self.PLOT_SETTINGS.ytic1.x2 - template.ytic1.priority = 1 - if self.PLOT_SETTINGS.ytic2.x1 is not None: - template.ytic2.priority = 1 - template.ytic2.x1 = self.PLOT_SETTINGS.ytic2.x1 - if self.PLOT_SETTINGS.ytic2.x2 is not None: - template.ytic2.priority = 1 - template.ytic2.x2 = self.PLOT_SETTINGS.ytic2.x2 - template.legend.x1 = self.PLOT_SETTINGS.legend.x1 - template.legend.x2 = self.PLOT_SETTINGS.legend.x2 - template.legend.y1 = self.PLOT_SETTINGS.legend.y1 - template.legend.y2 = self.PLOT_SETTINGS.legend.y2 - try: - tmp = vcs.createtextorientation('crap22') - except Exception: - tmp = vcs.gettextorientation('crap22') - tmp.height = 12 - # tmp.halign = 'center' - # template.legend.texttable = tmp - template.legend.textorientation = tmp - + template = self.generateTemplate() else: if isinstance(template, vcs.template.P): tid = template.name @@ -826,7 +840,7 @@ def plot(self, data=None, mesh=None, template=None, raise 'Error cannot understand what you mean by template=' + \ str(template) - template = vcs.createtemplate() + template = vcs.createtemplate(source=tid) # Do we use a predefined meshfill ? if meshfill is None: @@ -847,7 +861,7 @@ def plot(self, data=None, mesh=None, template=None, meshfill.yticlabels2 = mtics if self.PLOT_SETTINGS.colormap is None: self.set_colormap() - elif x.getcolormapname() != self.PLOT_SETTINGS.colormap: + elif self.x.getcolormapname() != self.PLOT_SETTINGS.colormap: self.x.setcolormap(self.PLOT_SETTINGS.colormap) if self.PLOT_SETTINGS.levels is None: @@ -861,7 +875,11 @@ def plot(self, data=None, mesh=None, template=None, if len(levs) > 1: meshfill.levels = levs if self.PLOT_SETTINGS.fillareacolors is None: - cols = vcs.getcolors(levs, list(range(16, 40)), split=1) + if self.PLOT_SETTINGS.colormap is None: + # Default colormap only use range 16->40 + cols = vcs.getcolors(levs, list(range(16, 40)), split=1) + else: + cols = vcs.getcolors(levs, split=1) meshfill.fillareacolors = cols else: meshfill.fillareacolors = self.PLOT_SETTINGS.fillareacolors @@ -1078,7 +1096,7 @@ def plot(self, data=None, mesh=None, template=None, if p not in self.dummies and \ p not in self.auto_dummies and \ p not in axes_param: - txt = x.createtext( + txt = self.x.createtext( None, self.PLOT_SETTINGS.parametertable.name, None, @@ -1217,737 +1235,4 @@ def draw_values(self, raveled, mesh, meshfill, template): self.x.plot(tmptxt, bg=self.bg) def set_colormap(self): - cols = ( - 100, - 100, - 100, - 0, - 0, - 0, - 83.9216, - 83.9216, - 83.9216, - 30.9804, - 30.9804, - 30.9804, - 100, - 100, - 100, - 100, - 100, - 0, - 0, - 2.7451, - 100, - 0, - 5.4902, - 100, - 0, - 7.84314, - 100, - 0, - 10.9804, - 100, - 0, - 13.7255, - 100, - 0, - 16.4706, - 100, - 0, - 20.3922, - 100, - 0, - 23.1373, - 100, - 0, - 25.4902, - 100, - 0, - 30.1961, - 100, - 0, - 0, - 47.451, - 10.5882, - 13.3333, - 54.5098, - 21.5686, - 27.0588, - 61.5686, - 32.549, - 40.7843, - 68.6274, - 43.5294, - 54.5098, - 76.0784, - 48.6275, - 60.7843, - 79.2157, - 53.7255, - 67.451, - 82.7451, - 58.8235, - 73.7255, - 86.2745, - 64.3137, - 80.3922, - 89.4118, - 69.4118, - 86.6667, - 92.9412, - 74.5098, - 93.3333, - 96.4706, - 80, - 100, - 100, - 100, - 87.0588, - 85.098, - 100, - 69.4118, - 67.8431, - 100, - 52.1569, - 50.9804, - 100, - 34.5098, - 33.7255, - 100, - 17.2549, - 16.8627, - 100, - 0, - 0, - 87.451, - 0, - 0, - 74.902, - 0, - 0, - 62.7451, - 0, - 0, - 50.1961, - 0, - 0, - 37.6471, - 0, - 0, - 25.4902, - 0, - 0, - 100, - 100, - 100, - 0, - 0, - 47.451, - 0.392157, - 0.392157, - 47.451, - 0.784314, - 0.784314, - 47.8431, - 1.17647, - 1.17647, - 48.2353, - 1.56863, - 1.56863, - 48.2353, - 1.96078, - 1.96078, - 48.6275, - 2.35294, - 2.7451, - 49.0196, - 2.7451, - 3.13725, - 49.0196, - 3.13725, - 3.52941, - 49.4118, - 3.52941, - 3.92157, - 49.8039, - 3.92157, - 4.31373, - 49.8039, - 4.31373, - 5.09804, - 50.1961, - 4.70588, - 5.4902, - 50.5882, - 5.09804, - 5.88235, - 50.5882, - 5.4902, - 6.27451, - 50.9804, - 5.88235, - 6.66667, - 51.3725, - 6.27451, - 7.45098, - 51.3725, - 6.66667, - 7.84314, - 51.7647, - 7.05882, - 8.23529, - 52.1569, - 7.45098, - 8.62745, - 52.1569, - 7.84314, - 9.01961, - 52.549, - 8.23529, - 9.80392, - 52.9412, - 8.62745, - 10.1961, - 52.9412, - 9.01961, - 10.5882, - 53.3333, - 9.41177, - 10.9804, - 53.7255, - 9.80392, - 11.3725, - 53.7255, - 10.1961, - 12.1569, - 54.1176, - 10.5882, - 12.549, - 54.5098, - 10.9804, - 12.9412, - 54.5098, - 11.3725, - 13.3333, - 54.902, - 11.7647, - 13.7255, - 55.2941, - 12.1569, - 14.5098, - 55.2941, - 12.549, - 14.902, - 55.6863, - 13.3333, - 15.2941, - 56.0784, - 13.7255, - 15.6863, - 56.4706, - 14.1176, - 16.0784, - 56.4706, - 14.5098, - 16.8627, - 56.8627, - 14.902, - 17.2549, - 57.2549, - 15.2941, - 17.6471, - 57.2549, - 15.6863, - 18.0392, - 57.6471, - 16.0784, - 18.4314, - 58.0392, - 16.4706, - 19.2157, - 58.0392, - 16.8627, - 19.6078, - 58.4314, - 17.2549, - 20, - 58.8235, - 17.6471, - 20.3922, - 58.8235, - 18.0392, - 20.7843, - 59.2157, - 18.4314, - 21.5686, - 59.6078, - 18.8235, - 21.9608, - 59.6078, - 19.2157, - 22.3529, - 60, - 19.6078, - 22.7451, - 60.3922, - 20, - 23.1373, - 60.3922, - 20.3922, - 23.9216, - 60.7843, - 20.7843, - 24.3137, - 61.1765, - 21.1765, - 24.7059, - 61.1765, - 21.5686, - 25.098, - 61.5686, - 21.9608, - 25.4902, - 61.9608, - 22.3529, - 26.2745, - 61.9608, - 22.7451, - 26.6667, - 62.3529, - 23.1373, - 27.0588, - 62.7451, - 23.5294, - 27.451, - 62.7451, - 23.9216, - 27.8431, - 63.1373, - 24.3137, - 28.6275, - 63.5294, - 24.7059, - 29.0196, - 63.5294, - 25.098, - 29.4118, - 63.9216, - 25.4902, - 29.8039, - 64.3137, - 25.8824, - 30.1961, - 64.3137, - 26.6667, - 30.9804, - 64.7059, - 27.0588, - 31.3725, - 65.098, - 27.451, - 31.7647, - 65.4902, - 27.8431, - 32.1569, - 65.4902, - 28.2353, - 32.549, - 65.8824, - 28.6275, - 32.9412, - 66.2745, - 29.0196, - 33.7255, - 66.2745, - 29.4118, - 34.1176, - 66.6667, - 29.8039, - 34.5098, - 67.0588, - 30.1961, - 34.902, - 67.0588, - 30.5882, - 35.2941, - 67.451, - 30.9804, - 36.0784, - 67.8431, - 31.3725, - 36.4706, - 67.8431, - 31.7647, - 36.8627, - 68.2353, - 32.1569, - 37.2549, - 68.6274, - 32.549, - 37.6471, - 68.6274, - 32.9412, - 38.4314, - 69.0196, - 33.3333, - 38.8235, - 69.4118, - 33.7255, - 39.2157, - 69.4118, - 34.1176, - 39.6078, - 69.8039, - 34.5098, - 40, - 70.1961, - 34.902, - 40.7843, - 70.1961, - 35.2941, - 41.1765, - 70.5882, - 35.6863, - 41.5686, - 70.9804, - 36.0784, - 41.9608, - 70.9804, - 36.4706, - 42.3529, - 71.3726, - 36.8627, - 43.1373, - 71.7647, - 37.2549, - 43.5294, - 71.7647, - 37.6471, - 43.9216, - 72.1569, - 38.0392, - 44.3137, - 72.549, - 38.4314, - 44.7059, - 72.549, - 38.8235, - 45.4902, - 72.9412, - 39.2157, - 45.8824, - 73.3333, - 40, - 46.2745, - 73.7255, - 40.3922, - 46.6667, - 73.7255, - 40.7843, - 47.0588, - 74.1176, - 41.1765, - 47.8431, - 74.5098, - 41.5686, - 48.2353, - 74.5098, - 41.9608, - 48.6275, - 74.902, - 42.3529, - 49.0196, - 75.2941, - 42.7451, - 49.4118, - 75.2941, - 43.1373, - 50.1961, - 75.6863, - 43.5294, - 50.5882, - 76.0784, - 43.9216, - 50.9804, - 76.0784, - 44.3137, - 51.3725, - 76.4706, - 44.7059, - 51.7647, - 76.8627, - 45.098, - 52.549, - 76.8627, - 45.4902, - 52.9412, - 77.2549, - 45.8824, - 53.3333, - 77.6471, - 46.2745, - 53.7255, - 77.6471, - 46.6667, - 54.1176, - 78.0392, - 47.0588, - 54.902, - 78.4314, - 47.451, - 55.2941, - 78.4314, - 47.8431, - 55.6863, - 78.8235, - 48.2353, - 56.0784, - 79.2157, - 48.6275, - 56.4706, - 79.2157, - 49.0196, - 57.2549, - 79.6078, - 49.4118, - 57.6471, - 80, - 49.8039, - 58.0392, - 80, - 50.1961, - 58.4314, - 80.3922, - 50.5882, - 58.8235, - 80.7843, - 50.9804, - 59.6078, - 80.7843, - 51.3725, - 60, - 81.1765, - 51.7647, - 60.3922, - 81.5686, - 52.1569, - 60.7843, - 81.5686, - 52.549, - 61.1765, - 81.9608, - 53.3333, - 61.9608, - 82.3529, - 53.7255, - 62.3529, - 82.7451, - 54.1176, - 62.7451, - 82.7451, - 54.5098, - 63.1373, - 83.1373, - 54.902, - 63.5294, - 83.5294, - 55.2941, - 63.9216, - 83.5294, - 55.6863, - 64.7059, - 83.9216, - 56.0784, - 65.098, - 84.3137, - 56.4706, - 65.4902, - 84.3137, - 56.8627, - 65.8824, - 84.7059, - 57.2549, - 66.2745, - 85.098, - 57.6471, - 67.0588, - 85.098, - 58.0392, - 67.451, - 85.4902, - 58.4314, - 67.8431, - 85.8824, - 58.8235, - 68.2353, - 85.8824, - 59.2157, - 68.6274, - 86.2745, - 59.6078, - 69.4118, - 86.6667, - 60, - 69.8039, - 86.6667, - 60.3922, - 70.1961, - 87.0588, - 60.7843, - 70.5882, - 87.451, - 61.1765, - 70.9804, - 87.451, - 61.5686, - 71.7647, - 87.8431, - 61.9608, - 72.1569, - 88.2353, - 62.3529, - 72.549, - 88.2353, - 62.7451, - 72.9412, - 88.6274, - 63.1373, - 73.3333, - 89.0196, - 63.5294, - 74.1176, - 89.0196, - 63.9216, - 74.5098, - 89.4118, - 64.3137, - 74.902, - 89.8039, - 64.7059, - 75.2941, - 89.8039, - 65.098, - 75.6863, - 90.1961, - 65.4902, - 76.4706, - 90.5882, - 65.8824, - 76.8627, - 90.5882, - 66.6667, - 77.2549, - 90.9804, - 67.0588, - 77.6471, - 91.3726, - 67.451, - 78.0392, - 91.7647, - 67.8431, - 78.8235, - 91.7647, - 68.2353, - 79.2157, - 92.1569, - 68.6274, - 79.6078, - 92.549, - 69.0196, - 80, - 92.549, - 69.4118, - 80.3922, - 92.9412, - 69.8039, - 81.1765, - 93.3333, - 70.1961, - 81.5686, - 93.3333, - 70.5882, - 81.9608, - 93.7255, - 70.9804, - 82.3529, - 94.1176, - 71.3726, - 82.7451, - 94.1176, - 71.7647, - 83.5294, - 94.5098, - 72.1569, - 83.9216, - 94.902, - 72.549, - 84.3137, - 94.902, - 72.9412, - 84.7059, - 95.2941, - 73.3333, - 85.098, - 95.6863, - 73.7255, - 85.8824, - 95.6863, - 74.1176, - 86.2745, - 96.0784, - 74.5098, - 86.6667, - 96.4706, - 74.902, - 87.0588, - 96.4706, - 75.2941, - 87.451, - 96.8627, - 75.6863, - 88.2353, - 97.2549, - 76.0784, - 88.6274, - 97.2549, - 76.4706, - 89.0196, - 97.6471, - 76.8627, - 89.4118, - 98.0392, - 77.2549, - 89.8039, - 98.0392, - 77.6471, - 90.5882, - 98.4314, - 78.0392, - 90.9804, - 98.8235, - 78.4314, - 91.3726, - 98.8235, - 78.8235, - 91.7647, - 99.2157, - 79.2157, - 92.1569, - 99.6078, - 80, - 92.9412, - 100) - - cols = MV2.reshape(cols, (len(cols) // 3, 3)) - - for i in range(cols.shape[0]): - co = self.x.getcolorcell(i) - if (co[0] != int(cols[i][0]) or co[1] != int( - cols[i][1]) or co[2] != int(cols[i][2])): - self.x.setcolorcell( - i, int( - cols[i][0]), int( - cols[i][1]), int( - cols[i][2])) - return + self.x.setcolormap("bl_rd_12") diff --git a/pcmdi_metrics/io/base.py b/pcmdi_metrics/io/base.py index 6a0fbed52..3a6519073 100755 --- a/pcmdi_metrics/io/base.py +++ b/pcmdi_metrics/io/base.py @@ -32,22 +32,23 @@ # Group merged axes -def groupAxes(axes, final=[], ids=None, separator="_"): - if axes == []: - return cdms2.createAxis(final, id=separator.join(ids)) - if final == []: - final = [val for val in axes[0]] +def groupAxes(axes, ids=None, separator="_"): + if ids is None: ids = [ax.id for ax in axes] - return groupAxes(axes[1:], final, ids) - axis = axes[0] - original_length = len(final) - final = final * len(axis) - idx = 0 - for val in axis: - for i in range(original_length): - final[idx] = "{}{}{}".format(final[idx], separator, val) - idx += 1 - return groupAxes(axes[1:], final, ids) + if len(ids) != len(axes): + raise RuntimeError("You need to pass as many ids as axes") + final = [] + while len(axes) > 0: + axis = axes.pop(-1) + if final == []: + final = [str(v) for v in axis] + else: + tmp = final + final = [] + for v1 in axis: + for v2 in tmp: + final += ["{}{}{}".format(v1, separator, v2)] + return cdms2.createAxis(final, id=separator.join(ids)) # cdutil region object need a serializer @@ -188,6 +189,33 @@ def generateProvenance(): return prov +def scrap(data, axis=0): + originalOrder = data.getOrder(ids=True) + if axis not in ['x', 'y', 'z', 't'] and not isinstance(axis, int): + order = "({})...".format(axis) + else: + order = "{}...".format(axis) + new = data(order=order) + axes = new.getAxisList() # Save for later + new = MV2.array(new.asma()) # lose dims + for i in range(new.shape[0] - 1, -1, -1): + tmp = new[i] + if not isinstance(tmp, (float, numpy.float)) and tmp.mask.all(): + a = new[:i] + b = new[i + 1:] + if b.shape[0] == 0: + new = a + else: + new = MV2.concatenate((a, b)) + newAxis = [] + for v in new.getAxis(0): + newAxis.append(axes[0][int(v)]) + ax = cdms2.createAxis(newAxis, id=axes[0].id) + axes[0] = ax + new.setAxisList(axes) + return new(order=originalOrder) + + class CDMSDomainsEncoder(json.JSONEncoder): def default(self, o): components = o.components()[0].kargs @@ -523,11 +551,11 @@ def get_array_values_from_dict_recursive(self, out, ids, nms, axval, axes): try: vals = vals[k] except Exception: - vals = 1.e20 + vals = 9.99e20 try: out[tuple(ids)] = float(vals) except Exception: - out[tuple(ids)] = 1.e20 + out[tuple(ids)] = 9.99e20 def __init__(self, files=[], structure=[], ignored_keys=[], oneVariablePerFile=True): @@ -595,10 +623,31 @@ def getAxisList(self): def __call__(self, merge=[], **kargs): """ Returns the array of values""" + # First clean up kargs + if "merge" in kargs: + merge = kargs["merge"] + del(kargs["merge"]) + order = None + axes_ids = self.getAxisIds() + if "order" in kargs: + # If it's an actual axis assume that it's what user wants + # Otherwise it's an out order keyword + if "order" not in axes_ids: + order = kargs["order"] + del(kargs["order"]) ab = cdms2.getAutoBounds() cdms2.setAutoBounds("off") axes = self.getAxisList() - axes_ids = self.getAxisIds() + if merge != []: + if isinstance(merge[0], str): + merge = [merge, ] + if merge != []: + for merger in merge: + for merge_axis_id in merger: + if merge_axis_id not in axes_ids: + raise RuntimeError( + "You requested to merge axis is '{}' which is not valid. Axes: {}".format( + merge_axis_id, axes_ids)) sh = [] ids = [] used_ids = [] @@ -611,9 +660,6 @@ def __call__(self, merge=[], **kargs): # first let's see which vars are actually asked for # for now assume all keys means restriction on dims - if "merge" in kargs: - merge = kargs["merge"] - del(kargs["merge"]) if not isinstance(merge, (list, tuple)): raise RuntimeError( "merge keyword must be a list of dimensions to merge together") @@ -652,8 +698,15 @@ def __call__(self, merge=[], **kargs): # Ok at this point we need to take care of merged axes # First let's create the merged axes - new_axes = [groupAxes([self.getAxis(x) for x in merger]) - for merger in merge] + axes_to_group = [] + for merger in merge: + merged_axes = [] + for axid in merger: + for ax in axes: + if ax.id == axid: + merged_axes.append(ax) + axes_to_group.append(merged_axes) + new_axes = [groupAxes(grp_axes) for grp_axes in axes_to_group] sh2 = list(sh) for merger in merge: for merger in merge: # loop through all possible merging @@ -714,7 +767,15 @@ def __call__(self, merge=[], **kargs): sub += 1 else: outData.setAxis(index - sub, new_axes[setMergedAxis]) - outData = MV2.masked_greater(outData, 9.e19) + outData = MV2.masked_greater(outData, 9.98e20) outData.id = "pmp" + if order is not None: + myorder = "".join(["({})".format(nm) for nm in order]) + outData = outData(order=myorder) + # Merge needs cleaning for extra dims crated + if merge != []: + for i in range(outData.ndim): + outData = scrap(outData, axis=i) + outData = MV2.masked_greater(outData, 9.9e19) cdms2.setAutoBounds(ab) return outData diff --git a/pcmdi_metrics/version.py b/pcmdi_metrics/version.py index 3f1704c7a..fa2bc1ce6 100644 --- a/pcmdi_metrics/version.py +++ b/pcmdi_metrics/version.py @@ -1,3 +1,3 @@ __version__ = 'v1.2' -__git_tag_describe__ = 'v1.2-40-ge4e2258' -__git_sha1__ = 'e4e2258d063e0da11442c7dae5ec6ce688387f51' +__git_tag_describe__ = 'v1.2-57-g930f3ae' +__git_sha1__ = '930f3aec5867b96e376ff3e29bb383008432398e' diff --git a/tests/io/merge.json b/tests/io/merge.json new file mode 100644 index 000000000..a02ad79d6 --- /dev/null +++ b/tests/io/merge.json @@ -0,0 +1 @@ +{"json_structure": ["upper", "lower", "numbers"], "RESULTS": {"A": {"a": {"1": 0.0, "2": 0.1, "3": 0.2, "4": 0.3, "5": 0.4, "6": 0.5, "7": 0.6, "8": 0.7}, "b": {"1": 1.0, "2": 1.1, "3": 1.2, "4": 1.3, "5": 1.4, "6": 1.5, "7": 1.6, "8": 1.7}, "c": {"1": 2.0, "2": 2.1, "3": 2.2, "4": 2.3, "5": 2.4, "6": 2.5, "7": 2.6, "8": 2.7}, "d": {"1": 3.0, "2": 3.1, "3": 3.2, "4": 3.3, "5": 3.4, "6": 3.5, "7": 3.6, "8": 3.7}, "e": {"1": 4.0, "2": 4.1, "3": 4.2, "4": 4.3, "5": 4.4, "6": 4.5, "7": 4.6, "8": 4.7}}, "B": {"a": {"1": 10.0, "2": 10.1, "3": 10.2, "4": 10.3, "5": 10.4, "6": 10.5, "7": 10.6, "8": 10.7}, "b": {"1": 11.0, "2": 11.1, "3": 11.2, "4": 11.3, "5": 11.4, "6": 11.5, "7": 11.6, "8": 11.7}, "c": {"1": 12.0, "2": 12.1, "3": 12.2, "4": 12.3, "5": 12.4, "6": 12.5, "7": 12.6, "8": 12.7}, "d": {"1": 13.0, "2": 13.1, "3": 13.2, "4": 13.3, "5": 13.4, "6": 13.5, "7": 13.6, "8": 13.7}, "e": {"1": 14.0, "2": 14.1, "3": 14.2, "4": 14.3, "5": 14.4, "6": 14.5, "7": 14.6, "8": 14.7}}, "C": {"a": {"1": 20.0, "2": 20.1, "3": 20.2, "4": 20.3, "5": 20.4, "6": 20.5, "7": 20.6, "8": 20.7}, "b": {"1": 21.0, "2": 21.1, "3": 21.2, "4": 21.3, "5": 21.4, "6": 21.5, "7": 21.6, "8": 21.7}, "c": {"1": 22.0, "2": 22.1, "3": 22.2, "4": 22.3, "5": 22.4, "6": 22.5, "7": 22.6, "8": 22.7}, "d": {"1": 23.0, "2": 23.1, "3": 23.2, "4": 23.3, "5": 23.4, "6": 23.5, "7": 23.6, "8": 23.7}, "e": {"1": 24.0, "2": 24.1, "3": 24.2, "4": 24.3, "5": 24.4, "6": 24.5, "7": 24.6, "8": 24.7}}, "D": {"a": {"1": 30.0, "2": 30.1, "3": 30.2, "4": 30.3, "5": 30.4, "6": 30.5, "7": 30.6, "8": 30.7}, "b": {"1": 31.0, "2": 31.1, "3": 31.2, "4": 31.3, "5": 31.4, "6": 31.5, "7": 31.6, "8": 31.7}, "c": {"1": 32.0, "2": 32.1, "3": 32.2, "4": 32.3, "5": 32.4, "6": 32.5, "7": 32.6, "8": 32.7}, "d": {"1": 33.0, "2": 33.1, "3": 33.2, "4": 33.3, "5": 33.4, "6": 33.5, "7": 33.6, "8": 33.7}, "e": {"1": 34.0, "2": 34.1, "3": 34.2, "4": 34.3, "5": 34.4, "6": 34.5, "7": 34.6, "8": 34.7}}}, "json_version": 3.0, "provenance": {"platform": {"OS": "Linux", "Version": "4.15.0-43-generic", "Name": "drdoom"}, "userId": "doutriaux1", "osAccess": false, "commandLine": "create_json_for_merge.py", "date": "2019-02-28 10:53:41", "conda": {}, "packages": {}, "openGL": {"GLX": {"server": {}, "client": {}}}}} \ No newline at end of file diff --git a/tests/io/merge_incomplete_and_missing.json b/tests/io/merge_incomplete_and_missing.json new file mode 100644 index 000000000..9be999be9 --- /dev/null +++ b/tests/io/merge_incomplete_and_missing.json @@ -0,0 +1 @@ +{"json_structure": ["upper", "lower", "numbers"], "RESULTS": {"A": {"a": {"1": 0.0, "2": 0.1, "3": 0.2, "4": 0.3, "5": 0.4, "6": 0.5, "7": 0.6, "8": 0.7}, "b": {"1": 1.0, "2": 1.1, "3": 1.2, "4": 1.3, "5": 1.4, "6": 1.5, "7": 1.6, "8": 1.7}, "c": {"1": 2.0, "2": 2.1, "4": 2.3, "6": 2.5, "7": 2.6}, "d": {"1": 1e+20, "2": 1e+20, "3": 1e+20, "4": 1e+20, "5": 1e+20, "6": 1e+20, "7": 1e+20, "8": 1e+20}, "e": {"1": 4.0, "2": 4.1, "3": 4.2, "4": 4.3, "5": 4.4, "6": 4.5, "7": 4.6, "8": 4.7}}, "B": {"a": {"1": 10.0, "2": 10.1, "3": 10.2, "4": 10.3, "5": 10.4, "6": 10.5, "7": 10.6, "8": 10.7}, "b": {"1": 11.0, "2": 11.1, "3": 11.2, "4": 11.3, "5": 11.4, "6": 11.5, "7": 11.6, "8": 11.7}, "c": {"1": 12.0, "2": 12.1, "4": 12.3, "6": 12.5, "7": 12.6}, "d": {"1": 1e+20, "2": 1e+20, "3": 1e+20, "4": 1e+20, "5": 1e+20, "6": 1e+20, "7": 1e+20, "8": 1e+20}, "e": {"1": 14.0, "2": 14.1, "3": 14.2, "4": 14.3, "5": 14.4, "6": 14.5, "7": 14.6, "8": 14.7}}, "C": {"a": {"1": 20.0, "2": 20.1, "3": 20.2, "4": 20.3, "5": 20.4, "6": 20.5, "7": 20.6, "8": 20.7}, "b": {"1": 21.0, "2": 21.1, "3": 21.2, "4": 21.3, "5": 21.4, "6": 21.5, "7": 21.6, "8": 21.7}, "c": {"1": 22.0, "2": 22.1, "4": 22.3, "6": 22.5, "7": 22.6}, "d": {"1": 1e+20, "2": 1e+20, "3": 1e+20, "4": 1e+20, "5": 1e+20, "6": 1e+20, "7": 1e+20, "8": 1e+20}, "e": {"1": 24.0, "2": 24.1, "3": 24.2, "4": 24.3, "5": 24.4, "6": 24.5, "7": 24.6, "8": 24.7}}, "D": {"a": {"1": 30.0, "2": 30.1, "3": 30.2, "4": 30.3, "5": 30.4, "6": 30.5, "7": 30.6, "8": 30.7}, "b": {"1": 31.0, "2": 31.1, "3": 31.2, "4": 31.3, "5": 31.4, "6": 31.5, "7": 31.6, "8": 31.7}, "c": {"1": 32.0, "2": 32.1, "4": 32.3, "6": 32.5, "7": 32.6}, "d": {"1": 1e+20, "2": 1e+20, "3": 1e+20, "4": 1e+20, "5": 1e+20, "6": 1e+20, "7": 1e+20, "8": 1e+20}, "e": {"1": 34.0, "2": 34.1, "3": 34.2, "4": 34.3, "5": 34.4, "6": 34.5, "7": 34.6, "8": 34.7}}}, "json_version": 3.0, "provenance": {"platform": {"OS": "Linux", "Version": "4.15.0-43-generic", "Name": "drdoom"}, "userId": "doutriaux1", "osAccess": false, "commandLine": "create_json_for_merge.py", "date": "2019-03-07 16:04:11", "conda": {}, "packages": {}, "openGL": {"GLX": {"server": {}, "client": {}}}}} \ No newline at end of file diff --git a/tests/test_pmp_jsons_merge.py b/tests/test_pmp_jsons_merge.py new file mode 100644 index 000000000..6a0d61ccc --- /dev/null +++ b/tests/test_pmp_jsons_merge.py @@ -0,0 +1,153 @@ +import unittest +import pcmdi_metrics +import inspect +import os +import numpy +import json + + +class TestJSONs(unittest.TestCase): + def testMerge(self): + pth = os.path.dirname(inspect.getfile(self.__class__)) + J = pcmdi_metrics.io.base.JSONs([os.path.join( + pth, "io", "merge.json")], + oneVariablePerFile=False) + axes_ids = J.getAxisIds() + axes = J.getAxisList() + self.assertEqual(axes_ids, ["upper", "lower", "numbers"]) + data = J() + self.assertEqual(data.shape, (4, 5, 8)) + self.assertEqual(data[2, 3, 6], 23.6) + + merged = J(merge=["lower", "numbers"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper", "lower_numbers"]) + self.assertEqual(merged.shape, (4, 40)) + self.assertEqual(merged[2, 8], 21.) + + merged = J(merge=["numbers", "lower"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper", "numbers_lower"]) + self.assertEqual(merged.shape, (4, 40)) + self.assertEqual(merged[2, 8], 23.1) + + merged = J(merge=["upper", "lower"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper_lower", "numbers"]) + self.assertEqual(merged.shape, (20, 8)) + self.assertEqual(merged[7, 5], 12.5) + + merged = J(merge=["lower", "upper"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["lower_upper", "numbers"]) + self.assertEqual(merged.shape, (20, 8)) + self.assertEqual(merged[7, 5], 31.5) + + merged = J(merge=["upper", "numbers"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper_numbers", "lower"]) + self.assertEqual(merged.shape, (32, 5)) + self.assertEqual(merged[13, 4], 14.5) + + merged = J(merge=["numbers", "upper"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["numbers_upper", "lower"]) + self.assertEqual(merged.shape, (32, 5)) + self.assertEqual(merged[14, 4], 24.3) + + with self.assertRaises(RuntimeError) as context: + merged = J(merge=["upper", "lower", "number"]) + self.assertTrue("You requested to merge axis is 'number' which is not valid." in str( + context.exception)) + + merged = J(merge=["upper", "lower", "numbers"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper_lower_numbers", ]) + self.assertEqual(merged.shape, (160,)) + self.assertEqual(merged[121], 30.1) + + merged = J(merge=["upper", "numbers", "lower"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper_numbers_lower", ]) + self.assertEqual(merged.shape, (160,)) + self.assertEqual(merged[121], 31.) + + merged = J(merge=["numbers", "upper", "lower"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["numbers_upper_lower", ]) + self.assertEqual(merged.shape, (160,)) + self.assertEqual(merged[121], 1.6) + + # Merge and subset in different order + merged = J(upper=["C", "B", "D"], numbers=["4", "2", "1", "7", "3"], lower=[ + "e", "a", "d", "c"], merge=["upper", "numbers"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper_numbers", "lower"]) + self.assertEqual(merged.shape, (15, 4)) + self.assertEqual(merged[9, 2], 13.2) + + merged = J(upper=["C", "B", "D"], numbers=["4", "2", "1", "7", "3"], lower=[ + "e", "a", "d", "c"], merge=["numbers", "upper"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["numbers_upper", "lower"]) + self.assertEqual(merged.shape, (15, 4)) + self.assertEqual(merged[9, 2], 23.6) + + merged = J(upper=["C", "B", "D"], numbers=["4", "2", "1", "7", "3"], lower=[ + "e", "a", "d", "c"], merge=["lower", "upper"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["lower_upper", "numbers"]) + self.assertEqual(merged.shape, (12, 5)) + self.assertEqual(merged[9, 2], 22.) + + merged = J(upper=["C", "B", "D"], numbers=["4", "2", "1", "7", "3"], lower=[ + "e", "a", "d", "c"], merge=["upper", "lower"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper_lower", "numbers"]) + self.assertEqual(merged.shape, (12, 5)) + self.assertEqual(merged[9, 2], 30.) + + merged = J(upper=["C", "B", "D"], numbers=["4", "2", "1", "7", "3"], lower=[ + "e", "a", "d", "c"], merge=["numbers", "lower"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper", "numbers_lower"]) + self.assertEqual(merged.shape, (3, 20)) + self.assertEqual(merged[2, 9], 30.) + + merged = J(upper=["C", "B", "D"], numbers=["4", "2", "1", "7", "3"], lower=[ + "e", "a", "d", "c"], merge=["numbers", "lower"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper", "numbers_lower"]) + self.assertEqual(merged.shape, (3, 20)) + self.assertEqual(merged[2, 7], 32.1) + + merged = J(upper=["C", "B", "D"], numbers=["4", "2", "1", "7", "3"], lower=[ + "e", "a", "d", "c"], merge=["lower", "numbers"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper", "lower_numbers"]) + self.assertEqual(merged.shape, (3, 20)) + self.assertEqual(merged[2, 7], 30.) + + merged = J(numbers=["4", "2", "1", "7", "3"], lower=[ + "e", "a", "d", "c"], upper=["C", "B", "D"], merge=["lower", "numbers"], order=["lower_numbers", "upper"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["lower_numbers", "upper"]) + self.assertEqual(merged.shape, (20, 3)) + self.assertEqual(merged[7, 2], 30.) diff --git a/tests/test_pmp_jsons_merge_incomplete_missing.py b/tests/test_pmp_jsons_merge_incomplete_missing.py new file mode 100644 index 000000000..61b2e568e --- /dev/null +++ b/tests/test_pmp_jsons_merge_incomplete_missing.py @@ -0,0 +1,25 @@ +import unittest +import pcmdi_metrics +import inspect +import os +import numpy +import json + + +class TestJSONs(unittest.TestCase): + def testMerge(self): + pth = os.path.dirname(inspect.getfile(self.__class__)) + J = pcmdi_metrics.io.base.JSONs([os.path.join( + pth, "io", "merge_incomplete_and_missing.json")], + oneVariablePerFile=False) + + merged = J(merge=["numbers", "lower"]) + axes_ids = merged.getAxisIds() + axes = merged.getAxisList() + self.assertEqual(axes_ids, ["upper", "numbers_lower"]) + self.assertEqual(merged.shape, (4, 37)) + self.assertEqual(merged.getAxis(1)[:].tolist(), + ['1_a', '1_b', '1_c', '1_d', '1_e', '2_a', '2_b', '2_c', '2_d', '2_e', '3_a', '3_b', '3_d', '3_e', '4_a', '4_b', + '4_c', '4_d', '4_e', '5_a', '5_b', '5_d', '5_e', '6_a', '6_b', '6_c', '6_d', '6_e', '7_a', '7_b', '7_c', '7_d', '7_e', '8_a', '8_b', '8_d', '8_e']) + self.assertTrue(merged.asma()[1, 3] is numpy.ma.masked) + self.assertEqual(merged[1, 4], 14) From 7a18cbd8b514314b0b1bf054ea1d8d0349c6ca52 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Mon, 8 Apr 2019 12:17:28 -0700 Subject: [PATCH 71/84] should fix nightly (#598) --- pcmdi_metrics/diurnal/scripts/savg_fourierWrappedInOut.py | 6 +++++- .../diurnal/scripts/std_of_dailymeansWrappedInOut.py | 6 +++++- .../diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py | 6 +++++- .../diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py | 6 +++++- pcmdi_metrics/driver/dataset.py | 6 +++++- pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py | 8 ++++++-- share/pmp/default_regions.py | 1 + share/pmp/disclaimer.txt | 1 + share/pmp/graphics/png | 1 + share/pmp/graphics/vcs | 1 + share/pmp/obs_info_dictionary.json | 1 + tests/test_pmp_portrait_values_on.py | 6 +++++- tests/test_pmp_portraits.py | 7 +++++-- 13 files changed, 46 insertions(+), 10 deletions(-) create mode 120000 share/pmp/default_regions.py create mode 120000 share/pmp/disclaimer.txt create mode 120000 share/pmp/graphics/png create mode 120000 share/pmp/graphics/vcs create mode 120000 share/pmp/obs_info_dictionary.json diff --git a/pcmdi_metrics/diurnal/scripts/savg_fourierWrappedInOut.py b/pcmdi_metrics/diurnal/scripts/savg_fourierWrappedInOut.py index a002e52d4..cb247f37c 100755 --- a/pcmdi_metrics/diurnal/scripts/savg_fourierWrappedInOut.py +++ b/pcmdi_metrics/diurnal/scripts/savg_fourierWrappedInOut.py @@ -218,7 +218,11 @@ def spacevavg(tvarb1, tvarb2, sftlf, model): os.path.abspath( args.results_dir), os.path.basename(jsonname)) -egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +try: + egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +except Exception: + # python 2 seems to fail when ran in home directory of source? + egg_pth = os.path.join(os.getcwd(), "share", "pmp") disclaimer = open( os.path.join( egg_pth, diff --git a/pcmdi_metrics/diurnal/scripts/std_of_dailymeansWrappedInOut.py b/pcmdi_metrics/diurnal/scripts/std_of_dailymeansWrappedInOut.py index 236a1ba23..6a6f740ba 100755 --- a/pcmdi_metrics/diurnal/scripts/std_of_dailymeansWrappedInOut.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_dailymeansWrappedInOut.py @@ -116,7 +116,11 @@ def compute(param): os.path.abspath( args.results_dir), jsonFile()) -egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +try: + egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +except Exception: + # python 2 seems to fail when ran in home directory of source? + egg_pth = os.path.join(os.getcwd(), "share", "pmp") disclaimer = open( os.path.join( egg_pth, diff --git a/pcmdi_metrics/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py b/pcmdi_metrics/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py index 92a3075cc..6f5eea049 100755 --- a/pcmdi_metrics/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_hourlyvaluesWrappedInOut.py @@ -126,7 +126,11 @@ def compute(param): os.path.abspath( args.results_dir), jsonFile()) -egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +try: + egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +except Exception: + # python 2 seems to fail when ran in home directory of source? + egg_pth = os.path.join(os.getcwd(), "share", "pmp") disclaimer = open( os.path.join( egg_pth, diff --git a/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py b/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py index a0b2f86e6..e26409310 100755 --- a/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py +++ b/pcmdi_metrics/diurnal/scripts/std_of_meandiurnalcycWrappedInOut.py @@ -128,7 +128,11 @@ def compute(param): os.path.abspath( args.results_dir), jsonFile()) -egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +try: + egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +except Exception: + # python 2 seems to fail when ran in home directory of source? + egg_pth = os.path.join(os.getcwd(), "share", "pmp") disclaimer = open( os.path.join( egg_pth, diff --git a/pcmdi_metrics/driver/dataset.py b/pcmdi_metrics/driver/dataset.py index c4ad0852b..a2e50a9b3 100644 --- a/pcmdi_metrics/driver/dataset.py +++ b/pcmdi_metrics/driver/dataset.py @@ -118,7 +118,11 @@ def get(self): @staticmethod def load_path_as_file_obj(name): ''' Returns a File object for the file named name. ''' - egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") + try: + egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") + except Exception: + # python 2 seems to fail when ran in home directory of source? + egg_pth = os.path.join(os.getcwd(), "share", "pmp") file_path = os.path.join(egg_pth, name) opened_file = None try: diff --git a/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py b/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py index 2760a8b7b..5947c9bbe 100644 --- a/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py +++ b/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py @@ -220,8 +220,12 @@ def monsoon_wang_runner(args): ######################################### - egg_pth = pkg_resources.resource_filename( - pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") + try: + egg_pth = pkg_resources.resource_filename( + pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") + except Exception: + # python 2 seems to fail when ran in home directory of source? + egg_pth = os.path.join(os.getcwd(), "share", "pmp") globals = {} locals = {} exec(compile(open(os.path.join(egg_pth, "default_regions.py")).read(), diff --git a/share/pmp/default_regions.py b/share/pmp/default_regions.py new file mode 120000 index 000000000..ed67d976a --- /dev/null +++ b/share/pmp/default_regions.py @@ -0,0 +1 @@ +../default_regions.py \ No newline at end of file diff --git a/share/pmp/disclaimer.txt b/share/pmp/disclaimer.txt new file mode 120000 index 000000000..7440319e3 --- /dev/null +++ b/share/pmp/disclaimer.txt @@ -0,0 +1 @@ +../disclaimer.txt \ No newline at end of file diff --git a/share/pmp/graphics/png b/share/pmp/graphics/png new file mode 120000 index 000000000..c35c7ccee --- /dev/null +++ b/share/pmp/graphics/png @@ -0,0 +1 @@ +../../pcmdi \ No newline at end of file diff --git a/share/pmp/graphics/vcs b/share/pmp/graphics/vcs new file mode 120000 index 000000000..d7feb350a --- /dev/null +++ b/share/pmp/graphics/vcs @@ -0,0 +1 @@ +../../../pcmdi_metrics/graphics/share \ No newline at end of file diff --git a/share/pmp/obs_info_dictionary.json b/share/pmp/obs_info_dictionary.json new file mode 120000 index 000000000..8d4e6ef23 --- /dev/null +++ b/share/pmp/obs_info_dictionary.json @@ -0,0 +1 @@ +../../doc/obs_info_dictionary.json \ No newline at end of file diff --git a/tests/test_pmp_portrait_values_on.py b/tests/test_pmp_portrait_values_on.py index d634b2a27..568ee5d3e 100644 --- a/tests/test_pmp_portrait_values_on.py +++ b/tests/test_pmp_portrait_values_on.py @@ -9,7 +9,11 @@ import vcs import sys import pkg_resources -egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +try: + egg_pth = pkg_resources.resource_filename(pkg_resources.Requirement.parse("pcmdi_metrics"), "share/pmp") +except Exception: + # python 2 seems to fail when ran in home directory of source? + egg_pth = os.path.join(os.getcwd(), "share", "pmp") class TestPortraits(basepmpgraphics.TestGraphics): def __init__(self,*args,**kargs): diff --git a/tests/test_pmp_portraits.py b/tests/test_pmp_portraits.py index e067565d3..faf5552e9 100644 --- a/tests/test_pmp_portraits.py +++ b/tests/test_pmp_portraits.py @@ -10,8 +10,11 @@ import sys import pkg_resources one = pkg_resources.Requirement.parse("pcmdi_metrics") -print("ONE:",one) -egg_pth = pkg_resources.resource_filename(one, "share/pmp") +try: + egg_pth = pkg_resources.resource_filename(one, "share/pmp") +except Exception: + # python 2 seems to fail when ran in home directory of source? + egg_pth = os.path.join(os.getcwd(), "share", "pmp") class TestPortraits(basepmpgraphics.TestGraphics): def __init__(self,*args,**kargs): From 55606c7d422916a4ae0953b0db38f54e80ae3331 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 25 Apr 2019 17:35:09 -0700 Subject: [PATCH 72/84] demo notebooks --- doc/jupyter/Demo/Demo_0_download_data.ipynb | 102 ++++++++++ doc/jupyter/Demo/Demo_1_mean_climate.ipynb | 201 ++++++++++++++++++++ doc/jupyter/Demo/basic_param.py.in | 55 ++++++ 3 files changed, 358 insertions(+) create mode 100644 doc/jupyter/Demo/Demo_0_download_data.ipynb create mode 100644 doc/jupyter/Demo/Demo_1_mean_climate.ipynb create mode 100644 doc/jupyter/Demo/basic_param.py.in diff --git a/doc/jupyter/Demo/Demo_0_download_data.ipynb b/doc/jupyter/Demo/Demo_0_download_data.ipynb new file mode 100644 index 000000000..c1cd9a83f --- /dev/null +++ b/doc/jupyter/Demo/Demo_0_download_data.ipynb @@ -0,0 +1,102 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Download Data\n", + "\n", + "This Notebook setup the data for the other demos" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Lets get the file containing the data needed for this demo\n", + "import requests\n", + "r = requests.get(\"https://pcmdiweb.llnl.gov/pss/pmpdata/cmec_tutorial_files.txt\")\n", + "with open(\"data_files.txt\",\"wb\") as f:\n", + " f.write(r.content)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's retrieve these sample files locally, please edit the foloowing to match a good location on your system.\n", + "\n", + "You will need to edit the subsequent tutorials to match this path" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "demo_data_directory = \"demo_data\"" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MD5: data_files.txt\n", + "Downloading: 'pmpobs_v1.0/atm/mo/rlut/CERES/ac/rlut_CERES_000001-000012_ac.nc' from 'https://pcmdiweb.llnl.gov/pss/pmpdata/' in: demo_data/pmpobs_v1.0/atm/mo/rlut/CERES/ac/rlut_CERES_000001-000012_ac.nc\n", + "Downloading: 'example_data/atm/mo/rlut/ac/CMIP5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc' from 'https://pcmdiweb.llnl.gov/pss/pmpdata/' in: demo_data/example_data/atm/mo/rlut/ac/CMIP5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc\n", + "Downloading: 'example_data/atm/mo/rlut/ac/CMIP5.historical.CSIRO-Mk3-6-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc' from 'https://pcmdiweb.llnl.gov/pss/pmpdata/' in: demo_data/example_data/atm/mo/rlut/ac/CMIP5.historical.CSIRO-Mk3-6-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc\n" + ] + } + ], + "source": [ + "# Let's download the files\n", + "import cdat_info\n", + "cdat_info.download_sample_data_files(\"data_files.txt\", demo_data_directory)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You're done!\n", + "Please proceed to the next tutorial" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/jupyter/Demo/Demo_1_mean_climate.ipynb b/doc/jupyter/Demo/Demo_1_mean_climate.ipynb new file mode 100644 index 000000000..17a0ce42e --- /dev/null +++ b/doc/jupyter/Demo/Demo_1_mean_climate.ipynb @@ -0,0 +1,201 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Mean Climate Driver\n", + "\n", + "This notebook aims at inroducing new users on how to use the PCDMI mean climate driver.\n", + "\n", + "It is expected that you have downloaded the sample data as demonstrated in [the download notebook](Demo_0_download_data.ipynb)\n", + "\n", + "Please edit the path in the following cell to reflect the location on your system where you downloaded the data" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# This is where you downloaded the sample_data\n", + "demo_data_directory = \"demo_data\"\n", + "# this line is where your output will be stored\n", + "demo_output_directory = \"demo_output\"" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Preparing parameter file: basic_param.py\n" + ] + } + ], + "source": [ + "# this prepares the various parameter files used in this demo notebooks to reflect where you downloaded the data\n", + "import glob\n", + "\n", + "# Dictionary for template_files substitutions \n", + "sub_dict = {\n", + " \"INPUT_DIR\": demo_data_directory,\n", + " \"OUTPUT_DIR\": demo_output_directory\n", + "}\n", + "for name in glob.glob(\"*.in\"):\n", + " with open(name) as template_file:\n", + " print(\"Preparing parameter file: {}\".format(name[:-3]))\n", + " template = template_file.read()\n", + " for key in sub_dict:\n", + " template = template.replace(\"${}$\".format(key), sub_dict[key])\n", + " with open(name[:-3], \"w\") as param_file:\n", + " param_file.write(template)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The PCMDI Median Driver is driven via parameter files reflecting your study and environment\n", + "in his bare minimum" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "import os\n", + "\n", + "#\n", + "# OPTIONS ARE SET BY USER IN THIS FILE AS INDICATED BELOW BY:\n", + "#\n", + "#\n", + "\n", + "# RUN IDENTIFICATION\n", + "# DEFINES A SUBDIRECTORY TO METRICS OUTPUT RESULTS SO MULTIPLE CASES CAN\n", + "# BE COMPARED\n", + "case_id = 'basicTest'\n", + "\n", + "# LIST OF MODEL VERSIONS TO BE TESTED - WHICH ARE EXPECTED TO BE PART OF\n", + "# CLIMATOLOGY FILENAME\n", + "test_data_set = ['ACCESS1-0', 'CSIRO-Mk3-6-0']\n", + "\n", + "\n", + "# VARIABLES TO USE\n", + "vars = ['rlut']\n", + "\n", + "\n", + "# Observations to use at the moment \"default\" or \"alternate\"\n", + "reference_data_set = ['all']\n", + "#ext = '.nc'\n", + "\n", + "# INTERPOLATION OPTIONS\n", + "target_grid = '2.5x2.5' # OPTIONS: '2.5x2.5' or an actual cdms2 grid object\n", + "regrid_tool = 'regrid2' # 'regrid2' # OPTIONS: 'regrid2','esmf'\n", + "# OPTIONS: 'linear','conservative', only if tool is esmf\n", + "regrid_method = 'linear'\n", + "regrid_tool_ocn = 'esmf' # OPTIONS: \"regrid2\",\"esmf\"\n", + "# OPTIONS: 'linear','conservative', only if tool is esmf\n", + "regrid_method_ocn = 'linear'\n", + "\n", + "# Templates for climatology files\n", + "# %(param) will subsitute param with values in this file\n", + "filename_template = \"CMIP5.historical.r1i1p1.mon.%(variable)_198101-200512.AC.v20190225.nc\"\n", + "\n", + "# filename template for landsea masks ('sftlf')\n", + "sftlf_filename_template = \"sftlf_%(model_version).nc\"\n", + "generate_sftlf = True # if land surface type mask cannot be found, generate one\n", + "\n", + "\n", + "pth = os.path.dirname(__file__)\n", + "# ROOT PATH FOR MODELS CLIMATOLOGIES\n", + "test_data_path = 'demo_data/example_data/atm/mo/rlut/ac/'\n", + "# ROOT PATH FOR OBSERVATIONS\n", + "# Note that atm/mo/%(variable)/ac will be added to this\n", + "reference_data_path = 'demo_data/pmpobs_v1.0'\n", + "\n", + "# DIRECTORY WHERE TO PUT RESULTS\n", + "metrics_output_path = os.path.join(\n", + " 'demo_output',\n", + " \"%(case_id)\")\n", + "\n", + "\n" + ] + } + ], + "source": [ + "with open(\"basic_param.py\") as f:\n", + " print(f.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now to run this simply call the mean climate driver\n", + "```\n", + "mean_climate_driver.py -p basic_param.py\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import subprocess\n", + "subprocess.call(\"mean_climate_driver.py -p basic_param.py\".split())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/jupyter/Demo/basic_param.py.in b/doc/jupyter/Demo/basic_param.py.in new file mode 100644 index 000000000..87bca2179 --- /dev/null +++ b/doc/jupyter/Demo/basic_param.py.in @@ -0,0 +1,55 @@ +import os + +# +# OPTIONS ARE SET BY USER IN THIS FILE AS INDICATED BELOW BY: +# +# + +# RUN IDENTIFICATION +# DEFINES A SUBDIRECTORY TO METRICS OUTPUT RESULTS SO MULTIPLE CASES CAN +# BE COMPARED +case_id = 'basicTest' + +# LIST OF MODEL VERSIONS TO BE TESTED - WHICH ARE EXPECTED TO BE PART OF +# CLIMATOLOGY FILENAME +test_data_set = ['ACCESS1-0', 'CSIRO-Mk3-6-0'] + + +# VARIABLES TO USE +vars = ['rlut'] + + +# Observations to use at the moment "default" or "alternate" +reference_data_set = ['all'] +#ext = '.nc' + +# INTERPOLATION OPTIONS +target_grid = '2.5x2.5' # OPTIONS: '2.5x2.5' or an actual cdms2 grid object +regrid_tool = 'regrid2' # 'regrid2' # OPTIONS: 'regrid2','esmf' +# OPTIONS: 'linear','conservative', only if tool is esmf +regrid_method = 'linear' +regrid_tool_ocn = 'esmf' # OPTIONS: "regrid2","esmf" +# OPTIONS: 'linear','conservative', only if tool is esmf +regrid_method_ocn = 'linear' + +# Templates for climatology files +# %(param) will subsitute param with values in this file +filename_template = "CMIP5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20190225.nc" + +# filename template for landsea masks ('sftlf') +sftlf_filename_template = "sftlf_%(model_version).nc" +generate_sftlf = True # if land surface type mask cannot be found, generate one + + +pth = os.path.dirname(__file__) +# ROOT PATH FOR MODELS CLIMATOLOGIES +test_data_path = '$INPUT_DIR$/example_data/atm/mo/rlut/ac/' +# ROOT PATH FOR OBSERVATIONS +# Note that atm/mo/%(variable)/ac will be added to this +reference_data_path = '$INPUT_DIR$/pmpobs_v1.0' + +# DIRECTORY WHERE TO PUT RESULTS +metrics_output_path = os.path.join( + '$OUTPUT_DIR$', + "%(case_id)") + From 6fef1358acba0e4c5617143fbf2fe25ad4e0f406 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Tue, 7 May 2019 17:10:15 -0700 Subject: [PATCH 73/84] Separate branch for notebook jsn class (#600) --- doc/jupyter/Jsons/JsonClass.ipynb | 694 ++++++++++++++ .../tos_2.5x2.5_esmf_linear_metrics_2.json | 876 ++++++++++++++++++ 2 files changed, 1570 insertions(+) create mode 100644 doc/jupyter/Jsons/JsonClass.ipynb create mode 100644 tests/pcmdi_install_test_results/metrics_results/installationTest/tos_2.5x2.5_esmf_linear_metrics_2.json diff --git a/doc/jupyter/Jsons/JsonClass.ipynb b/doc/jupyter/Jsons/JsonClass.ipynb new file mode 100644 index 000000000..9163c6d32 --- /dev/null +++ b/doc/jupyter/Jsons/JsonClass.ipynb @@ -0,0 +1,694 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "PMP Json Formatted I/O\n", + "======================\n", + "\n", + "# Reading in PMP's json files\n", + "\n", + "This section will sohw how to read in json files generated by PMP and select pieces of it.\n", + "\n", + "We are assuming you're running this notebook from its directory in the [pcmdi_metrics](https://github.com/pcmdi/pcmdi_metrics) repo\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Setup the notebook\n", + "from __future__ import print_function\n", + "import pcmdi_metrics\n", + "json1 = \"../../../tests/pcmdi_install_test_results/metrics_results/installationTest/tas_2.5x2.5_regrid2_linear_metrics.json\"\n", + "json2 = \"../../../tests/pcmdi_install_test_results/metrics_results/installationTest/tos_2.5x2.5_esmf_linear_metrics_2.json\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reader object\n", + "\n", + "Let's create our Json reader object by pointing it to the desired files" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "J1 = pcmdi_metrics.io.base.JSONs([json1, json2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Querying the reader object\n", + "\n", + "Let's query the object, first what are the axes available?\n", + "i.e what is the overall json structure of the files read in" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['variable', 'model', 'reference', 'rip', 'region', 'statistic', 'season']" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J1.getAxisIds()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we get a little more info by getting the actual cdms2 axes that would be generated by reading everything in.\n", + "\n", + "Note now that the axes length include the **total** possible number of values, for example in this example each file contains **ONE** variable , but the resulting reading would have **TWO** variables" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ id: variable\n", + " Length: 2\n", + " First: tas\n", + " Last: tos\n", + " Python id: 0x10631b358, id: model\n", + " Length: 2\n", + " First: GFDL-ESM2G\n", + " Last: GFDL-ESM2Gb\n", + " Python id: 0x121760160, id: reference\n", + " Length: 2\n", + " First: SimulationDescription\n", + " Last: defaultReference\n", + " Python id: 0x121760198, id: rip\n", + " Length: 2\n", + " First: r1i1p1\n", + " Last: r2i1p1\n", + " Python id: 0x1217601d0, id: region\n", + " Length: 6\n", + " First: NHEX\n", + " Last: terre\n", + " Python id: 0x121760128, id: statistic\n", + " Length: 16\n", + " First: bias_xy\n", + " Last: std_xyt\n", + " Python id: 0x121760390, id: season\n", + " Length: 5\n", + " First: ann\n", + " Last: son\n", + " Python id: 0x121760438]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J1.getAxisList()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also retrieve only a specific axis" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " id: statistic\n", + " Length: 16\n", + " First: bias_xy\n", + " Last: std_xyt\n", + " Python id: 0x121760470" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J1.getAxis(\"statistic\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's print all the values in the axis" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['bias_xy', 'cor_xy', 'mae_xy', 'mean-obs_xy', 'mean_xy',\n", + " 'rms_devzm', 'rms_xy', 'rms_xyt', 'rms_y', 'rmsc_xy', 'std-obs_xy',\n", + " 'std-obs_xy_devzm', 'std-obs_xyt', 'std_xy', 'std_xy_devzm',\n", + " 'std_xyt'], dtype=' Date: Wed, 22 May 2019 12:27:09 -0700 Subject: [PATCH 74/84] build general noarch not just py3 --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cc225bf27..d4e18875e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -77,7 +77,7 @@ aliases: rm -rf cdp cp -r ../../recipes/pcmdi_metrics . python ./prep_for_build.py -l 1.2 - conda build $PKG_NAME $CHANNELS --python=36 + conda build $PKG_NAME $CHANNELS anaconda -t $CONDA_UPLOAD_TOKEN upload -u pcmdi -l $LABEL $CONDA_BLD_PATH/noarch/$PKG_NAME-*tar.bz2 --force From 0154e2b9b0d481107e6e5c0adc3a38ca4a44bc69 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 22 May 2019 12:54:26 -0700 Subject: [PATCH 75/84] conda forge nightmare needs libnetcdf 4.6.2 --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d4e18875e..1d5d16083 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -16,7 +16,7 @@ aliases: - &create_conda_env name: create_conda_env environment: - PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5' 'vtk-cdat>8.1'" + PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5' 'vtk-cdat>8.1' libnetcdf=4.6.2" CHANNELS: "-c cdat/label/v81 -c conda-forge -c pcmdi" command: | export PATH=$WORKDIR/miniconda/bin:$PATH From 3f5f1e4d58eba9793217adafd5b4f39bd9199889 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 22 May 2019 14:05:51 -0700 Subject: [PATCH 76/84] need to build both py2 and py3? --- .circleci/config.yml | 3 ++- recipes/pcmdi_metrics/meta.yaml.in | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1d5d16083..020f205df 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -77,7 +77,8 @@ aliases: rm -rf cdp cp -r ../../recipes/pcmdi_metrics . python ./prep_for_build.py -l 1.2 - conda build $PKG_NAME $CHANNELS + conda build $PKG_NAME $CHANNELS --python=36 + conda build $PKG_NAME $CHANNELS --python=27 anaconda -t $CONDA_UPLOAD_TOKEN upload -u pcmdi -l $LABEL $CONDA_BLD_PATH/noarch/$PKG_NAME-*tar.bz2 --force diff --git a/recipes/pcmdi_metrics/meta.yaml.in b/recipes/pcmdi_metrics/meta.yaml.in index 718d1c988..0ca5519a2 100644 --- a/recipes/pcmdi_metrics/meta.yaml.in +++ b/recipes/pcmdi_metrics/meta.yaml.in @@ -18,12 +18,12 @@ requirements: - numpy run: - python {{ python }} - - vcs >=2.10 - - vcsaddons >=2.10 - - cdms2 >=2.10 - - genutil >=2.10 - - cdutil >=2.10 - - cdp >=1.3.2 + - vcs >=8.1 + - vcsaddons >=8.1 + - cdms2 >=3 + - genutil >=8.1 + - cdutil >=8.1 + - cdp - matplotlib - numpy - cia From b8c5cd9fa19beb175066ae92f66178560c1e1b04 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Wed, 22 May 2019 16:19:07 -0700 Subject: [PATCH 77/84] Nightlies for vcsaddons still say 8.1 --- recipes/pcmdi_metrics/meta.yaml.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/pcmdi_metrics/meta.yaml.in b/recipes/pcmdi_metrics/meta.yaml.in index 0ca5519a2..ac79179ff 100644 --- a/recipes/pcmdi_metrics/meta.yaml.in +++ b/recipes/pcmdi_metrics/meta.yaml.in @@ -18,8 +18,8 @@ requirements: - numpy run: - python {{ python }} - - vcs >=8.1 - - vcsaddons >=8.1 + - vcs >=8.0 + - vcsaddons >=8.0 - cdms2 >=3 - genutil >=8.1 - cdutil >=8.1 From ef54524c9a3845afadc9f1312393d0f68734a4be Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 23 May 2019 09:11:47 -0700 Subject: [PATCH 78/84] Adding tests to fix #602 (#603) --- pcmdi_metrics/version.py | 4 ++-- .../mon}/ta/ERA40/ac/ta_ERA40_000001-000012_ac.nc | Bin ..._pcmdi-metrics_Amon_ERAINT_198901-200911-clim.nc | Bin tests/pcmdi/obs/obs_info_dictionary.json | 6 ++++-- 4 files changed, 6 insertions(+), 4 deletions(-) rename tests/pcmdi/obs/{atm/mo => atmos/mon}/ta/ERA40/ac/ta_ERA40_000001-000012_ac.nc (100%) rename tests/pcmdi/obs/{atm/mo => atmos/mon}/tas/ERAINT/ac/tas_pcmdi-metrics_Amon_ERAINT_198901-200911-clim.nc (100%) diff --git a/pcmdi_metrics/version.py b/pcmdi_metrics/version.py index fa2bc1ce6..65b2cd732 100644 --- a/pcmdi_metrics/version.py +++ b/pcmdi_metrics/version.py @@ -1,3 +1,3 @@ __version__ = 'v1.2' -__git_tag_describe__ = 'v1.2-57-g930f3ae' -__git_sha1__ = '930f3aec5867b96e376ff3e29bb383008432398e' +__git_tag_describe__ = 'v1.2-45-g6fef135' +__git_sha1__ = '6fef1358acba0e4c5617143fbf2fe25ad4e0f406' diff --git a/tests/pcmdi/obs/atm/mo/ta/ERA40/ac/ta_ERA40_000001-000012_ac.nc b/tests/pcmdi/obs/atmos/mon/ta/ERA40/ac/ta_ERA40_000001-000012_ac.nc similarity index 100% rename from tests/pcmdi/obs/atm/mo/ta/ERA40/ac/ta_ERA40_000001-000012_ac.nc rename to tests/pcmdi/obs/atmos/mon/ta/ERA40/ac/ta_ERA40_000001-000012_ac.nc diff --git a/tests/pcmdi/obs/atm/mo/tas/ERAINT/ac/tas_pcmdi-metrics_Amon_ERAINT_198901-200911-clim.nc b/tests/pcmdi/obs/atmos/mon/tas/ERAINT/ac/tas_pcmdi-metrics_Amon_ERAINT_198901-200911-clim.nc similarity index 100% rename from tests/pcmdi/obs/atm/mo/tas/ERAINT/ac/tas_pcmdi-metrics_Amon_ERAINT_198901-200911-clim.nc rename to tests/pcmdi/obs/atmos/mon/tas/ERAINT/ac/tas_pcmdi-metrics_Amon_ERAINT_198901-200911-clim.nc diff --git a/tests/pcmdi/obs/obs_info_dictionary.json b/tests/pcmdi/obs/obs_info_dictionary.json index f5e807488..e2e99e83c 100644 --- a/tests/pcmdi/obs/obs_info_dictionary.json +++ b/tests/pcmdi/obs/obs_info_dictionary.json @@ -61,7 +61,8 @@ "RefTrackingDate": "Tue Jul 12 18:08:51 2011", "filename": "ta_ERA40_000001-000012_ac.nc", "period": "", - "shape": "(3, 23, 73, 144)" + "shape": "(3, 23, 73, 144)", + "subpath": "%(root)/atmos/mon/ta/ERA40/ac/%(filename)" }, "default": "ERA40" }, @@ -73,7 +74,8 @@ "RefTrackingDate": "Thu Jan 16 16:11:10 2014", "filename": "tas_pcmdi-metrics_Amon_ERAINT_198901-200911-clim.nc", "period": "198901-200911", - "shape": "(12, 121, 240)" + "shape": "(12, 121, 240)", + "template": "atmos/mon/%(variable)/%(reference)/%(ac)/%(filename)" }, "default": "ERAINT" }, From c74a63923ef9d4742665c8ba2f74eb5aa462e68b Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 30 May 2019 12:50:42 -0700 Subject: [PATCH 79/84] caching setup env to speed up things (#606) * caching setup env to speed up things * using nightly so we can have py37 --- .circleci/config.yml | 77 ++++++++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 020f205df..2295b8612 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,55 +17,64 @@ aliases: name: create_conda_env environment: PKGS: "vcs vcsaddons mesalib matplotlib scipy cia testsrunner 'proj4<5' 'vtk-cdat>8.1' libnetcdf=4.6.2" - CHANNELS: "-c cdat/label/v81 -c conda-forge -c pcmdi" + CHANNELS: "-c cdat/label/nightly -c conda-forge -c pcmdi" command: | - export PATH=$WORKDIR/miniconda/bin:$PATH - conda config --set always_yes yes --set changeps1 no - conda update -y -q conda - conda config --set anaconda_upload no - if [[ $PY_VER = "py2" ]]; then - conda create -q -n $PY_VER $CHANNELS "python<3" $PKGS $FFMPEG - else - conda create -q -n $PY_VER $CHANNELS "python=3.6" $PKGS $FFMPEG $COVERAGE_PKGS - fi + if [ -d ${HOME}/miniconda ]; then + export PATH=$HOME/miniconda/bin:$PATH + echo "Found miniconda directory" + else + mkdir -p workspace + git clone -b validateNightly git@github.com:CDAT/cdat workspace/cdat --depth=1 + python workspace/cdat/scripts/install_miniconda.py -w ${HOME} -p 'py3.7' + echo "miniconda directory not found, installing conda" + export PATH=${HOME}/miniconda/bin:$PATH + conda config --set always_yes yes --set changeps1 no + conda update -y -q conda + conda config --set anaconda_upload no + if [[ $PY_VER = "py2" ]]; then + conda create -q -n cdat $CHANNELS "python<3" $PKGS $FFMPEG + else + conda create -q -n cdat $CHANNELS "python=3.7" $PKGS $FFMPEG $COVERAGE_PKGS + fi + fi - &setup_pmp name: setup_pmp command: | - export PATH=$WORKDIR/miniconda/bin:$PATH - source activate $PY_VER + export PATH=${HOME}/miniconda/bin:$PATH + source activate cdat python setup.py install - &run_pmp_tests name: run_pmp_tests command: | - export PATH=$WORKDIR/miniconda/bin:$PATH + export PATH=${HOME}/miniconda/bin:$PATH export CDAT_ANONYMOUS_LOG=False export CDAT_SETUP_PATH=${HOME} - source activate $PY_VER + source activate cdat python run_tests.py -H -v2 $COVERAGE RESULT=$? - echo "*** $PY_VER test result: "${RESULT} + echo "*** $PY_VER test result: ${RESULT}" - &run_coveralls name: run_coveralls command: | - export PATH=$WORKDIR/miniconda/bin:$PATH - source activate $PY_VER + export PATH=${HOME}/miniconda/bin:$PATH + source activate cdat coveralls source deactivate - &conda_upload name: conda_upload environment: - CHANNELS: "-c cdat-forge -c conda-forge -c cdat -c pcmdi" + CHANNELS: "-c cdat/label/nightly -c conda-forge -c pcmdi" PKG_NAME: "pcmdi_metrics" LABEL: "nightly" command: | if [[ $CIRCLE_BRANCH != 'master' ]]; then exit 0 fi - export PATH=${HOME}/project/$WORKDIR/miniconda/bin:$PATH + export PATH=${HOME}/miniconda/bin:$PATH mkdir conda-bld cd conda-bld conda install conda-build anaconda-client @@ -77,7 +86,7 @@ aliases: rm -rf cdp cp -r ../../recipes/pcmdi_metrics . python ./prep_for_build.py -l 1.2 - conda build $PKG_NAME $CHANNELS --python=36 + conda build $PKG_NAME $CHANNELS --python=37 conda build $PKG_NAME $CHANNELS --python=27 anaconda -t $CONDA_UPLOAD_TOKEN upload -u pcmdi -l $LABEL $CONDA_BLD_PATH/noarch/$PKG_NAME-*tar.bz2 --force @@ -93,8 +102,13 @@ jobs: FFMPEG: "'ffmpeg>4' 'libpng>1.6.34'" steps: - checkout - - run: *setup_miniconda + - restore_cache: + keys: + - macos_py2_2019-05-30 - run: *create_conda_env + - save_cache: + key: macos_py2_2019-05-30 + paths: /Users/distiller/miniconda - run: *setup_pmp - run: *run_pmp_tests - store_artifacts: @@ -116,8 +130,13 @@ jobs: COVERAGE_PKGS: "coverage coveralls" steps: - checkout - - run: *setup_miniconda + - restore_cache: + keys: + - macos_py3_2019-05-30 - run: *create_conda_env + - save_cache: + key: macos_py3_2019-05-30 + paths: /Users/distiller/miniconda - run: *setup_pmp - run: *run_pmp_tests - run: *run_coveralls @@ -138,8 +157,13 @@ jobs: FFMPEG: "ffmpeg" steps: - checkout - - run: *setup_miniconda + - restore_cache: + keys: + - linux_py2_2019-05-30 - run: *create_conda_env + - save_cache: + key: linux_py2_2019-05-30 + paths: /Users/distiller/miniconda - run: *setup_pmp - run: *run_pmp_tests - store_artifacts: @@ -161,8 +185,13 @@ jobs: COVERAGE_PKGS: "coverage coveralls" steps: - checkout - - run: *setup_miniconda + - restore_cache: + keys: + - linux_py3_2019-05-30 - run: *create_conda_env + - save_cache: + key: linux_py3_2019-05-30 + paths: /Users/distiller/miniconda - run: *setup_pmp - run: *run_pmp_tests - run: *conda_upload From 22dc99068b61dada8674776b2c76912c9f307a64 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 30 May 2019 13:56:17 -0700 Subject: [PATCH 80/84] human sort list fix https://github.com/PCMDI/click/issues/10 (#605) * human sort list fix https://github.com/PCMDI/click/issues/10 * correct path for linux machines * new key for cache --- .circleci/config.yml | 20 ++++++++++---------- pcmdi_metrics/io/base.py | 23 +++++++++++++++++++++-- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2295b8612..5b2a4b01c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -104,10 +104,10 @@ jobs: - checkout - restore_cache: keys: - - macos_py2_2019-05-30 + - macos_py2_2019-06-01 - run: *create_conda_env - save_cache: - key: macos_py2_2019-05-30 + key: macos_py2_2019-06-01 paths: /Users/distiller/miniconda - run: *setup_pmp - run: *run_pmp_tests @@ -132,10 +132,10 @@ jobs: - checkout - restore_cache: keys: - - macos_py3_2019-05-30 + - macos_py3_2019-06-01 - run: *create_conda_env - save_cache: - key: macos_py3_2019-05-30 + key: macos_py3_2019-06-01 paths: /Users/distiller/miniconda - run: *setup_pmp - run: *run_pmp_tests @@ -159,11 +159,11 @@ jobs: - checkout - restore_cache: keys: - - linux_py2_2019-05-30 + - linux_py2_2019-06-01 - run: *create_conda_env - save_cache: - key: linux_py2_2019-05-30 - paths: /Users/distiller/miniconda + key: linux_py2_2019-06-01 + paths: /home/circleci/miniconda - run: *setup_pmp - run: *run_pmp_tests - store_artifacts: @@ -187,11 +187,11 @@ jobs: - checkout - restore_cache: keys: - - linux_py3_2019-05-30 + - linux_py3_2019-06-01 - run: *create_conda_env - save_cache: - key: linux_py3_2019-05-30 - paths: /Users/distiller/miniconda + key: linux_py3_2019-06-01 + paths: /home/circleci/miniconda - run: *setup_pmp - run: *run_pmp_tests - run: *conda_upload diff --git a/pcmdi_metrics/io/base.py b/pcmdi_metrics/io/base.py index 3a6519073..13572f945 100755 --- a/pcmdi_metrics/io/base.py +++ b/pcmdi_metrics/io/base.py @@ -16,6 +16,8 @@ import shlex import datetime from pcmdi_metrics import LOG_LEVEL +import copy +import re value = 0 @@ -189,6 +191,18 @@ def generateProvenance(): return prov +def sort_human(input_list): + lst = copy.copy(input_list) + + def convert(text): + return int(text) if text.isdigit() else text + + def alphanum(key): + return [convert(c) for c in re.split('([0-9]+)', key)] + lst.sort(key=alphanum) + return lst + + def scrap(data, axis=0): originalOrder = data.getOrder(ids=True) if axis not in ['x', 'y', 'z', 't'] and not isinstance(axis, int): @@ -558,13 +572,14 @@ def get_array_values_from_dict_recursive(self, out, ids, nms, axval, axes): out[tuple(ids)] = 9.99e20 def __init__(self, files=[], structure=[], ignored_keys=[], - oneVariablePerFile=True): + oneVariablePerFile=True, sortHuman=True): self.json_version = 3.0 self.json_struct = structure self.data = {} self.axes = None self.ignored_keys = ignored_keys self.oneVariablePerFile = oneVariablePerFile + self.sortHuman = sortHuman if len(files) == 0: raise Exception("You need to pass at least one file") @@ -615,8 +630,12 @@ def getAxisList(self): 0, len(self.json_struct) - 1, self.data, values) autoBounds = cdms2.getAutoBounds() cdms2.setAutoBounds("off") + if self.sortHuman: + sortFunc = sort_human + else: + sortFunc = sorted for i, nm in enumerate(self.json_struct): - axes.append(cdms2.createAxis(sorted(list(values[i])), id=nm)) + axes.append(cdms2.createAxis(sortFunc(list(values[i])), id=nm)) self.axes = axes cdms2.setAutoBounds(autoBounds) return self.axes From 151a0a90288c139860b53b10fa61c55e84f95419 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 30 May 2019 14:05:46 -0700 Subject: [PATCH 81/84] notebook to store data in json files (#604) * notebook to store data in json files * actual notebook --- ...{JsonClass.ipynb => ReadInJsonFiles.ipynb} | 0 doc/jupyter/Jsons/WriteToJson.ipynb | 201 ++++++++++++++++++ pcmdi_metrics/io/__init__.py | 1 + pcmdi_metrics/io/base.py | 36 +++- pcmdi_metrics/version.py | 4 +- tests/test_pmp_mv2json.py | 40 ++++ 6 files changed, 270 insertions(+), 12 deletions(-) rename doc/jupyter/Jsons/{JsonClass.ipynb => ReadInJsonFiles.ipynb} (100%) create mode 100644 doc/jupyter/Jsons/WriteToJson.ipynb create mode 100644 tests/test_pmp_mv2json.py diff --git a/doc/jupyter/Jsons/JsonClass.ipynb b/doc/jupyter/Jsons/ReadInJsonFiles.ipynb similarity index 100% rename from doc/jupyter/Jsons/JsonClass.ipynb rename to doc/jupyter/Jsons/ReadInJsonFiles.ipynb diff --git a/doc/jupyter/Jsons/WriteToJson.ipynb b/doc/jupyter/Jsons/WriteToJson.ipynb new file mode 100644 index 000000000..9a364f998 --- /dev/null +++ b/doc/jupyter/Jsons/WriteToJson.ipynb @@ -0,0 +1,201 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Writing Tables Into Re-Usable Json Files\n", + "\n", + "This notebook demonstrate how to use PMP's Json class to write easily parsable and reusable json files. See [this notebook](ReadInJsonFiles.ipynb) to see how to take advantage of this json format.\n", + "\n", + "## Key Concepts\n", + "\n", + "\n", + "### Structure\n", + "\n", + "This essentialy helps storing possibly complex tables into a json format that can later be easily parsed back into cdms/numpy variables.\n", + "\n", + "The idea is that the user ran a set of metrics looping over different parameters and wants to store these results\n", + "\n", + "For example for a given set of ***models***, loop through a given set of ***variables*** and for each variable compute a set of ***statitics***.\n", + "\n", + "`model`, `variable` and `statistic` would represent what the call the json file's **structure**\n", + "\n", + "Another example is to loop through model and realizations test against a set of references loop through modes and seasons to produce a statistic\n", + "\n", + "Here the structure would be:\n", + "\n", + "`model`, `realization`, `reference`, `mode`, `season`, `statistic`\n", + "\n", + "A python code to generate this would probably look similar to this:\n", + "\n", + "```python\n", + "for model in [\"A\", \"B\", \"C\"]:\n", + " for realization in [\"a\", \"b\", \"c\", \"d\"]:\n", + " for reference in [\"ref1\", \"ref2\"]:\n", + " for mode in [\"NAM\", \"NAO\", \"NPGO\", \"PDO\", \"PNA\"]:\n", + " for season in [\"DJF\", \"JJA\", \"MAM\"]:\n", + " for stat in [\"rms\", \"average\"]:\n", + " value = compute_some_stat(model, realization, reference, mode, season, stat)\n", + "```\n", + "\n", + "### Dictionary\n", + "\n", + "If stored in an array the final shape would be: `(3,4,2, 5, 3, 2)` which is 720 values\n", + "\n", + "But in reality maybe for each mode the user runs a different set of statistics these can also depend on the variable. Storing this in an array would end up with a lot of missing values. This is not necessary when using dictionaries.\n", + "\n", + "(If your data comes as a cdms2 variable, our package comes with a utility function to convert it back to a dictionary)\n", + "\n", + "\n", + "As described above the \"Structure\" defines what each layer of keys represent\n", + "\n", + "In the example above to access the first value one would do:\n", + "\n", + "```python\n", + "\n", + "value = results[\"A\"][\"a\"][\"ref1\"][\"NAM\"][\"DJF\"][\"rms\"]\n", + "\n", + "```\n", + "\n", + "Additional the \"results\" are expected to be in a filed named \"RESULTS\"\n", + "\n", + "## Example\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2019-05-23 14:00::pcmdi_metrics:: Results saved to a json file: /1TB/git/pcmdi_metrics/doc/jupyter/Jsons/myfile.json\n" + ] + } + ], + "source": [ + "results = {\"RESULTS\": {\"A\": {\"rms\": .2, \"mean\":.5}, \"B\": {\"mean\":.123, \"rms\": .67}}}\n", + "\n", + "import pcmdi_metrics\n", + "\n", + "out = pcmdi_metrics.io.base.Base(\".\", \"myfile.json\")\n", + "out.write(results, json_structure=[\"model\", \"Statisitc\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\"RESULTS\": {\"A\": {\"rms\": 0.2, \"mean\": 0.5}, \"B\": {\"mean\": 0.123, \"rms\": 0.67}},\n", + " \"json_version\": 3.0, \"json_structure\": [\"model\", \"Statisitc\"], \"provenance\": {\"\n", + "platform\": {\"OS\": \"Linux\", \"Version\": \"4.15.0-50-generic\", \"Name\": \"drdoom\"}, \"u\n", + "serId\": \"doutriaux1\", \"osAccess\": false, \"commandLine\": \"/1Tb/miniconda3/envs/ju\n", + "pyter-vcdat/lib/python3.6/site-packages/ipykernel_launcher.py -f /run/user/1000/\n", + "jupyter/kernel-76cecce7-1761-432d-915f-fc0bfd45647d.json\", \"date\": \"2019-05-23 1\n", + "4:00:21\", \"conda\": {}, \"packages\": {}, \"openGL\": {\"GLX\": {\"server\": {}, \"client\"\n", + ": {}}}}}\n" + ] + } + ], + "source": [ + "!more myfile.json" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "J = pcmdi_metrics.io.base.JSONs(files=[\"myfile.json\",], oneVariablePerFile=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ id: model\n", + " Length: 2\n", + " First: A\n", + " Last: B\n", + " Python id: 0x7f18d1163a90, id: Statisitc\n", + " Length: 2\n", + " First: mean\n", + " Last: rms\n", + " Python id: 0x7f18d1163160]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J.getAxisList()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "variable_5\n", + "masked_array(\n", + " data=[[0.5 , 0.2 ],\n", + " [0.123, 0.67 ]],\n", + " mask=False,\n", + " fill_value=1e+20)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J()" + ] + } + ], + "metadata": { + "data_variable_file_paths": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "selected_variables": [], + "variable_source_names": {}, + "vcdat_file_path": "", + "vcdat_loaded_variables": [] + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pcmdi_metrics/io/__init__.py b/pcmdi_metrics/io/__init__.py index 523afa1dd..472522b00 100644 --- a/pcmdi_metrics/io/__init__.py +++ b/pcmdi_metrics/io/__init__.py @@ -1,2 +1,3 @@ # init for pcmdi_metrics.io from . import base # noqa +from .base import MV2Json # noqa \ No newline at end of file diff --git a/pcmdi_metrics/io/base.py b/pcmdi_metrics/io/base.py index 13572f945..524836ab1 100755 --- a/pcmdi_metrics/io/base.py +++ b/pcmdi_metrics/io/base.py @@ -8,7 +8,7 @@ import cdms2 import hashlib import numpy -import collections +from collections import OrderedDict, Mapping import pcmdi_metrics import cdp.cdp_io import subprocess @@ -33,6 +33,23 @@ basestring = str +# Convert cdms MVs to json +def MV2Json(data, dic={}, struct=None): + if struct is None: + struct = [] + if not isinstance(data, cdms2.tvariable.TransientVariable) and dic != {}: + raise RuntimeError("MV2Json needs a cdms2 transient variable as input") + if not isinstance(data, cdms2.tvariable.TransientVariable): + return data, struct # we reach the end + else: + axis = data.getAxis(0) + if axis.id not in struct: + struct.append(axis.id) + for i, name in enumerate(axis): + dic[name], _ = MV2Json(data[i], {}, struct) + return dic, struct + + # Group merged axes def groupAxes(axes, ids=None, separator="_"): if ids is None: @@ -56,7 +73,7 @@ def groupAxes(axes, ids=None, separator="_"): # cdutil region object need a serializer def update_dict(d, u): for k, v in u.items(): - if isinstance(v, collections.Mapping): + if isinstance(v, Mapping): r = update_dict(d.get(k, {}), v) d[k] = r else: @@ -88,9 +105,9 @@ def populate_prov(prov, cmd, pairs, sep=None, index=1, fill_missing=False): def generateProvenance(): - prov = collections.OrderedDict() + prov = OrderedDict() platform = os.uname() - platfrm = collections.OrderedDict() + platfrm = OrderedDict() platfrm["OS"] = platform[0] platfrm["Version"] = platform[2] platfrm["Name"] = platform[1] @@ -110,7 +127,7 @@ def generateProvenance(): prov["osAccess"] = bool(os.access('/', os.W_OK) * os.access('/', os.R_OK)) prov["commandLine"] = " ".join(sys.argv) prov["date"] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") - prov["conda"] = collections.OrderedDict() + prov["conda"] = OrderedDict() pairs = { 'Platform': 'platform ', 'Version': 'conda version ', @@ -140,7 +157,7 @@ def generateProvenance(): 'vcs': 'vcs ', 'vtk': 'vtk-cdat ', } - prov["packages"] = collections.OrderedDict() + prov["packages"] = OrderedDict() populate_prov(prov["packages"], "conda list", pairs, fill_missing=None) pairs = { 'vcs': 'vcs-nox ', @@ -159,11 +176,11 @@ def generateProvenance(): "version": "OpenGL version string", "shading language version": "OpenGL shading language version string", } - prov["openGL"] = collections.OrderedDict() + prov["openGL"] = OrderedDict() populate_prov(prov["openGL"], "glxinfo", pairs, sep=":", index=-1) prov["openGL"]["GLX"] = { - "server": collections.OrderedDict(), - "client": collections.OrderedDict()} + "server": OrderedDict(), + "client": OrderedDict()} pairs = { "version": "GLX version", } @@ -294,7 +311,6 @@ def write(self, data, type='json', *args, **kwargs): data["json_structure"] = json_structure f = open(file_name, 'w') data["provenance"] = generateProvenance() -# data["user_notes"] = "BLAH" json.dump(data, f, cls=CDMSDomainsEncoder, *args, **kwargs) f.close() diff --git a/pcmdi_metrics/version.py b/pcmdi_metrics/version.py index 65b2cd732..d6ec4dd01 100644 --- a/pcmdi_metrics/version.py +++ b/pcmdi_metrics/version.py @@ -1,3 +1,3 @@ __version__ = 'v1.2' -__git_tag_describe__ = 'v1.2-45-g6fef135' -__git_sha1__ = '6fef1358acba0e4c5617143fbf2fe25ad4e0f406' +__git_tag_describe__ = 'v1.2-50-gef54524' +__git_sha1__ = 'ef54524c9a3845afadc9f1312393d0f68734a4be' diff --git a/tests/test_pmp_mv2json.py b/tests/test_pmp_mv2json.py new file mode 100644 index 000000000..21fa56904 --- /dev/null +++ b/tests/test_pmp_mv2json.py @@ -0,0 +1,40 @@ +import unittest +from pcmdi_metrics.io import MV2Json +import MV2 +import cdms2 + + +class TestMV2Json(unittest.TestCase): + def test2D(self): + a = MV2.array(range(6)) + a = MV2.resize(a, (2, 3)) + ax1 = cdms2.createAxis(["A", "B"], id="UPPER") + ax2 = cdms2.createAxis(["a", "b", "c"], id="lower") + a.setAxis(0, ax1) + a.setAxis(1, ax2) + jsn, struct = MV2Json(a) + self.assertEqual( + jsn, {'A': {'a': 0, 'b': 1, 'c': 2}, 'B': {'a': 3, 'b': 4, 'c': 5}}) + self.assertEqual(struct, ['UPPER', 'lower']) + + def test3D(self): + self.maxDiff = None + a = MV2.array(range(24)) + a = MV2.resize(a, (2, 4, 3)) + ax1 = cdms2.createAxis(["A", "B"], id="UPPER") + ax2 = cdms2.createAxis(["1", "2", "3", "4"], id="numbers") + ax3 = cdms2.createAxis(["a", "b", "c"], id="lower") + a.setAxis(0, ax1) + a.setAxis(1, ax2) + a.setAxis(2, ax3) + jsn, struct = MV2Json(a) + self.assertEqual(jsn, {'A': {'1': {'a': 0, 'b': 1, 'c': 2}, + '2': {'a': 3, 'b': 4, 'c': 5}, + '3': {'a': 6, 'b': 7, 'c': 8}, + '4': {'a': 9, 'b': 10, 'c': 11}}, + 'B': {'1': {'a': 12, 'b': 13, 'c': 14}, + '2': {'a': 15, 'b': 16, 'c': 17}, + '3': {'a': 18, 'b': 19, 'c': 20}, + '4': {'a': 21, 'b': 22, 'c': 23}}}) + + self.assertEqual(struct, ['UPPER', 'numbers', 'lower']) From f77e1918c0e18716c777b8a5664be0d38fb19aa8 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Thu, 20 Jun 2019 18:58:34 -0700 Subject: [PATCH 82/84] Json write (#607) * notebook to store data in json files * actual notebook From cf14c7f4d89b195419990b2f6d8259626bea6cd4 Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Fri, 21 Jun 2019 06:47:16 -0700 Subject: [PATCH 83/84] tweaks to monsoon_wang (#601) * tweaks to monsoon_wang * missing files --- doc/jupyter/Demo/Demo_0_download_data.ipynb | 17 +- doc/jupyter/Demo/Demo_1_mean_climate.ipynb | 993 +- doc/jupyter/Demo/Demo_2_monsoon_wang.ipynb | 262 + .../Demo/basic_monsoon_wang_param.py.in | 27 + doc/jupyter/Demo/basic_param.py | 55 + doc/jupyter/Demo/data_files.txt | 7 + doc/jupyter/Jsons/JsonClass.html | 13965 ++++++++++++++++ .../monsoon_wang/monsoon_wang_driver.py | 164 +- .../monsoon_wang/scripts/mpindex_compute.py | 2 +- pcmdi_metrics/version.py | 4 +- tests/test_monsoon_wang.py | 8 +- 11 files changed, 15273 insertions(+), 231 deletions(-) create mode 100644 doc/jupyter/Demo/Demo_2_monsoon_wang.ipynb create mode 100644 doc/jupyter/Demo/basic_monsoon_wang_param.py.in create mode 100644 doc/jupyter/Demo/basic_param.py create mode 100644 doc/jupyter/Demo/data_files.txt create mode 100644 doc/jupyter/Jsons/JsonClass.html diff --git a/doc/jupyter/Demo/Demo_0_download_data.ipynb b/doc/jupyter/Demo/Demo_0_download_data.ipynb index c1cd9a83f..15a63e60e 100644 --- a/doc/jupyter/Demo/Demo_0_download_data.ipynb +++ b/doc/jupyter/Demo/Demo_0_download_data.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -50,9 +50,7 @@ "output_type": "stream", "text": [ "MD5: data_files.txt\n", - "Downloading: 'pmpobs_v1.0/atm/mo/rlut/CERES/ac/rlut_CERES_000001-000012_ac.nc' from 'https://pcmdiweb.llnl.gov/pss/pmpdata/' in: demo_data/pmpobs_v1.0/atm/mo/rlut/CERES/ac/rlut_CERES_000001-000012_ac.nc\n", - "Downloading: 'example_data/atm/mo/rlut/ac/CMIP5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc' from 'https://pcmdiweb.llnl.gov/pss/pmpdata/' in: demo_data/example_data/atm/mo/rlut/ac/CMIP5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc\n", - "Downloading: 'example_data/atm/mo/rlut/ac/CMIP5.historical.CSIRO-Mk3-6-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc' from 'https://pcmdiweb.llnl.gov/pss/pmpdata/' in: demo_data/example_data/atm/mo/rlut/ac/CMIP5.historical.CSIRO-Mk3-6-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc\n" + "Downloading: 'PCMDIobs2.0/atmos/mon/pr/GPCP-2-3/gn/v20190301//pr_mon_GPCP-2-3_BE_gn_197901-201803.nc' from 'https://pcmdiweb.llnl.gov/pss/pmpdata/' in: demo_data/PCMDIobs2.0/atmos/mon/pr/GPCP-2-3/gn/v20190301//pr_mon_GPCP-2-3_BE_gn_197901-201803.nc\n" ] } ], @@ -69,13 +67,6 @@ "You're done!\n", "Please proceed to the next tutorial" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/doc/jupyter/Demo/Demo_1_mean_climate.ipynb b/doc/jupyter/Demo/Demo_1_mean_climate.ipynb index 17a0ce42e..c49010beb 100644 --- a/doc/jupyter/Demo/Demo_1_mean_climate.ipynb +++ b/doc/jupyter/Demo/Demo_1_mean_climate.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -27,17 +27,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 2, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Preparing parameter file: basic_param.py\n" - ] - } - ], + "outputs": [], "source": [ "# this prepares the various parameter files used in this demo notebooks to reflect where you downloaded the data\n", "import glob\n", @@ -67,72 +59,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 3, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "import os\n", - "\n", - "#\n", - "# OPTIONS ARE SET BY USER IN THIS FILE AS INDICATED BELOW BY:\n", - "#\n", - "#\n", - "\n", - "# RUN IDENTIFICATION\n", - "# DEFINES A SUBDIRECTORY TO METRICS OUTPUT RESULTS SO MULTIPLE CASES CAN\n", - "# BE COMPARED\n", - "case_id = 'basicTest'\n", - "\n", - "# LIST OF MODEL VERSIONS TO BE TESTED - WHICH ARE EXPECTED TO BE PART OF\n", - "# CLIMATOLOGY FILENAME\n", - "test_data_set = ['ACCESS1-0', 'CSIRO-Mk3-6-0']\n", - "\n", - "\n", - "# VARIABLES TO USE\n", - "vars = ['rlut']\n", - "\n", - "\n", - "# Observations to use at the moment \"default\" or \"alternate\"\n", - "reference_data_set = ['all']\n", - "#ext = '.nc'\n", - "\n", - "# INTERPOLATION OPTIONS\n", - "target_grid = '2.5x2.5' # OPTIONS: '2.5x2.5' or an actual cdms2 grid object\n", - "regrid_tool = 'regrid2' # 'regrid2' # OPTIONS: 'regrid2','esmf'\n", - "# OPTIONS: 'linear','conservative', only if tool is esmf\n", - "regrid_method = 'linear'\n", - "regrid_tool_ocn = 'esmf' # OPTIONS: \"regrid2\",\"esmf\"\n", - "# OPTIONS: 'linear','conservative', only if tool is esmf\n", - "regrid_method_ocn = 'linear'\n", - "\n", - "# Templates for climatology files\n", - "# %(param) will subsitute param with values in this file\n", - "filename_template = \"CMIP5.historical.r1i1p1.mon.%(variable)_198101-200512.AC.v20190225.nc\"\n", - "\n", - "# filename template for landsea masks ('sftlf')\n", - "sftlf_filename_template = \"sftlf_%(model_version).nc\"\n", - "generate_sftlf = True # if land surface type mask cannot be found, generate one\n", - "\n", - "\n", - "pth = os.path.dirname(__file__)\n", - "# ROOT PATH FOR MODELS CLIMATOLOGIES\n", - "test_data_path = 'demo_data/example_data/atm/mo/rlut/ac/'\n", - "# ROOT PATH FOR OBSERVATIONS\n", - "# Note that atm/mo/%(variable)/ac will be added to this\n", - "reference_data_path = 'demo_data/pmpobs_v1.0'\n", - "\n", - "# DIRECTORY WHERE TO PUT RESULTS\n", - "metrics_output_path = os.path.join(\n", - " 'demo_output',\n", - " \"%(case_id)\")\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "with open(\"basic_param.py\") as f:\n", " print(f.read())" @@ -150,31 +79,927 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "1" + "CompletedProcess(args=['mean_climate_driver.py', '-p', 'basic_param.py'], returncode=0)" ] }, - "execution_count": 9, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import subprocess\n", - "subprocess.call(\"mean_climate_driver.py -p basic_param.py\".split())" + "from subprocess import run, PIPE\n", + "run(\"mean_climate_driver.py -p basic_param.py\".split())" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JSON OUTPUT:\n", + "{\n", + " \"DISCLAIMER\": \"USER-NOTICE: The results in this file were produced with the PMP v1.1 (https://github.com/PCMDI/pcmdi_metrics). They are for research purposes only. They are subject to ongoing quality control and change as the PMP software advances, interpolation methods are modified, observational data sets are updated, problems with model data are corrected, etc. Use of these results for research (presentation, publications, etc.) should reference: Gleckler, P. J., C. Doutriaux, P. J. Durack, K. E. Taylor, Y. Zhang, and D. N. Williams, E. Mason, and J. Servonnat (2016), A more powerful reality test for climate models, Eos, 97, doi:10.1029/2016EO051663. If any problems are uncovered in using these results please contact the PMP development team at pcmdi-metrics@llnl.gov\\n\",\n", + " \"RESULTS\": {\n", + " \"ACCESS1-0\": {\n", + " \"units\": \"W m-2\",\n", + " \"SimulationDescription\": {\n", + " \"MIPTable\": \"Amon\",\n", + " \"Model\": \"ACCESS1-0\",\n", + " \"ModelActivity\": \"CMIP5\",\n", + " \"ModellingGroup\": \"CSIRO-BOM\",\n", + " \"Experiment\": \"historical\",\n", + " \"ModelFreeSpace\": \"N/A\",\n", + " \"Realization\": \"\",\n", + " \"creation_date\": \"2012-01-15T12:34:39Z\"\n", + " },\n", + " \"InputClimatologyFileName\": \"CMIP5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc\",\n", + " \"InputClimatologyMD5\": \"bad136e97d7f13dc5af4ac019c8ca9c2\",\n", + " \"InputRegionFileName\": null,\n", + " \"InputRegionMD5\": null,\n", + " \"default\": {\n", + " \"source\": \"CERES\",\n", + " \"\": {\n", + " \"global\": {\n", + " \"bias_xy\": {\n", + " \"ann\": \"1.767\",\n", + " \"djf\": \"2.345\",\n", + " \"mam\": \"1.867\",\n", + " \"jja\": \"1.411\",\n", + " \"son\": \"1.445\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"ann\": \"0.970\",\n", + " \"djf\": \"0.96\",\n", + " \"mam\": \"0.95\",\n", + " \"jja\": \"0.96\",\n", + " \"son\": \"0.96\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"ann\": \"5.664\",\n", + " \"djf\": \"7.173\",\n", + " \"mam\": \"7.240\",\n", + " \"jja\": \"7.343\",\n", + " \"son\": \"6.208\"\n", + " },\n", + " \"mean-obs_xy\": {\n", + " \"ann\": \"239.688\",\n", + " \"djf\": \"236.870\",\n", + " \"mam\": \"238.852\",\n", + " \"jja\": \"243.327\",\n", + " \"son\": \"239.721\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"ann\": \"241.455\",\n", + " \"djf\": \"239.215\",\n", + " \"mam\": \"240.719\",\n", + " \"jja\": \"244.738\",\n", + " \"son\": \"241.166\"\n", + " },\n", + " \"rms_devzm\": {\n", + " \"ann\": \"5.676\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"ann\": \"8.091\",\n", + " \"djf\": \"10.277\",\n", + " \"mam\": \"10.926\",\n", + " \"jja\": \"10.319\",\n", + " \"son\": \"9.136\"\n", + " },\n", + " \"rms_xyt\": {\n", + " \"ann\": \"11.408\"\n", + " },\n", + " \"rms_y\": {\n", + " \"ann\": \"4.855\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"ann\": \"7.896\",\n", + " \"djf\": \"10.006\",\n", + " \"mam\": \"10.766\",\n", + " \"jja\": \"10.222\",\n", + " \"son\": \"9.021\"\n", + " },\n", + " \"std-obs_xy\": {\n", + " \"ann\": \"29.604\",\n", + " \"djf\": \"32.594\",\n", + " \"mam\": \"30.782\",\n", + " \"jja\": \"35.277\",\n", + " \"son\": \"31.261\"\n", + " },\n", + " \"std-obs_xy_devzm\": {\n", + " \"ann\": \"12.839\"\n", + " },\n", + " \"std-obs_xyt\": {\n", + " \"ann\": \"33.390\"\n", + " },\n", + " \"std_xy\": {\n", + " \"ann\": \"31.968\",\n", + " \"djf\": \"36.193\",\n", + " \"mam\": \"34.091\",\n", + " \"jja\": \"37.566\",\n", + " \"son\": \"33.816\"\n", + " },\n", + " \"std_xy_devzm\": {\n", + " \"ann\": \"12.478\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"ann\": \"36.441\"\n", + " }\n", + " },\n", + " \"NHEX\": {\n", + " \"bias_xy\": {\n", + " \"ann\": \"-2.145\",\n", + " \"djf\": \"-4.989\",\n", + " \"mam\": \"-2.742\",\n", + " \"jja\": \"2.021\",\n", + " \"son\": \"-2.859\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"ann\": \"0.989\",\n", + " \"djf\": \"0.99\",\n", + " \"mam\": \"0.98\",\n", + " \"jja\": \"0.97\",\n", + " \"son\": \"0.98\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"ann\": \"3.233\",\n", + " \"djf\": \"5.701\",\n", + " \"mam\": \"3.841\",\n", + " \"jja\": \"4.593\",\n", + " \"son\": \"3.819\"\n", + " },\n", + " \"mean-obs_xy\": {\n", + " \"ann\": \"223.337\",\n", + " \"djf\": \"202.171\",\n", + " \"mam\": \"219.724\",\n", + " \"jja\": \"246.610\",\n", + " \"son\": \"225.013\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"ann\": \"221.192\",\n", + " \"djf\": \"197.182\",\n", + " \"mam\": \"216.982\",\n", + " \"jja\": \"248.632\",\n", + " \"son\": \"222.154\"\n", + " },\n", + " \"rms_devzm\": {\n", + " \"ann\": \"3.032\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"ann\": \"3.801\",\n", + " \"djf\": \"6.547\",\n", + " \"mam\": \"4.733\",\n", + " \"jja\": \"6.115\",\n", + " \"son\": \"4.901\"\n", + " },\n", + " \"rms_xyt\": {\n", + " \"ann\": \"6.445\"\n", + " },\n", + " \"rms_y\": {\n", + " \"ann\": \"2.409\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"ann\": \"3.138\",\n", + " \"djf\": \"4.239\",\n", + " \"mam\": \"3.858\",\n", + " \"jja\": \"5.771\",\n", + " \"son\": \"3.980\"\n", + " },\n", + " \"std-obs_xy\": {\n", + " \"ann\": \"19.684\",\n", + " \"djf\": \"22.177\",\n", + " \"mam\": \"17.760\",\n", + " \"jja\": \"20.495\",\n", + " \"son\": \"22.654\"\n", + " },\n", + " \"std-obs_xy_devzm\": {\n", + " \"ann\": \"9.043\"\n", + " },\n", + " \"std-obs_xyt\": {\n", + " \"ann\": \"27.494\"\n", + " },\n", + " \"std_xy\": {\n", + " \"ann\": \"20.481\",\n", + " \"djf\": \"24.144\",\n", + " \"mam\": \"19.008\",\n", + " \"jja\": \"21.958\",\n", + " \"son\": \"22.049\"\n", + " },\n", + " \"std_xy_devzm\": {\n", + " \"ann\": \"10.258\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"ann\": \"30.092\"\n", + " }\n", + " },\n", + " \"SHEX\": {\n", + " \"bias_xy\": {\n", + " \"ann\": \"-2.243\",\n", + " \"djf\": \"0.971\",\n", + " \"mam\": \"-2.909\",\n", + " \"jja\": \"-4.873\",\n", + " \"son\": \"-2.180\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"ann\": \"0.995\",\n", + " \"djf\": \"0.98\",\n", + " \"mam\": \"1.00\",\n", + " \"jja\": \"1.00\",\n", + " \"son\": \"0.99\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"ann\": \"3.141\",\n", + " \"djf\": \"3.655\",\n", + " \"mam\": \"3.598\",\n", + " \"jja\": \"5.266\",\n", + " \"son\": \"3.173\"\n", + " },\n", + " \"mean-obs_xy\": {\n", + " \"ann\": \"216.078\",\n", + " \"djf\": \"229.049\",\n", + " \"mam\": \"216.155\",\n", + " \"jja\": \"204.913\",\n", + " \"son\": \"214.085\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"ann\": \"213.836\",\n", + " \"djf\": \"230.020\",\n", + " \"mam\": \"213.246\",\n", + " \"jja\": \"200.040\",\n", + " \"son\": \"211.905\"\n", + " },\n", + " \"rms_devzm\": {\n", + " \"ann\": \"2.412\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"ann\": \"3.724\",\n", + " \"djf\": \"4.609\",\n", + " \"mam\": \"4.270\",\n", + " \"jja\": \"5.957\",\n", + " \"son\": \"3.994\"\n", + " },\n", + " \"rms_xyt\": {\n", + " \"ann\": \"5.214\"\n", + " },\n", + " \"rms_y\": {\n", + " \"ann\": \"2.513\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"ann\": \"2.973\",\n", + " \"djf\": \"4.506\",\n", + " \"mam\": \"3.126\",\n", + " \"jja\": \"3.426\",\n", + " \"son\": \"3.347\"\n", + " },\n", + " \"std-obs_xy\": {\n", + " \"ann\": \"28.241\",\n", + " \"djf\": \"22.542\",\n", + " \"mam\": \"30.392\",\n", + " \"jja\": \"33.462\",\n", + " \"son\": \"27.559\"\n", + " },\n", + " \"std-obs_xy_devzm\": {\n", + " \"ann\": \"7.881\"\n", + " },\n", + " \"std-obs_xyt\": {\n", + " \"ann\": \"30.446\"\n", + " },\n", + " \"std_xy\": {\n", + " \"ann\": \"26.825\",\n", + " \"djf\": \"20.171\",\n", + " \"mam\": \"29.085\",\n", + " \"jja\": \"31.876\",\n", + " \"son\": \"27.748\"\n", + " },\n", + " \"std_xy_devzm\": {\n", + " \"ann\": \"7.068\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"ann\": \"30.163\"\n", + " }\n", + " },\n", + " \"TROPICS\": {\n", + " \"bias_xy\": {\n", + " \"ann\": \"5.728\",\n", + " \"djf\": \"6.699\",\n", + " \"mam\": \"6.559\",\n", + " \"jja\": \"4.248\",\n", + " \"son\": \"5.409\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"ann\": \"0.875\",\n", + " \"djf\": \"0.88\",\n", + " \"mam\": \"0.78\",\n", + " \"jja\": \"0.88\",\n", + " \"son\": \"0.88\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"ann\": \"8.141\",\n", + " \"djf\": \"9.668\",\n", + " \"mam\": \"10.760\",\n", + " \"jja\": \"9.756\",\n", + " \"son\": \"8.921\"\n", + " },\n", + " \"mean-obs_xy\": {\n", + " \"ann\": \"259.669\",\n", + " \"djf\": \"258.129\",\n", + " \"mam\": \"259.764\",\n", + " \"jja\": \"260.892\",\n", + " \"son\": \"259.893\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"ann\": \"265.396\",\n", + " \"djf\": \"264.828\",\n", + " \"mam\": \"266.323\",\n", + " \"jja\": \"265.140\",\n", + " \"son\": \"265.302\"\n", + " },\n", + " \"rms_devzm\": {\n", + " \"ann\": \"7.546\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"ann\": \"10.806\",\n", + " \"djf\": \"13.386\",\n", + " \"mam\": \"14.780\",\n", + " \"jja\": \"13.286\",\n", + " \"son\": \"12.122\"\n", + " },\n", + " \"rms_xyt\": {\n", + " \"ann\": \"15.031\"\n", + " },\n", + " \"rms_y\": {\n", + " \"ann\": \"7.501\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"ann\": \"9.164\",\n", + " \"djf\": \"11.589\",\n", + " \"mam\": \"13.245\",\n", + " \"jja\": \"12.589\",\n", + " \"son\": \"10.849\"\n", + " },\n", + " \"std-obs_xy\": {\n", + " \"ann\": \"18.674\",\n", + " \"djf\": \"23.243\",\n", + " \"mam\": \"19.942\",\n", + " \"jja\": \"25.833\",\n", + " \"son\": \"21.783\"\n", + " },\n", + " \"std-obs_xy_devzm\": {\n", + " \"ann\": \"16.054\"\n", + " },\n", + " \"std-obs_xyt\": {\n", + " \"ann\": \"24.016\"\n", + " },\n", + " \"std_xy\": {\n", + " \"ann\": \"17.735\",\n", + " \"djf\": \"23.310\",\n", + " \"mam\": \"20.153\",\n", + " \"jja\": \"25.506\",\n", + " \"son\": \"21.624\"\n", + " },\n", + " \"std_xy_devzm\": {\n", + " \"ann\": \"15.291\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"ann\": \"24.256\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " \"CSIRO-Mk3-6-0\": {\n", + " \"units\": \"W m-2\",\n", + " \"SimulationDescription\": {\n", + " \"MIPTable\": \"Amon\",\n", + " \"Model\": \"CSIRO-Mk3-6-0\",\n", + " \"ModelActivity\": \"CMIP5\",\n", + " \"ModellingGroup\": \"CSIRO-QCCCE\",\n", + " \"Experiment\": \"historical\",\n", + " \"ModelFreeSpace\": \"N/A\",\n", + " \"Realization\": \"\",\n", + " \"creation_date\": \"2011-07-27T02:28:05Z\"\n", + " },\n", + " \"InputClimatologyFileName\": \"CMIP5.historical.CSIRO-Mk3-6-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc\",\n", + " \"InputClimatologyMD5\": \"ec61d7bf2f8480f8e7a18af62d61deff\",\n", + " \"InputRegionFileName\": null,\n", + " \"InputRegionMD5\": null,\n", + " \"default\": {\n", + " \"source\": \"CERES\",\n", + " \"\": {\n", + " \"global\": {\n", + " \"bias_xy\": {\n", + " \"ann\": \"-5.452\",\n", + " \"djf\": \"-4.532\",\n", + " \"mam\": \"-5.693\",\n", + " \"jja\": \"-5.871\",\n", + " \"son\": \"-5.723\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"ann\": \"0.959\",\n", + " \"djf\": \"0.94\",\n", + " \"mam\": \"0.95\",\n", + " \"jja\": \"0.94\",\n", + " \"son\": \"0.96\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"ann\": \"8.670\",\n", + " \"djf\": \"9.974\",\n", + " \"mam\": \"9.765\",\n", + " \"jja\": \"11.048\",\n", + " \"son\": \"9.414\"\n", + " },\n", + " \"mean-obs_xy\": {\n", + " \"ann\": \"239.688\",\n", + " \"djf\": \"236.870\",\n", + " \"mam\": \"238.852\",\n", + " \"jja\": \"243.327\",\n", + " \"son\": \"239.721\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"ann\": \"234.236\",\n", + " \"djf\": \"232.337\",\n", + " \"mam\": \"233.159\",\n", + " \"jja\": \"237.456\",\n", + " \"son\": \"233.998\"\n", + " },\n", + " \"rms_devzm\": {\n", + " \"ann\": \"8.491\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"ann\": \"10.865\",\n", + " \"djf\": \"12.948\",\n", + " \"mam\": \"12.400\",\n", + " \"jja\": \"14.121\",\n", + " \"son\": \"11.720\"\n", + " },\n", + " \"rms_xyt\": {\n", + " \"ann\": \"13.699\"\n", + " },\n", + " \"rms_y\": {\n", + " \"ann\": \"7.423\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"ann\": \"9.397\",\n", + " \"djf\": \"12.129\",\n", + " \"mam\": \"11.016\",\n", + " \"jja\": \"12.842\",\n", + " \"son\": \"10.227\"\n", + " },\n", + " \"std-obs_xy\": {\n", + " \"ann\": \"29.604\",\n", + " \"djf\": \"32.594\",\n", + " \"mam\": \"30.782\",\n", + " \"jja\": \"35.277\",\n", + " \"son\": \"31.261\"\n", + " },\n", + " \"std-obs_xy_devzm\": {\n", + " \"ann\": \"12.839\"\n", + " },\n", + " \"std-obs_xyt\": {\n", + " \"ann\": \"33.390\"\n", + " },\n", + " \"std_xy\": {\n", + " \"ann\": \"32.591\",\n", + " \"djf\": \"36.368\",\n", + " \"mam\": \"34.025\",\n", + " \"jja\": \"38.828\",\n", + " \"son\": \"34.435\"\n", + " },\n", + " \"std_xy_devzm\": {\n", + " \"ann\": \"15.363\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"ann\": \"36.923\"\n", + " }\n", + " },\n", + " \"NHEX\": {\n", + " \"bias_xy\": {\n", + " \"ann\": \"-7.231\",\n", + " \"djf\": \"-9.259\",\n", + " \"mam\": \"-8.068\",\n", + " \"jja\": \"-3.746\",\n", + " \"son\": \"-7.854\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"ann\": \"0.969\",\n", + " \"djf\": \"0.95\",\n", + " \"mam\": \"0.96\",\n", + " \"jja\": \"0.94\",\n", + " \"son\": \"0.97\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"ann\": \"7.816\",\n", + " \"djf\": \"9.976\",\n", + " \"mam\": \"8.527\",\n", + " \"jja\": \"8.566\",\n", + " \"son\": \"8.461\"\n", + " },\n", + " \"mean-obs_xy\": {\n", + " \"ann\": \"223.337\",\n", + " \"djf\": \"202.171\",\n", + " \"mam\": \"219.724\",\n", + " \"jja\": \"246.610\",\n", + " \"son\": \"225.013\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"ann\": \"216.107\",\n", + " \"djf\": \"192.913\",\n", + " \"mam\": \"211.655\",\n", + " \"jja\": \"242.864\",\n", + " \"son\": \"217.159\"\n", + " },\n", + " \"rms_devzm\": {\n", + " \"ann\": \"5.203\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"ann\": \"9.037\",\n", + " \"djf\": \"11.819\",\n", + " \"mam\": \"9.638\",\n", + " \"jja\": \"10.462\",\n", + " \"son\": \"9.839\"\n", + " },\n", + " \"rms_xyt\": {\n", + " \"ann\": \"10.945\"\n", + " },\n", + " \"rms_y\": {\n", + " \"ann\": \"8.221\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"ann\": \"5.421\",\n", + " \"djf\": \"7.347\",\n", + " \"mam\": \"5.272\",\n", + " \"jja\": \"9.768\",\n", + " \"son\": \"5.925\"\n", + " },\n", + " \"std-obs_xy\": {\n", + " \"ann\": \"19.684\",\n", + " \"djf\": \"22.177\",\n", + " \"mam\": \"17.760\",\n", + " \"jja\": \"20.495\",\n", + " \"son\": \"22.654\"\n", + " },\n", + " \"std-obs_xy_devzm\": {\n", + " \"ann\": \"9.043\"\n", + " },\n", + " \"std-obs_xyt\": {\n", + " \"ann\": \"27.494\"\n", + " },\n", + " \"std_xy\": {\n", + " \"ann\": \"21.448\",\n", + " \"djf\": \"22.486\",\n", + " \"mam\": \"18.885\",\n", + " \"jja\": \"25.768\",\n", + " \"son\": \"24.338\"\n", + " },\n", + " \"std_xy_devzm\": {\n", + " \"ann\": \"10.147\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"ann\": \"30.554\"\n", + " }\n", + " },\n", + " \"SHEX\": {\n", + " \"bias_xy\": {\n", + " \"ann\": \"-7.928\",\n", + " \"djf\": \"-5.019\",\n", + " \"mam\": \"-8.705\",\n", + " \"jja\": \"-10.113\",\n", + " \"son\": \"-7.909\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"ann\": \"0.983\",\n", + " \"djf\": \"0.98\",\n", + " \"mam\": \"0.99\",\n", + " \"jja\": \"0.98\",\n", + " \"son\": \"0.97\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"ann\": \"8.799\",\n", + " \"djf\": \"6.536\",\n", + " \"mam\": \"9.311\",\n", + " \"jja\": \"10.699\",\n", + " \"son\": \"9.581\"\n", + " },\n", + " \"mean-obs_xy\": {\n", + " \"ann\": \"216.078\",\n", + " \"djf\": \"229.049\",\n", + " \"mam\": \"216.155\",\n", + " \"jja\": \"204.913\",\n", + " \"son\": \"214.085\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"ann\": \"208.150\",\n", + " \"djf\": \"224.030\",\n", + " \"mam\": \"207.451\",\n", + " \"jja\": \"194.800\",\n", + " \"son\": \"206.176\"\n", + " },\n", + " \"rms_devzm\": {\n", + " \"ann\": \"3.632\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"ann\": \"9.796\",\n", + " \"djf\": \"7.436\",\n", + " \"mam\": \"10.270\",\n", + " \"jja\": \"12.078\",\n", + " \"son\": \"10.857\"\n", + " },\n", + " \"rms_xyt\": {\n", + " \"ann\": \"10.522\"\n", + " },\n", + " \"rms_y\": {\n", + " \"ann\": \"8.470\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"ann\": \"5.754\",\n", + " \"djf\": \"5.487\",\n", + " \"mam\": \"5.450\",\n", + " \"jja\": \"6.603\",\n", + " \"son\": \"7.438\"\n", + " },\n", + " \"std-obs_xy\": {\n", + " \"ann\": \"28.241\",\n", + " \"djf\": \"22.542\",\n", + " \"mam\": \"30.392\",\n", + " \"jja\": \"33.462\",\n", + " \"son\": \"27.559\"\n", + " },\n", + " \"std-obs_xy_devzm\": {\n", + " \"ann\": \"7.881\"\n", + " },\n", + " \"std-obs_xyt\": {\n", + " \"ann\": \"30.446\"\n", + " },\n", + " \"std_xy\": {\n", + " \"ann\": \"30.236\",\n", + " \"djf\": \"24.968\",\n", + " \"mam\": \"32.417\",\n", + " \"jja\": \"33.941\",\n", + " \"son\": \"30.774\"\n", + " },\n", + " \"std_xy_devzm\": {\n", + " \"ann\": \"8.482\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"ann\": \"32.940\"\n", + " }\n", + " },\n", + " \"TROPICS\": {\n", + " \"bias_xy\": {\n", + " \"ann\": \"-3.325\",\n", + " \"djf\": \"-1.926\",\n", + " \"mam\": \"-3.000\",\n", + " \"jja\": \"-4.813\",\n", + " \"son\": \"-3.565\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"ann\": \"0.834\",\n", + " \"djf\": \"0.82\",\n", + " \"mam\": \"0.78\",\n", + " \"jja\": \"0.84\",\n", + " \"son\": \"0.86\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"ann\": \"9.033\",\n", + " \"djf\": \"11.692\",\n", + " \"mam\": \"10.611\",\n", + " \"jja\": \"12.464\",\n", + " \"son\": \"9.806\"\n", + " },\n", + " \"mean-obs_xy\": {\n", + " \"ann\": \"259.669\",\n", + " \"djf\": \"258.129\",\n", + " \"mam\": \"259.764\",\n", + " \"jja\": \"260.892\",\n", + " \"son\": \"259.893\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"ann\": \"256.343\",\n", + " \"djf\": \"256.204\",\n", + " \"mam\": \"256.764\",\n", + " \"jja\": \"256.080\",\n", + " \"son\": \"256.328\"\n", + " },\n", + " \"rms_devzm\": {\n", + " \"ann\": \"11.138\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"ann\": \"12.135\",\n", + " \"djf\": \"15.421\",\n", + " \"mam\": \"14.434\",\n", + " \"jja\": \"16.466\",\n", + " \"son\": \"12.937\"\n", + " },\n", + " \"rms_xyt\": {\n", + " \"ann\": \"16.127\"\n", + " },\n", + " \"rms_y\": {\n", + " \"ann\": \"4.792\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"ann\": \"11.671\",\n", + " \"djf\": \"15.301\",\n", + " \"mam\": \"14.119\",\n", + " \"jja\": \"15.747\",\n", + " \"son\": \"12.436\"\n", + " },\n", + " \"std-obs_xy\": {\n", + " \"ann\": \"18.674\",\n", + " \"djf\": \"23.243\",\n", + " \"mam\": \"19.942\",\n", + " \"jja\": \"25.833\",\n", + " \"son\": \"21.783\"\n", + " },\n", + " \"std-obs_xy_devzm\": {\n", + " \"ann\": \"16.054\"\n", + " },\n", + " \"std-obs_xyt\": {\n", + " \"ann\": \"24.016\"\n", + " },\n", + " \"std_xy\": {\n", + " \"ann\": \"21.070\",\n", + " \"djf\": \"26.449\",\n", + " \"mam\": \"22.198\",\n", + " \"jja\": \"28.912\",\n", + " \"son\": \"23.966\"\n", + " },\n", + " \"std_xy_devzm\": {\n", + " \"ann\": \"19.611\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"ann\": \"26.907\"\n", + " }\n", + " }\n", + " }\n", + " }\n", + " }\n", + " },\n", + " \"Variable\": {\n", + " \"id\": \"rlut\"\n", + " },\n", + " \"json_version\": 3.0,\n", + " \"References\": {\n", + " \"default\": {\n", + " \"CMIP_CMOR_TABLE\": \"Amon\",\n", + " \"MD5sum\": \"146eec5e8a734fedbbdd0909921530f2\",\n", + " \"RefName\": \"CERES\",\n", + " \"RefTrackingDate\": \"Wed Aug 31 17:45:45 2016\",\n", + " \"filename\": \"rlut_CERES_000001-000012_ac.nc\",\n", + " \"period\": \"000001-000012\",\n", + " \"shape\": \"(12, 180, 360)\"\n", + " }\n", + " },\n", + " \"RegionalMasking\": {\n", + " \"global\": {\n", + " \"id\": \"global\"\n", + " },\n", + " \"NHEX\": {\n", + " \"domain\": {\n", + " \"NHEX\": \"cdutil.region.domain(latitude=(30.0, 90))\"\n", + " },\n", + " \"id\": \"NHEX\"\n", + " },\n", + " \"SHEX\": {\n", + " \"domain\": {\n", + " \"SHEX\": \"cdutil.region.domain(latitude=(-90.0, -30))\"\n", + " },\n", + " \"id\": \"SHEX\"\n", + " },\n", + " \"TROPICS\": {\n", + " \"domain\": {\n", + " \"TROPICS\": \"cdutil.region.domain(latitude=(-30.0, 30))\"\n", + " },\n", + " \"id\": \"TROPICS\"\n", + " }\n", + " },\n", + " \"GridInfo\": {\n", + " \"RegridMethod\": \"linear\",\n", + " \"RegridTool\": \"regrid2\",\n", + " \"GridName\": \"2.5x2.5\",\n", + " \"GridResolution\": [\n", + " 25,\n", + " 144\n", + " ]\n", + " },\n", + " \"METRICS\": {\n", + " \"rms_xyt\": {\n", + " \"Name\": \"Spatio-Temporal Root Mean Square\",\n", + " \"Abstract\": \"Compute Spatial and Temporal Root Mean Square\",\n", + " \"URI\": \"http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"rms_xy\": {\n", + " \"Name\": \"Spatial Root Mean Square\",\n", + " \"Abstract\": \"Compute Spatial Root Mean Square\",\n", + " \"URI\": \"http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"rmsc_xy\": {\n", + " \"Name\": \"Spatial Root Mean Square\",\n", + " \"Abstract\": \"Compute Centered Spatial Root Mean Square\",\n", + " \"URI\": \"http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"bias_xy\": {\n", + " \"Name\": \"Bias\",\n", + " \"Abstract\": \"Compute Full Average of Model - Observation\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"mae_xy\": {\n", + " \"Name\": \"Mean Absolute Error\",\n", + " \"Abstract\": \"Compute Full Average of Absolute Difference Between Model And Observation\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"cor_xy\": {\n", + " \"Name\": \"Spatial Correlation\",\n", + " \"Abstract\": \"Compute Spatial Correlation\",\n", + " \"URI\": \"http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"mean_xy\": {\n", + " \"Name\": \"Mean\",\n", + " \"Abstract\": \"Area Mean (area weighted)\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"std_xy\": {\n", + " \"Name\": \"Spatial Standard Deviation\",\n", + " \"Abstract\": \"Compute Spatial Standard Deviation\",\n", + " \"URI\": \"http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"std_xyt\": {\n", + " \"Name\": \"Spatial-temporal Standard Deviation\",\n", + " \"Abstract\": \"Compute Space-Time Standard Deviation\",\n", + " \"URI\": \"http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\"\n", + " },\n", + " \"seasonal_mean\": {\n", + " \"Name\": \"Seasonal Mean\",\n", + " \"Abstract\": \"Compute Seasonal Mean\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\",\n", + " \"Comments\": \"Assumes input are 12 months climatology\"\n", + " },\n", + " \"annual_mean\": {\n", + " \"Name\": \"Annual Mean\",\n", + " \"Abstract\": \"Compute Annual Mean\",\n", + " \"URI\": \"http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\",\n", + " \"Comments\": \"Assumes input are 12 months climatology\"\n", + " },\n", + " \"zonal_mean\": {\n", + " \"Name\": \"Zonal Mean\",\n", + " \"Abstract\": \"Compute Zonal Mean\",\n", + " \"URI\": \"http://uvcdat.llnl.gov/documentation/utilities/utilities-2.html\",\n", + " \"Contact\": \"pcmdi-metrics@llnl.gov\",\n", + " \"Comments\": \"\"\n", + " }\n", + " },\n", + " \"json_structure\": [\n", + " \"model\",\n", + " \"reference\",\n", + " \"rip\",\n", + " \"region\",\n", + " \"statistic\",\n", + " \"season\"\n", + " ],\n", + " \"provenance\": {\n", + " \"platform\": {\n", + " \"OS\": \"Darwin\",\n", + " \"Version\": \"17.7.0\",\n", + " \"Name\": \"loki\"\n", + " },\n", + " \"userId\": \"doutriaux1\",\n", + " \"osAccess\": false,\n", + " \"commandLine\": \"/Users/doutriaux1/miniconda3/envs/nightly_py3.6/bin/mean_climate_driver.py -p basic_param.py\",\n", + " \"date\": \"2019-04-26 08:06:11\",\n", + " \"conda\": {},\n", + " \"packages\": {},\n", + " \"openGL\": {\n", + " \"GLX\": {\n", + " \"server\": {},\n", + " \"client\": {}\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "import os\n", + "with open(os.path.join(demo_output_directory,\"basicTest/rlut_2.5x2.5_regrid2_linear_metrics.json\")) as f:\n", + " print(\"JSON OUTPUT:\\n{}\".format(f.read()))" + ] } ], "metadata": { diff --git a/doc/jupyter/Demo/Demo_2_monsoon_wang.ipynb b/doc/jupyter/Demo/Demo_2_monsoon_wang.ipynb new file mode 100644 index 000000000..cff601c12 --- /dev/null +++ b/doc/jupyter/Demo/Demo_2_monsoon_wang.ipynb @@ -0,0 +1,262 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Monsoon Wang\n", + "\n", + "This notebook aims at inroducing new users on how to use the PCDMI monsoon Wang driver.\n", + "\n", + "It is expected that you have downloaded the sample data as demonstrated in [the download notebook](Demo_0_download_data.ipynb)\n", + "\n", + "Please edit the path in the following cell to reflect the location on your system where you downloaded the data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# This is where you downloaded the sample_data\n", + "demo_data_directory = \"demo_data\"\n", + "# this line is where your output will be stored\n", + "demo_output_directory = \"demo_output\"" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Preparing parameter file: basic_param.py\n", + "Preparing parameter file: basic_monsoon_wang_param.py\n" + ] + } + ], + "source": [ + "# this prepares the various parameter files used in this demo notebooks to reflect where you downloaded the data\n", + "import glob\n", + "\n", + "# Dictionary for template_files substitutions \n", + "sub_dict = {\n", + " \"INPUT_DIR\": demo_data_directory,\n", + " \"OUTPUT_DIR\": demo_output_directory\n", + "}\n", + "for name in glob.glob(\"*.in\"):\n", + " with open(name) as template_file:\n", + " print(\"Preparing parameter file: {}\".format(name[:-3]))\n", + " template = template_file.read()\n", + " for key in sub_dict:\n", + " template = template.replace(\"${}$\".format(key), sub_dict[key])\n", + " with open(name[:-3], \"w\") as param_file:\n", + " param_file.write(template)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The PCMDI Median Driver is driven via parameter files reflecting your study and environment\n", + "in his bare minimum" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "import os\n", + "\n", + "#\n", + "# OPTIONS ARE SET BY USER IN THIS FILE AS INDICATED BELOW BY:\n", + "#\n", + "#\n", + "\n", + "# LIST OF MODEL VERSIONS TO BE TESTED\n", + "modnames = ['CNRM-CERFACS.CNRM-CM5-2',' NSF-DOE-NCAR.CESM1-WACCM']\n", + "\n", + "pth = os.path.dirname(__file__)\n", + "# ROOT PATH FOR MODELS CLIMATOLOGIES\n", + "#test_data_path = '../../../tests/monsoon/data/pr_1961_1999_MRI-CGCM3_regrid_MODS.nc'\n", + "test_data_path = 'demo_data/example_data/mo/pr/CMIP5.CMIP.historical.%(model).r1i1p1.mon.pr.atmos.glb-2d-gu.v%(version).0000000.0.nc'\n", + "# ROOT PATH FOR OBSERVATIONS\n", + "# Note that atm/mo/%(variable)/ac will be added to this\n", + "#reference_data_path = '../../../tests/monsoon/obs/pr_gpcp_79_07_mseas.nc'\n", + "reference_data_path = 'demo_data/PCMDIobs2.0/atmos/mon/pr/GPCP-2-3/gn/v20190301/pr_mon_GPCP-2-3_BE_gn_197901-201803.nc'\n", + "\n", + "# DIRECTORY WHERE TO PUT RESULTS\n", + "results_dir = 'demo_output/monsoon_wang'\n", + "\n", + "# Threshold\n", + "threshold = 2.5\n" + ] + } + ], + "source": [ + "with open(\"basic_monsoon_wang_param.py\") as f:\n", + " print(f.read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now to run this simply call the mean climate driver\n", + "```\n", + "mpindex_compute.py -p basic_monsoon_wang_param.py\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "CompletedProcess(args=['mpindex_compute.py', '-p', 'basic_monsoon_wang_param.py'], returncode=0)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from subprocess import run, PIPE\n", + "run(\"mpindex_compute.py -p basic_monsoon_wang_param.py\".split())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "JSON OUTPUT:\n", + "{\n", + " \"DISCLAIMER\": \"USER-NOTICE: The results in this file were produced with the PMP v1.1 (https://github.com/PCMDI/pcmdi_metrics). They are for research purposes only. They are subject to ongoing quality control and change as the PMP software advances, interpolation methods are modified, observational data sets are updated, problems with model data are corrected, etc. Use of these results for research (presentation, publications, etc.) should reference: Gleckler, P. J., C. Doutriaux, P. J. Durack, K. E. Taylor, Y. Zhang, and D. N. Williams, E. Mason, and J. Servonnat (2016), A more powerful reality test for climate models, Eos, 97, doi:10.1029/2016EO051663. If any problems are uncovered in using these results please contact the PMP development team at pcmdi-metrics@llnl.gov\\n\",\n", + " \"REFERENCE\": \"The statistics in this file are based on Wang, B., Kim, HJ., Kikuchi, K. et al. Clim Dyn (2011) 37: 941. doi:10.1007/s00382-010-0877-0\",\n", + " \"RESULTS\": {\n", + " \"xa\": {\n", + " \"AllMW\": {\n", + " \"cor\": \"0.768\",\n", + " \"rmsn\": \"0.703\",\n", + " \"threat_score\": \"0.494\"\n", + " },\n", + " \"AllM\": {\n", + " \"cor\": \"0.773\",\n", + " \"rmsn\": \"0.697\",\n", + " \"threat_score\": \"0.494\"\n", + " },\n", + " \"NAMM\": {\n", + " \"cor\": \"0.778\",\n", + " \"rmsn\": \"0.742\",\n", + " \"threat_score\": \"0.602\"\n", + " },\n", + " \"SAMM\": {\n", + " \"cor\": \"0.850\",\n", + " \"rmsn\": \"0.582\",\n", + " \"threat_score\": \"0.489\"\n", + " },\n", + " \"NAFM\": {\n", + " \"cor\": \"0.732\",\n", + " \"rmsn\": \"0.763\",\n", + " \"threat_score\": \"0.454\"\n", + " },\n", + " \"SAFM\": {\n", + " \"cor\": \"0.857\",\n", + " \"rmsn\": \"0.574\",\n", + " \"threat_score\": \"0.614\"\n", + " },\n", + " \"ASM\": {\n", + " \"cor\": \"0.711\",\n", + " \"rmsn\": \"0.776\",\n", + " \"threat_score\": \"0.450\"\n", + " },\n", + " \"AUSM\": {\n", + " \"cor\": \"0.895\",\n", + " \"rmsn\": \"0.539\",\n", + " \"threat_score\": \"0.607\"\n", + " }\n", + " }\n", + " },\n", + " \"json_version\": 3.0,\n", + " \"json_structure\": [\n", + " \"model\",\n", + " \"domain\",\n", + " \"statistic\"\n", + " ],\n", + " \"provenance\": {\n", + " \"platform\": {\n", + " \"OS\": \"Darwin\",\n", + " \"Version\": \"17.7.0\",\n", + " \"Name\": \"loki\"\n", + " },\n", + " \"userId\": \"doutriaux1\",\n", + " \"osAccess\": false,\n", + " \"commandLine\": \"/Users/doutriaux1/miniconda3/envs/nightly_py3.6/bin/mpindex_compute.py -p basic_monsoon_wang_param.py\",\n", + " \"date\": \"2019-04-26 10:08:15\",\n", + " \"conda\": {},\n", + " \"packages\": {},\n", + " \"openGL\": {\n", + " \"GLX\": {\n", + " \"server\": {},\n", + " \"client\": {}\n", + " }\n", + " }\n", + " }\n", + "}\n" + ] + } + ], + "source": [ + "import os\n", + "with open(os.path.join(demo_output_directory,\"monsoon_wang/monsoon_wang.json\")) as f:\n", + " print(\"JSON OUTPUT:\\n{}\".format(f.read()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/jupyter/Demo/basic_monsoon_wang_param.py.in b/doc/jupyter/Demo/basic_monsoon_wang_param.py.in new file mode 100644 index 000000000..ab1309c1a --- /dev/null +++ b/doc/jupyter/Demo/basic_monsoon_wang_param.py.in @@ -0,0 +1,27 @@ +import os + +# +# OPTIONS ARE SET BY USER IN THIS FILE AS INDICATED BELOW BY: +# +# + +# LIST OF MODEL VERSIONS TO BE TESTED +modnames = ['CNRM-CERFACS.CNRM-CM5-2',' NSF-DOE-NCAR.CESM1-WACCM'] + +pth = os.path.dirname(__file__) +# ROOT PATH FOR MODELS CLIMATOLOGIES +#test_data_path = '../../../tests/monsoon/data/pr_1961_1999_MRI-CGCM3_regrid_MODS.nc' +test_data_path = '$INPUT_DIR$/example_data/atm/mo/pr/CMIP5.CMIP.historical.%(model).r1i1p1.mon.pr.atmos.glb-2d-gu.v%(version).0000000.0.nc' +# ROOT PATH FOR OBSERVATIONS +# Note that atm/mo/%(variable)/ac will be added to this +#reference_data_path = '../../../tests/monsoon/obs/pr_gpcp_79_07_mseas.nc' +reference_data_path = '$INPUT_DIR$/PCMDIobs2.0/atmos/mon/pr/GPCP-2-3/gn/v20190301/pr_mon_GPCP-2-3_BE_gn_197901-201803.nc' + +# DIRECTORY WHERE TO PUT RESULTS +results_dir = '$OUTPUT_DIR$/monsoon_wang' + +# Version for each model +version = ['20130401', '20130314'] + +# Threshold +threshold = 2.5 \ No newline at end of file diff --git a/doc/jupyter/Demo/basic_param.py b/doc/jupyter/Demo/basic_param.py new file mode 100644 index 000000000..5694f5278 --- /dev/null +++ b/doc/jupyter/Demo/basic_param.py @@ -0,0 +1,55 @@ +import os + +# +# OPTIONS ARE SET BY USER IN THIS FILE AS INDICATED BELOW BY: +# +# + +# RUN IDENTIFICATION +# DEFINES A SUBDIRECTORY TO METRICS OUTPUT RESULTS SO MULTIPLE CASES CAN +# BE COMPARED +case_id = 'basicTest' + +# LIST OF MODEL VERSIONS TO BE TESTED - WHICH ARE EXPECTED TO BE PART OF +# CLIMATOLOGY FILENAME +test_data_set = ['ACCESS1-0', 'CSIRO-Mk3-6-0'] + + +# VARIABLES TO USE +vars = ['rlut'] + + +# Observations to use at the moment "default" or "alternate" +reference_data_set = ['all'] +#ext = '.nc' + +# INTERPOLATION OPTIONS +target_grid = '2.5x2.5' # OPTIONS: '2.5x2.5' or an actual cdms2 grid object +regrid_tool = 'regrid2' # 'regrid2' # OPTIONS: 'regrid2','esmf' +# OPTIONS: 'linear','conservative', only if tool is esmf +regrid_method = 'linear' +regrid_tool_ocn = 'esmf' # OPTIONS: "regrid2","esmf" +# OPTIONS: 'linear','conservative', only if tool is esmf +regrid_method_ocn = 'linear' + +# Templates for climatology files +# %(param) will subsitute param with values in this file +filename_template = "CMIP5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20190225.nc" + +# filename template for landsea masks ('sftlf') +sftlf_filename_template = "sftlf_%(model_version).nc" +generate_sftlf = True # if land surface type mask cannot be found, generate one + + +pth = os.path.dirname(__file__) +# ROOT PATH FOR MODELS CLIMATOLOGIES +test_data_path = 'demo_data/example_data/atm/mo/rlut/ac/' +# ROOT PATH FOR OBSERVATIONS +# Note that atm/mo/%(variable)/ac will be added to this +reference_data_path = 'demo_data/pmpobs_v1.0' + +# DIRECTORY WHERE TO PUT RESULTS +metrics_output_path = os.path.join( + 'demo_output', + "%(case_id)") + diff --git a/doc/jupyter/Demo/data_files.txt b/doc/jupyter/Demo/data_files.txt new file mode 100644 index 000000000..e5ed7243a --- /dev/null +++ b/doc/jupyter/Demo/data_files.txt @@ -0,0 +1,7 @@ +https://pcmdiweb.llnl.gov/pss/pmpdata/ +0af0ddd3e998579c0e8773b24981331a PCMDIobs2.0/atmos/mon/pr/GPCP-2-3/gn/v20190301//pr_mon_GPCP-2-3_BE_gn_197901-201803.nc +146eec5e8a734fedbbdd0909921530f2 pmpobs_v1.0/atm/mo/rlut/CERES/ac/rlut_CERES_000001-000012_ac.nc +bad136e97d7f13dc5af4ac019c8ca9c2 example_data/atm/mo/rlut/ac/CMIP5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc +ec61d7bf2f8480f8e7a18af62d61deff example_data/atm/mo/rlut/ac/CMIP5.historical.CSIRO-Mk3-6-0.r1i1p1.mon.rlut.198101-200512.AC.v20190225.nc +9f5938a7750156ef76905f8872fd0aee example_data/atm/mo/pr/CMIP5.CMIP.historical.CNRM-CERFACS.CNRM-CM5-2.r1i1p1.mon.pr.atmos.glb-2d-gu.v20130401.0000000.0.nc +080a39fb6861cb320d29eb5a6dbc9859 example_data/atm/mo/pr/CMIP5.CMIP.historical.NSF-DOE-NCAR.CESM1-WACCM.r1i1p1.mon.pr.atmos.glb-2d-gu.v20130314.0000000.0.nc diff --git a/doc/jupyter/Jsons/JsonClass.html b/doc/jupyter/Jsons/JsonClass.html new file mode 100644 index 000000000..0933424cb --- /dev/null +++ b/doc/jupyter/Jsons/JsonClass.html @@ -0,0 +1,13965 @@ + + + + +JsonClass + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+

PMP Json Formatted I/O

Reading in PMP's json files

This section will sohw how to read in json files generated by PMP and select pieces of it.

+

We are assuming you're running this notebook from its directory in the pcmdi_metrics repo

+ +
+
+
+
+
+
In [1]:
+
+
+
# Setup the notebook
+from __future__ import print_function
+import pcmdi_metrics
+json1 = "../../../tests/pcmdi_install_test_results/metrics_results/installationTest/tas_2.5x2.5_regrid2_linear_metrics.json"
+json2 = "../../../tests/pcmdi_install_test_results/metrics_results/installationTest/tos_2.5x2.5_esmf_linear_metrics_2.json"
+
+ +
+
+
+ +
+
+
+
+

Reader object

Let's create our Json reader object by pointing it to the desired files

+ +
+
+
+
+
+
In [2]:
+
+
+
J1 = pcmdi_metrics.io.base.JSONs([json1, json2])
+
+ +
+
+
+ +
+
+
+
+

Querying the reader object

Let's query the object, first what are the axes available? +i.e what is the overall json structure of the files read in

+ +
+
+
+
+
+
In [3]:
+
+
+
J1.getAxisIds()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[3]:
+ + + + +
+
['variable', 'model', 'reference', 'rip', 'region', 'statistic', 'season']
+
+ +
+ +
+
+ +
+
+
+
+

Now we get a little more info by getting the actual cdms2 axes that would be generated by reading everything in.

+

Note now that the axes length include the total possible number of values, for example in this example each file contains ONE variable , but the resulting reading would have TWO variables

+ +
+
+
+
+
+
In [4]:
+
+
+
J1.getAxisList()
+
+ +
+
+
+ +
+
+ + +
+ +
Out[4]:
+ + + + +
+
[   id: variable
+    Length: 2
+    First:  tas
+    Last:   tos
+    Python id:  0x10631b358,    id: model
+    Length: 2
+    First:  GFDL-ESM2G
+    Last:   GFDL-ESM2Gb
+    Python id:  0x121760160,    id: reference
+    Length: 2
+    First:  SimulationDescription
+    Last:   defaultReference
+    Python id:  0x121760198,    id: rip
+    Length: 2
+    First:  r1i1p1
+    Last:   r2i1p1
+    Python id:  0x1217601d0,    id: region
+    Length: 6
+    First:  NHEX
+    Last:   terre
+    Python id:  0x121760128,    id: statistic
+    Length: 16
+    First:  bias_xy
+    Last:   std_xyt
+    Python id:  0x121760390,    id: season
+    Length: 5
+    First:  ann
+    Last:   son
+    Python id:  0x121760438]
+
+ +
+ +
+
+ +
+
+
+
+

We can also retrieve only a specific axis

+ +
+
+
+
+
+
In [5]:
+
+
+
J1.getAxis("statistic")
+
+ +
+
+
+ +
+
+ + +
+ +
Out[5]:
+ + + + +
+
   id: statistic
+   Length: 16
+   First:  bias_xy
+   Last:   std_xyt
+   Python id:  0x121760470
+
+ +
+ +
+
+ +
+
+
+
+

Let's print all the values in the axis

+ +
+
+
+
+
+
In [6]:
+
+
+
J1.getAxis("statistic")[:]
+
+ +
+
+
+ +
+
+ + +
+ +
Out[6]:
+ + + + +
+
array(['bias_xy', 'cor_xy', 'mae_xy', 'mean-obs_xy', 'mean_xy',
+       'rms_devzm', 'rms_xy', 'rms_xyt', 'rms_y', 'rmsc_xy', 'std-obs_xy',
+       'std-obs_xy_devzm', 'std-obs_xyt', 'std_xy', 'std_xy_devzm',
+       'std_xyt'], dtype='<U16')
+
+ +
+ +
+
+ +
+
+
+
+

Reading in data

All of it

Now let's read everything in

+ +
+
+
+
+
+
In [7]:
+
+
+
data = J1()
+data.shape
+
+ +
+
+
+ +
+
+ + +
+ +
Out[7]:
+ + + + +
+
(2, 2, 2, 2, 6, 16, 5)
+
+ +
+ +
+
+ +
+
+
+
+

Getting only some elements

For one dimension

But we might not be interested in everything, let's subset the statistics dimension +Note that the output array now went from 16 in length for the dimenson, down to 2

+ +
+
+
+
+
+
In [8]:
+
+
+
data = J1(statistic=['rms_xy','std_xy'])
+print(data.shape)
+data.getAxis(-2)[:]
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(2, 2, 2, 2, 6, 2, 5)
+
+
+
+ +
+ +
Out[8]:
+ + + + +
+
array(['rms_xy', 'std_xy'], dtype='<U6')
+
+ +
+ +
+
+ +
+
+
+
+

For multiple dimensions

Of course we can subset multiple axes at once. Notice that now region is smaller as well.

+ +
+
+
+
+
+
In [9]:
+
+
+
data = J1(statistic=['rms_xy','std_xy'], region=['NHEX', 'global', 'terre'])
+print(data.shape)
+data.getAxis(-3)[:]
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(2, 2, 2, 2, 3, 2, 5)
+
+
+
+ +
+ +
Out[9]:
+ + + + +
+
array(['NHEX', 'global', 'terre'], dtype='<U6')
+
+ +
+ +
+
+ +
+
+
+
+

Reordering the elements

One can also re-order the axes as it is read in. Notice 'terre' is now first.

+ +
+
+
+
+
+
In [10]:
+
+
+
data = J1(statistic=['rms_xy','std_xy'], region=['terre', 'NHEX', 'global'])
+print(data.shape)
+data.getAxis(-3)[:]
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(2, 2, 2, 2, 3, 2, 5)
+
+
+
+ +
+ +
Out[10]:
+ + + + +
+
array(['terre', 'NHEX', 'global'], dtype='<U6')
+
+ +
+ +
+
+ +
+
+
+
+

Sometimes it can be useful to join two or many dimensions together. +For example let's merge model and rip together.

+ +
+
+
+
+
+
In [11]:
+
+
+
#### Merging dimensions together
+
+##### Two dimensions merged in one
+
+data = J1(merge=['model','rip'])
+print(data.shape)
+data.getAxis(1)[:]
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(2, 3, 1, 6, 16, 5)
+
+
+
+ +
+ +
Out[11]:
+ + + + +
+
array(['GFDL-ESM2G_r1i1p1', 'GFDL-ESM2Gb_r1i1p1', 'GFDL-ESM2Gb_r2i1p1'],
+      dtype='<U18')
+
+ +
+ +
+
+ +
+
+
+
+

Notice that the resulting array now has 6 dimensions rather than 7.

+

The newly constructed array takes all possible values of model and match them with all possible of rip.

+

Also notice that while it will create all possible combinations of model/rip, GFDL-ESM2G_r2i1p1 was excluded has the combination contained no valid data.

+

Order matters

Let's switch the order we combine these dimensions

+ +
+
+
+
+
+
In [12]:
+
+
+
data = J1(merge=['rip','model'])
+print(data.shape)
+data.getAxis(1)[:]
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(2, 3, 1, 6, 16, 5)
+
+
+
+ +
+ +
Out[12]:
+ + + + +
+
array(['r1i1p1_GFDL-ESM2G', 'r1i1p1_GFDL-ESM2Gb', 'r2i1p1_GFDL-ESM2Gb'],
+      dtype='<U18')
+
+ +
+ +
+
+ +
+
+
+
+

Notice that the axis values now start with the values of rip combined with with model values. Which is the opposite of the previous example.

+

Combining more than 2 dimensions together

You can also merge more than 2 dimensions together, agin the axis values will be all the possible (not totally empy) matrix combinations

+ +
+
+
+
+
+
In [13]:
+
+
+
data = J1(merge=['statistic', 'region', 'season'])
+print(data.shape)
+data.getAxis(-1)[:]
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(2, 2, 1, 2, 312)
+
+
+
+ +
+ +
Out[13]:
+ + + + +
+
array(['bias_xy_NHEX_ann', 'bias_xy_NHEX_djf', 'bias_xy_NHEX_jja',
+       'bias_xy_NHEX_mam', 'bias_xy_NHEX_son', 'bias_xy_SHEX_ann',
+       'bias_xy_SHEX_djf', 'bias_xy_SHEX_jja', 'bias_xy_SHEX_mam',
+       'bias_xy_SHEX_son', 'bias_xy_TROPICS_ann', 'bias_xy_TROPICS_djf',
+       'bias_xy_TROPICS_jja', 'bias_xy_TROPICS_mam',
+       'bias_xy_TROPICS_son', 'bias_xy_global_ann', 'bias_xy_global_djf',
+       'bias_xy_global_jja', 'bias_xy_global_mam', 'bias_xy_global_son',
+       'bias_xy_ocean_ann', 'bias_xy_ocean_djf', 'bias_xy_ocean_jja',
+       'bias_xy_ocean_mam', 'bias_xy_ocean_son', 'bias_xy_terre_ann',
+       'bias_xy_terre_djf', 'bias_xy_terre_jja', 'bias_xy_terre_mam',
+       'bias_xy_terre_son', 'cor_xy_NHEX_ann', 'cor_xy_NHEX_djf',
+       'cor_xy_NHEX_jja', 'cor_xy_NHEX_mam', 'cor_xy_NHEX_son',
+       'cor_xy_SHEX_ann', 'cor_xy_SHEX_djf', 'cor_xy_SHEX_jja',
+       'cor_xy_SHEX_mam', 'cor_xy_SHEX_son', 'cor_xy_TROPICS_ann',
+       'cor_xy_TROPICS_djf', 'cor_xy_TROPICS_jja', 'cor_xy_TROPICS_mam',
+       'cor_xy_TROPICS_son', 'cor_xy_global_ann', 'cor_xy_global_djf',
+       'cor_xy_global_jja', 'cor_xy_global_mam', 'cor_xy_global_son',
+       'cor_xy_ocean_ann', 'cor_xy_ocean_djf', 'cor_xy_ocean_jja',
+       'cor_xy_ocean_mam', 'cor_xy_ocean_son', 'cor_xy_terre_ann',
+       'cor_xy_terre_djf', 'cor_xy_terre_jja', 'cor_xy_terre_mam',
+       'cor_xy_terre_son', 'mae_xy_NHEX_ann', 'mae_xy_NHEX_djf',
+       'mae_xy_NHEX_jja', 'mae_xy_NHEX_mam', 'mae_xy_NHEX_son',
+       'mae_xy_SHEX_ann', 'mae_xy_SHEX_djf', 'mae_xy_SHEX_jja',
+       'mae_xy_SHEX_mam', 'mae_xy_SHEX_son', 'mae_xy_TROPICS_ann',
+       'mae_xy_TROPICS_djf', 'mae_xy_TROPICS_jja', 'mae_xy_TROPICS_mam',
+       'mae_xy_TROPICS_son', 'mae_xy_global_ann', 'mae_xy_global_djf',
+       'mae_xy_global_jja', 'mae_xy_global_mam', 'mae_xy_global_son',
+       'mae_xy_ocean_ann', 'mae_xy_ocean_djf', 'mae_xy_ocean_jja',
+       'mae_xy_ocean_mam', 'mae_xy_ocean_son', 'mae_xy_terre_ann',
+       'mae_xy_terre_djf', 'mae_xy_terre_jja', 'mae_xy_terre_mam',
+       'mae_xy_terre_son', 'mean-obs_xy_NHEX_ann', 'mean-obs_xy_NHEX_djf',
+       'mean-obs_xy_NHEX_jja', 'mean-obs_xy_NHEX_mam',
+       'mean-obs_xy_NHEX_son', 'mean-obs_xy_SHEX_ann',
+       'mean-obs_xy_SHEX_djf', 'mean-obs_xy_SHEX_jja',
+       'mean-obs_xy_SHEX_mam', 'mean-obs_xy_SHEX_son',
+       'mean-obs_xy_TROPICS_ann', 'mean-obs_xy_TROPICS_djf',
+       'mean-obs_xy_TROPICS_jja', 'mean-obs_xy_TROPICS_mam',
+       'mean-obs_xy_TROPICS_son', 'mean-obs_xy_global_ann',
+       'mean-obs_xy_global_djf', 'mean-obs_xy_global_jja',
+       'mean-obs_xy_global_mam', 'mean-obs_xy_global_son',
+       'mean-obs_xy_ocean_ann', 'mean-obs_xy_ocean_djf',
+       'mean-obs_xy_ocean_jja', 'mean-obs_xy_ocean_mam',
+       'mean-obs_xy_ocean_son', 'mean-obs_xy_terre_ann',
+       'mean-obs_xy_terre_djf', 'mean-obs_xy_terre_jja',
+       'mean-obs_xy_terre_mam', 'mean-obs_xy_terre_son',
+       'mean_xy_NHEX_ann', 'mean_xy_NHEX_djf', 'mean_xy_NHEX_jja',
+       'mean_xy_NHEX_mam', 'mean_xy_NHEX_son', 'mean_xy_SHEX_ann',
+       'mean_xy_SHEX_djf', 'mean_xy_SHEX_jja', 'mean_xy_SHEX_mam',
+       'mean_xy_SHEX_son', 'mean_xy_TROPICS_ann', 'mean_xy_TROPICS_djf',
+       'mean_xy_TROPICS_jja', 'mean_xy_TROPICS_mam',
+       'mean_xy_TROPICS_son', 'mean_xy_global_ann', 'mean_xy_global_djf',
+       'mean_xy_global_jja', 'mean_xy_global_mam', 'mean_xy_global_son',
+       'mean_xy_ocean_ann', 'mean_xy_ocean_djf', 'mean_xy_ocean_jja',
+       'mean_xy_ocean_mam', 'mean_xy_ocean_son', 'mean_xy_terre_ann',
+       'mean_xy_terre_djf', 'mean_xy_terre_jja', 'mean_xy_terre_mam',
+       'mean_xy_terre_son', 'rms_devzm_NHEX_ann', 'rms_devzm_SHEX_ann',
+       'rms_devzm_TROPICS_ann', 'rms_devzm_global_ann',
+       'rms_devzm_ocean_ann', 'rms_devzm_terre_ann', 'rms_xy_NHEX_ann',
+       'rms_xy_NHEX_djf', 'rms_xy_NHEX_jja', 'rms_xy_NHEX_mam',
+       'rms_xy_NHEX_son', 'rms_xy_SHEX_ann', 'rms_xy_SHEX_djf',
+       'rms_xy_SHEX_jja', 'rms_xy_SHEX_mam', 'rms_xy_SHEX_son',
+       'rms_xy_TROPICS_ann', 'rms_xy_TROPICS_djf', 'rms_xy_TROPICS_jja',
+       'rms_xy_TROPICS_mam', 'rms_xy_TROPICS_son', 'rms_xy_global_ann',
+       'rms_xy_global_djf', 'rms_xy_global_jja', 'rms_xy_global_mam',
+       'rms_xy_global_son', 'rms_xy_ocean_ann', 'rms_xy_ocean_djf',
+       'rms_xy_ocean_jja', 'rms_xy_ocean_mam', 'rms_xy_ocean_son',
+       'rms_xy_terre_ann', 'rms_xy_terre_djf', 'rms_xy_terre_jja',
+       'rms_xy_terre_mam', 'rms_xy_terre_son', 'rms_xyt_NHEX_ann',
+       'rms_xyt_SHEX_ann', 'rms_xyt_TROPICS_ann', 'rms_xyt_global_ann',
+       'rms_xyt_ocean_ann', 'rms_xyt_terre_ann', 'rms_y_NHEX_ann',
+       'rms_y_SHEX_ann', 'rms_y_TROPICS_ann', 'rms_y_global_ann',
+       'rms_y_ocean_ann', 'rms_y_terre_ann', 'rmsc_xy_NHEX_ann',
+       'rmsc_xy_NHEX_djf', 'rmsc_xy_NHEX_jja', 'rmsc_xy_NHEX_mam',
+       'rmsc_xy_NHEX_son', 'rmsc_xy_SHEX_ann', 'rmsc_xy_SHEX_djf',
+       'rmsc_xy_SHEX_jja', 'rmsc_xy_SHEX_mam', 'rmsc_xy_SHEX_son',
+       'rmsc_xy_TROPICS_ann', 'rmsc_xy_TROPICS_djf',
+       'rmsc_xy_TROPICS_jja', 'rmsc_xy_TROPICS_mam',
+       'rmsc_xy_TROPICS_son', 'rmsc_xy_global_ann', 'rmsc_xy_global_djf',
+       'rmsc_xy_global_jja', 'rmsc_xy_global_mam', 'rmsc_xy_global_son',
+       'rmsc_xy_ocean_ann', 'rmsc_xy_ocean_djf', 'rmsc_xy_ocean_jja',
+       'rmsc_xy_ocean_mam', 'rmsc_xy_ocean_son', 'rmsc_xy_terre_ann',
+       'rmsc_xy_terre_djf', 'rmsc_xy_terre_jja', 'rmsc_xy_terre_mam',
+       'rmsc_xy_terre_son', 'std-obs_xy_NHEX_ann', 'std-obs_xy_NHEX_djf',
+       'std-obs_xy_NHEX_jja', 'std-obs_xy_NHEX_mam',
+       'std-obs_xy_NHEX_son', 'std-obs_xy_SHEX_ann',
+       'std-obs_xy_SHEX_djf', 'std-obs_xy_SHEX_jja',
+       'std-obs_xy_SHEX_mam', 'std-obs_xy_SHEX_son',
+       'std-obs_xy_TROPICS_ann', 'std-obs_xy_TROPICS_djf',
+       'std-obs_xy_TROPICS_jja', 'std-obs_xy_TROPICS_mam',
+       'std-obs_xy_TROPICS_son', 'std-obs_xy_global_ann',
+       'std-obs_xy_global_djf', 'std-obs_xy_global_jja',
+       'std-obs_xy_global_mam', 'std-obs_xy_global_son',
+       'std-obs_xy_ocean_ann', 'std-obs_xy_ocean_djf',
+       'std-obs_xy_ocean_jja', 'std-obs_xy_ocean_mam',
+       'std-obs_xy_ocean_son', 'std-obs_xy_terre_ann',
+       'std-obs_xy_terre_djf', 'std-obs_xy_terre_jja',
+       'std-obs_xy_terre_mam', 'std-obs_xy_terre_son',
+       'std-obs_xy_devzm_NHEX_ann', 'std-obs_xy_devzm_SHEX_ann',
+       'std-obs_xy_devzm_TROPICS_ann', 'std-obs_xy_devzm_global_ann',
+       'std-obs_xy_devzm_ocean_ann', 'std-obs_xy_devzm_terre_ann',
+       'std-obs_xyt_NHEX_ann', 'std-obs_xyt_SHEX_ann',
+       'std-obs_xyt_TROPICS_ann', 'std-obs_xyt_global_ann',
+       'std-obs_xyt_ocean_ann', 'std-obs_xyt_terre_ann',
+       'std_xy_NHEX_ann', 'std_xy_NHEX_djf', 'std_xy_NHEX_jja',
+       'std_xy_NHEX_mam', 'std_xy_NHEX_son', 'std_xy_SHEX_ann',
+       'std_xy_SHEX_djf', 'std_xy_SHEX_jja', 'std_xy_SHEX_mam',
+       'std_xy_SHEX_son', 'std_xy_TROPICS_ann', 'std_xy_TROPICS_djf',
+       'std_xy_TROPICS_jja', 'std_xy_TROPICS_mam', 'std_xy_TROPICS_son',
+       'std_xy_global_ann', 'std_xy_global_djf', 'std_xy_global_jja',
+       'std_xy_global_mam', 'std_xy_global_son', 'std_xy_ocean_ann',
+       'std_xy_ocean_djf', 'std_xy_ocean_jja', 'std_xy_ocean_mam',
+       'std_xy_ocean_son', 'std_xy_terre_ann', 'std_xy_terre_djf',
+       'std_xy_terre_jja', 'std_xy_terre_mam', 'std_xy_terre_son',
+       'std_xy_devzm_NHEX_ann', 'std_xy_devzm_SHEX_ann',
+       'std_xy_devzm_TROPICS_ann', 'std_xy_devzm_global_ann',
+       'std_xy_devzm_ocean_ann', 'std_xy_devzm_terre_ann',
+       'std_xyt_NHEX_ann', 'std_xyt_SHEX_ann', 'std_xyt_TROPICS_ann',
+       'std_xyt_global_ann', 'std_xyt_ocean_ann', 'std_xyt_terre_ann'],
+      dtype='<U28')
+
+ +
+ +
+
+ +
+
+
+
+

Merging and subsetting can be combined

You can also shuffle the order and number of values for each dimension

+ +
+
+
+
+
+
In [14]:
+
+
+
data = J1(merge=['statistic', 'region', 'season'],
+          season=['mam','djf'], statistic=['rms_xy', 'cor_xy'], region=['global','TROPICS'])
+print(data.shape)
+data.getAxis(-1)[:]
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(2, 2, 1, 2, 8)
+
+
+
+ +
+ +
Out[14]:
+ + + + +
+
array(['rms_xy_global_mam', 'rms_xy_global_djf', 'rms_xy_TROPICS_mam',
+       'rms_xy_TROPICS_djf', 'cor_xy_global_mam', 'cor_xy_global_djf',
+       'cor_xy_TROPICS_mam', 'cor_xy_TROPICS_djf'], dtype='<U18')
+
+ +
+ +
+
+ +
+
+
+
+

Multiple combined dimensions can be created (and subsetted) at once

You can also merge multiple dimensions at once:

+ +
+
+
+
+
+
In [15]:
+
+
+
data = J1(merge=[['model','rip'], ['statistic', 'region', 'season']],
+          season=['mam','djf'], statistic=['rms_xy', 'cor_xy'], region=['global','TROPICS'])
+print(data.shape)
+
+ +
+
+
+ +
+
+ + +
+ +
+ + +
+
(2, 3, 1, 8)
+
+
+
+ +
+
+ +
+
+
+ + + + + + diff --git a/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py b/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py index 5947c9bbe..9d2c5752e 100644 --- a/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py +++ b/pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py @@ -8,27 +8,22 @@ from pcmdi_metrics.monsoon_wang import mpd, mpi_skill_scores import pcmdi_metrics import collections -import glob import pkg_resources +import genutil def create_monsoon_wang_parser(): P = PMPParser() - P.use("--modpath") P.use("--modnames") P.use("--results_dir") P.use("--reference_data_path") + P.use("--test_data_path") - P.add_argument("--outpj", "--outpathjsons", - type=str, - dest='outpathjsons', - default='.', - help="Output path for jsons") P.add_argument("--outnj", "--outnamejson", type=str, - dest='jsonname', - default='out.json', + dest='outnamejson', + default='monsoon_wang.json', help="Output path for jsons") P.add_argument("-e", "--experiment", type=str, @@ -52,74 +47,25 @@ def create_monsoon_wang_parser(): default=2.5 / 86400., type=float, help="Threshold for a hit when computing skill score") + return P def monsoon_wang_runner(args): # args = P.parse_args(sys.argv[1:]) - modpath = args.modpath - outpathjsons = args.outpathjsons + modpath = genutil.StringConstructor(args.test_data_path) + modpath.variable = args.modvar outpathdata = args.results_dir if isinstance(args.modnames, str): mods = eval(args.modnames) else: mods = args.modnames - json_filename = args.jsonname + json_filename = args.outnamejson if json_filename == 'CMIP_MME': json_filename = '/MPI_' + args.mip + '_' + args.experiment - if args.mip == 'CMIP5' and args.experiment == 'historical' and mods is None: - mods = [ - 'ACCESS1-0', - 'ACCESS1-3', - 'bcc-csm1-1', - 'bcc-csm1-1-m', - 'BNU-ESM', - 'CanCM4', - 'CanESM2', - 'CCSM4', - 'CESM1-BGC', - 'CESM1-CAM5', - 'CESM1-FASTCHEM', - 'CESM1-WACCM', - 'CMCC-CESM', - 'CMCC-CM', - 'CMCC-CMS', - 'CNRM-CM5-2', - 'CNRM-CM5', - 'CSIRO-Mk3-6-0', - 'FGOALS-g2', - 'FIO-ESM', - 'GFDL-CM2p1', - 'GFDL-CM3', - 'GFDL-ESM2G', - 'GFDL-ESM2M', - 'GISS-E2-H', - 'GISS-E2-H-CC', - 'GISS-E2-R', - 'GISS-E2-R-CC', - 'HadCM3', - 'HadGEM2-AO', - 'HadGEM2-CC', - 'HadGEM2-ES', - 'inmcm4', - 'IPSL-CM5A-LR', - 'IPSL-CM5A-MR', - 'IPSL-CM5B-LR', - 'MIROC4h', - 'MIROC5', - 'MIROC-ESM', - 'MIROC-ESM-CHEM', - 'MPI-ESM-LR', - 'MPI-ESM-MR', - 'MPI-ESM-P', - 'MRI-CGCM3', - 'MRI-ESM1', - 'NorESM1-M', - 'NorESM1-ME'] - # VAR IS FIXED TO BE PRECIP FOR CALCULATING MONSOON PRECIPITATION INDICES var = args.modvar thr = args.threshold @@ -150,74 +96,30 @@ def monsoon_wang_runner(args): pass # SETUP WHERE TO OUTPUT RESULTS (json) - jout = outpathjsons + jout = outpathdata try: os.makedirs(nout) except BaseException: pass - modpathall = modpath.replace('MODS', '*') - lst = glob.glob(modpathall) - # CONFIRM DATA FOR MODS IS AVAIL AND REMOVE THOSE IT IS NOT - gmods = [] # "Got" these MODS - for mod in mods: - for l in lst: - l1 = modpath.replace('MODS', mod) - if os.path.isfile(l1) is True: - if mod not in gmods: - gmods.append(mod) - - if args.experiment == 'historical' and mods is None: - gmods = [ - 'ACCESS1-0', - 'ACCESS1-3', - 'bcc-csm1-1', - 'bcc-csm1-1-m', - 'BNU-ESM', - 'CanCM4', - 'CanESM2', - 'CCSM4', - 'CESM1-BGC', - 'CESM1-CAM5', - 'CESM1-FASTCHEM', - 'CESM1-WACCM', - 'CMCC-CESM', - 'CMCC-CM', - 'CMCC-CMS', - 'CNRM-CM5-2', - 'CNRM-CM5', - 'CSIRO-Mk3-6-0', - 'FGOALS-g2', - 'FIO-ESM', - 'GFDL-CM2p1', - 'GFDL-CM3', - 'GFDL-ESM2G', - 'GFDL-ESM2M', - 'GISS-E2-H', - 'GISS-E2-H-CC', - 'GISS-E2-R', - 'GISS-E2-R-CC', - 'HadCM3', - 'HadGEM2-AO', - 'HadGEM2-CC', - 'HadGEM2-ES', - 'inmcm4', - 'IPSL-CM5A-LR', - 'IPSL-CM5A-MR', - 'IPSL-CM5B-LR', - 'MIROC4h', - 'MIROC5', - 'MIROC-ESM', - 'MIROC-ESM-CHEM', - 'MPI-ESM-LR', - 'MPI-ESM-MR', - 'MPI-ESM-P', - 'MRI-CGCM3', - 'MRI-ESM1', - 'NorESM1-M', - 'NorESM1-ME'] - + for i, mod in enumerate(mods): + modpath.model = mod + for k in modpath.keys(): + try: + val = getattr(args, k) + except Exception: + continue + if not isinstance(val, (list, tuple)): + setattr(modpath, k, val) + else: + setattr(modpath, k, val[i]) + l1 = modpath() + if os.path.isfile(l1) is True: + gmods.append(mod) + + if len(gmods) == 0: + raise RuntimeError("No model file found!") ######################################### try: @@ -234,8 +136,18 @@ def monsoon_wang_runner(args): doms = ['AllMW', 'AllM', 'NAMM', 'SAMM', 'NAFM', 'SAFM', 'ASM', 'AUSM'] mpi_stats_dic = {} - for mod in gmods: - modelFile = modpath.replace('MODS', mod) + for i, mod in enumerate(gmods): + modpath.model = mod + for k in modpath.keys(): + try: + val = getattr(args, k) + except Exception: + continue + if not isinstance(val, (list, tuple)): + setattr(modpath, k, val) + else: + setattr(modpath, k, val[i]) + modelFile = modpath() mpi_stats_dic[mod] = {} diff --git a/pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py b/pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py index 71b857c25..c8d76a7fd 100644 --- a/pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py +++ b/pcmdi_metrics/monsoon_wang/scripts/mpindex_compute.py @@ -2,5 +2,5 @@ from pcmdi_metrics.monsoon_wang import create_monsoon_wang_parser, monsoon_wang_runner P = create_monsoon_wang_parser() -args = P.get_parameter() +args = P.get_parameter(argparse_vals_only=False) monsoon_wang_runner(args) diff --git a/pcmdi_metrics/version.py b/pcmdi_metrics/version.py index d6ec4dd01..9be5197f8 100644 --- a/pcmdi_metrics/version.py +++ b/pcmdi_metrics/version.py @@ -1,3 +1,3 @@ __version__ = 'v1.2' -__git_tag_describe__ = 'v1.2-50-gef54524' -__git_sha1__ = 'ef54524c9a3845afadc9f1312393d0f68734a4be' +__git_tag_describe__ = 'v1.2-44-g55606c7' +__git_sha1__ = '55606c7d422916a4ae0953b0db38f54e80ae3331' diff --git a/tests/test_monsoon_wang.py b/tests/test_monsoon_wang.py index fd986b638..e3e2ec96d 100644 --- a/tests/test_monsoon_wang.py +++ b/tests/test_monsoon_wang.py @@ -29,21 +29,19 @@ def checkAllClose(self, a, b): def testMonsoonWang(self): P = create_monsoon_wang_parser() - P.add_args_and_values(["--mp", - "tests/monsoon/data/pr_1961_1999_MRI-CGCM3_regrid_MODS.nc", + P.add_args_and_values(["--test_data_path", + "tests/monsoon/data/%(variable)_1961_1999_MRI-CGCM3_regrid_%(model).nc", "--reference_data_path", "tests/monsoon/obs/pr_gpcp_79_07_mseas.nc", "--mns", "['xa',]", "--results_dir", "test_monsoon", - "--outpj", - "test_monsoon", "--threshold=2.5"]) args = P.get_parameter() monsoon_wang_runner(args) - test_file = "test_monsoon/out.json" + test_file = "test_monsoon/monsoon_wang.json" correct_file = "tests/monsoon/mpi.json" self.compareJsons(test_file, correct_file) From 6d29f6b82304e938ba6006208c0c1663997e8f9d Mon Sep 17 00:00:00 2001 From: Charles Doutriaux Date: Fri, 21 Jun 2019 07:39:03 -0700 Subject: [PATCH 84/84] Portraits jupyter (#597) * added demo jupyter notebook * first clickable example * update for Peter * cleraner * all elements are here, we just need to clean it up * uncommented out js stuff * ran the whole thing should appear now * add exception if requesting too many subcells * extras and axes labels example * updated notebook * updated nb * Adds an example to generate a portrait plot with modal support * add reusable func * minor change: title location to be middle of upper margin * clean up merge notebook for further improvement and showing merge later * updated JsonClass * fixed portraits plot notebook AND portrait plots * fix flake8 --- doc/jupyter/JsonClass.ipynb | 764 +++++ doc/jupyter/PortraitPlots.ipynb | 3859 ++++++++++++++++++++++++ doc/jupyter/ReusablePortraitPlot.ipynb | 710 +++++ pcmdi_metrics/graphics/portraits.py | 40 +- pcmdi_metrics/version.py | 4 +- 5 files changed, 5363 insertions(+), 14 deletions(-) create mode 100644 doc/jupyter/JsonClass.ipynb create mode 100644 doc/jupyter/PortraitPlots.ipynb create mode 100644 doc/jupyter/ReusablePortraitPlot.ipynb diff --git a/doc/jupyter/JsonClass.ipynb b/doc/jupyter/JsonClass.ipynb new file mode 100644 index 000000000..699c2cd99 --- /dev/null +++ b/doc/jupyter/JsonClass.ipynb @@ -0,0 +1,764 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "PMP Json Formatted I/O\n", + "======================\n", + "\n", + "# Reading in PMP's json files\n", + "\n", + "This section will sohw how to read in json files generated by PMP and select pieces of it.\n", + "\n", + "We are assuming you're running this notebook from its directory in the [pcmdi_metrics](https://github.com/pcmdi/pcmdi_metrics) repo\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/dask/config.py:168: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.\n", + " data = yaml.load(f.read()) or {}\n", + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/distributed/config.py:20: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.\n", + " defaults = yaml.load(f)\n" + ] + } + ], + "source": [ + "# Setup the notebook\n", + "from __future__ import print_function\n", + "import pcmdi_metrics\n", + "json1 = \"../../tests/pcmdi_install_test_results/metrics_results/installationTest/tas_2.5x2.5_regrid2_linear_metrics.json\"\n", + "json2 = \"../../tests/pcmdi_install_test_results/metrics_results/installationTest/tos_2.5x2.5_esmf_linear_metrics_2.json\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reader object\n", + "\n", + "Let's create our Json reader object by pointing it to the desired files" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "J1 = pcmdi_metrics.io.base.JSONs([json1, json2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Querying the reader object\n", + "\n", + "Let's query the object, first what are the axes available?\n", + "i.e what is the overall json structure of the files read in" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['variable', 'model', 'reference', 'rip', 'region', 'statistic', 'season']" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J1.getAxisIds()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we get a little more info by getting the actual cdms2 axes that would be generated by reading everything in.\n", + "\n", + "Note now that the axes length include the **total** possible number of values, for example in this example each file contains **ONE** variable , but the resulting reading would have **TWO** variables" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ id: variable\n", + " Length: 2\n", + " First: tas\n", + " Last: tos\n", + " Python id: 0x7fe15e1d9ba8, id: model\n", + " Length: 2\n", + " First: GFDL-ESM2G\n", + " Last: GFDL-ESM2Gb\n", + " Python id: 0x7fe15e1d9a58, id: reference\n", + " Length: 2\n", + " First: SimulationDescription\n", + " Last: defaultReference\n", + " Python id: 0x7fe15e1d9940, id: rip\n", + " Length: 2\n", + " First: r1i1p1\n", + " Last: r2i1p1\n", + " Python id: 0x7fe15e1d9e10, id: region\n", + " Length: 6\n", + " First: NHEX\n", + " Last: terre\n", + " Python id: 0x7fe15e1d9908, id: statistic\n", + " Length: 16\n", + " First: bias_xy\n", + " Last: std_xyt\n", + " Python id: 0x7fe15e1d9c18, id: season\n", + " Length: 5\n", + " First: ann\n", + " Last: son\n", + " Python id: 0x7fe15e1d9da0]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J1.getAxisList()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also retrieve only a specific axis" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " id: statistic\n", + " Length: 16\n", + " First: bias_xy\n", + " Last: std_xyt\n", + " Python id: 0x7fe15e1d99b0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J1.getAxis(\"statistic\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's print all the values in the axis" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['bias_xy', 'cor_xy', 'mae_xy', 'mean-obs_xy', 'mean_xy',\n", + " 'rms_devzm', 'rms_xy', 'rms_xyt', 'rms_y', 'rmsc_xy', 'std-obs_xy',\n", + " 'std-obs_xy_devzm', 'std-obs_xyt', 'std_xy', 'std_xy_devzm',\n", + " 'std_xyt'], dtype='" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Table of Content\n", + "\n", + "- [Preparing The notebook](#prep)\n", + "- [Loading Data Using the JSons class](#load)\n", + "- [Plotting With A Portrait Plot](#basic)\n", + "- [Customizing The Portrait Plot](#custom)\n", + "- [Plotting Values In Cells](#values)\n", + "- [Plotting Multiple Sources](#multiple)\n", + "- [Clickable Portrait Plots](#click)\n", + " - [One source](#click_one)\n", + " - [Multiple sources](#click_multi)\n", + " - [Separate Portrait Plots On A PAge](#click_multi_separated)\n", + " - [Mutliple Sources Within A Single Portrait Plot](#click_multi_sources)\n", + " - [Multiple Portrait Plots with Multiple Sources](#click_multi_all)\n", + " - [Linking from axes labels](#click_ticks)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Preparing The notebook" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/dask/config.py:168: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.\n", + " data = yaml.load(f.read()) or {}\n", + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/distributed/config.py:20: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.\n", + " defaults = yaml.load(f)\n" + ] + } + ], + "source": [ + "from __future__ import print_function # Python 2 compatibility\n", + "import os\n", + "import sys\n", + "import pkg_resources\n", + "pmp_egg_path = pkg_resources.resource_filename(pkg_resources.Requirement.parse(\"pcmdi_metrics\"), \"share\")\n", + "vcs_egg_path = pkg_resources.resource_filename(pkg_resources.Requirement.parse(\"vcs\"), \"share\")\n", + "\n", + "# VCS Canvas\n", + "import vcs\n", + "x=vcs.init(bg=True,geometry=(400,400))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Loading Data Using The Json Class\n", + "\n", + "We will be using test data, with path relative to the directory of this Notebook\n", + "\n", + "For more on Json Class see [this Notebook](JsonClass.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "We are looking at 28 Json Files:\n", + "We read in 17 models: ['0071-0100', 'ACCESS1-0', 'ACCESS1-3', 'CCSM4', 'CESM1-BGC', 'CESM1-CAM5', 'CESM1-FASTCHEM', 'CESM1-WACCM', 'CSIRO-Mk3-6-0', 'FGOALS-g2', 'GFDL-CM3', 'GFDL-ESM2G', 'GFDL-ESM2M', 'HadGEM2-AO', 'MIROC4h', 'bcc-csm1-1', 'bcc-csm1-1-m']:\n", + "We read in 14 variables: ['pr', 'prw', 'psl', 'rltcre', 'rlut', 'rstcre', 'ta-200', 'ta-850', 'tas', 'ua-200', 'ua-850', 'va-200', 'va-850', 'zg-500']:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/genutil/statistics.py:1712: VisibleDeprecationWarning: `rank` is deprecated; use the `ndim` attribute or function instead. To find the rank of a matrix see `numpy.linalg.matrix_rank`.\n", + " if numpy.rank(ii) > 0:\n" + ] + } + ], + "source": [ + "import glob\n", + "import json\n", + "import pcmdi_metrics\n", + "import genutil\n", + "\n", + "pth = os.path.abspath(os.path.join(\n", + " os.getcwd(),\n", + " \"..\",\n", + " \"..\",\n", + " \"tests\",\n", + " \"graphics\",\n", + " \"json\"))\n", + "\n", + "json_files = glob.glob(\n", + " os.path.join(\n", + " pth,\n", + " \"v2.0\",\n", + " \"*.json\"))\n", + "\n", + "json_files += glob.glob(\n", + " os.path.join(\n", + " pth,\n", + " \"v1.0\",\n", + " \"*.json\"))\n", + "\n", + "print(\"We are looking at {:d} Json Files:\".format(len(json_files)))\n", + "J = pcmdi_metrics.pcmdi.io.JSONs(json_files)\n", + "\n", + "models = sorted(J.getAxis(\"model\")[:])\n", + "variables = sorted(J.getAxis(\"variable\")[:])\n", + "print(\"We read in {:d} models: {}:\".format(len(models),models))\n", + "print(\"We read in {:d} variables: {}:\".format(len(variables),variables))\n", + "\n", + "# reads in rms_xy for all season, global region\n", + "rms_xy = J(statistic=[\"rms_xy\"],region=\"global\")(squeeze=1)\n", + "median = genutil.statistics.median(rms_xy,axis=1)[0]\n", + "\n", + "#match shapes\n", + "rms_xy, median = genutil.grower(rms_xy,median)\n", + "\n", + "#Loose info on median\n", + "median = median.filled()\n", + "# normalize\n", + "rms_xy = (rms_xy-median) / median" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting A Portrait Plot" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pcmdi_metrics.graphics.portraits\n", + "P = pcmdi_metrics.graphics.portraits.Portrait()\n", + "#P.PLOT_SETTINGS.colorm\n", + "yax = [m for m in models]\n", + "\n", + "# Preprocessing step to \"decorate\" the axes on our target variable\n", + "P.decorate(rms_xy, variables, yax)\n", + "\n", + "# Plot ANNUL\n", + "P.plot(rms_xy[...,0],x=x)\n", + "P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Customizing The Portrait Plot\n", + "\n", + "Most of the setting to customize the portrait plot are contained in \n", + "P.PLOT_SETTINGS" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "SET = P.PLOT_SETTINGS\n", + "# Viewport on the Canvas\n", + "SET.x1 = .25\n", + "SET.x2 = .75\n", + "SET.y1 = .2\n", + "SET.y2 = .8\n", + "\n", + "# Legend\n", + "SET.legend.x1 = .9\n", + "SET.legend.x2 = .99\n", + "SET.legend.y1 = .4\n", + "SET.legend.y2 = .8\n", + "\n", + "# Both X (horizontal) and y (VERTICAL) ticks\n", + "# Text table\n", + "SET.tictable = vcs.createtexttable()\n", + "SET.tictable.color=\"grey\"\n", + "\n", + "# X (bottom) ticks\n", + "# Text Orientation\n", + "SET.xticorientation = vcs.createtextorientation()\n", + "SET.xticorientation.angle = -45\n", + "SET.xticorientation.halign=\"right\"\n", + "SET.xticorientation.height = 12\n", + "# Y (vertical) ticks\n", + "SET.yticorientation = vcs.createtextorientation()\n", + "SET.yticorientation.angle = 0\n", + "SET.yticorientation.halign=\"right\"\n", + "SET.yticorientation.height = 12\n", + "\n", + "# Parameters\n", + "SET.parameterorientation = vcs.createtextorientation()\n", + "SET.parameterorientation.height = 60\n", + "SET.parametertable = vcs.createtexttable()\n", + "SET.parametertable.color = \"blue\"\n", + "\n", + "# We can turn off the \"grid\"\n", + "SET.draw_mesh = \"n\"\n", + "\n", + "# Control color for missing\n", + "SET.missing_color = \"light grey\"\n", + "\n", + "# Tics length\n", + "SET.xtic1.y1 = .2\n", + "SET.xtic1.y2 = .18\n", + "\n", + "# Logo can be a string or an image\n", + "logo_path = os.path.join(pmp_egg_path,\"pmp\",\"graphics\",\"png\",\"PCMDILogo_400x131px_72dpi.png\")\n", + "SET.logo = P.PLOT_SETTINGS.logo = logo_path\n", + "SET.logo.x = .88\n", + "SET.logo.y = .95\n", + "SET.logo.width = 85\n", + "\n", + "# Timestamp\n", + "SET.time_stamp = vcs.createtext()\n", + "SET.time_stamp.color = \"blue\"\n", + "SET.time_stamp.y = [.9]\n", + "SET.time_stamp.x = [.98]\n", + "SET.time_stamp.halign=\"right\"\n", + "# or we can turn it off\n", + "# SET.time_stamp = None\n", + "\n", + "# Colormap\n", + "SET.colormap = \"inferno\"\n", + "\n", + "# level to use\n", + "SET.levels = [-.7,-.6,-.5,-.4,-.3,-.2,-.1,0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.,1.1,1.2,1.3,1.4,1.5]\n", + "# colors to use\n", + "SET.fillareacolors = vcs.getcolors(SET.levels)\n", + "x.clear()\n", + "P.plot(rms_xy[...,0],x=x)\n", + "P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting Values in cell\n", + "\n", + "You can show each cells value if you desire so" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P.PLOT_SETTINGS.values.show = True\n", + "P.PLOT_SETTINGS.values.text.color = \"red\"\n", + "P.PLOT_SETTINGS.values.text.angle = -45\n", + "P.PLOT_SETTINGS.values.array = rms_xy[...,0]\n", + "P.PLOT_SETTINGS.values.lightcolor = \"green\"\n", + "P.PLOT_SETTINGS.values.darkcolor = \"red\"\n", + "x.clear()\n", + "P.plot(rms_xy[...,0],x=x)\n", + "P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting Multiple Sources\n", + "\n", + "We may want to show 2 seasons at once" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Start fresh\n", + "P = pcmdi_metrics.graphics.portraits.Portrait()\n", + "P.decorate(rms_xy, variables, yax)\n", + "x.clear()\n", + "# DJF and JJA\n", + "# DJF if first (1) out of two sources (2)\n", + "P.plot(rms_xy[...,1],x=x,multiple=1.2)\n", + "# JJA is second (2) out of two sources (2)\n", + "P.plot(rms_xy[...,3],x=x,multiple=2.2)\n", + "P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or all four seasons" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "OKKKKKKK\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "# All for season\n", + "for i in range(4):\n", + " multi=i+1.4\n", + " P.plot(rms_xy[...,i+1],x=x,multiple=multi)\n", + "print(\"OKKKKKKK\")\n", + "P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Clickable Portrait Plot\n", + "\n", + "The following section shows how to generate a *clickable* portrait png\n", + "\n", + "## One Source" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# First retrieve the mesh object, vcs template and vcs meshfill grpahic method used when plotting\n", + "x.clear()\n", + "mesh, template, meshfill = P.plot(rms_xy[...,0],x=x)\n", + "x.png(\"clickable.png\")\n", + "\n", + "# Creates clickable polygons numpy arrays\n", + "click_areas = vcs.utils.meshToPngCoords(mesh,template,[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/ipykernel_launcher.py:24: UserWarning: Warning: converting a masked element to nan.\n" + ] + } + ], + "source": [ + "import genutil\n", + "\n", + "# This is a template for where the target files should be\n", + "targets_template = genutil.StringConstructor(\"%(variable)_%(model).html\")\n", + "\n", + "# function to create list of target files for each clickable cell\n", + "# adapt this to your needs, html files here will not exist\n", + "def createTargets(data,targets_template):\n", + " # Axes have been \"decorated\" via P.decorate()\n", + " outs = [] # list of target html files\n", + " tips = [] # list of tooltips\n", + " extras = [] # list of extra attributes for \"area\" tags\n", + " indx = 0\n", + " flt = data.ravel()\n", + " # Y axis\n", + " for a in data.getAxis(0).id.split(\"___\"):\n", + " targets_template.variable = a\n", + " # X axis\n", + " for b in data.getAxis(-1).id.split(\"___\"):\n", + " targets_template.model = b\n", + " fnm = targets_template()\n", + " # Here we test if \n", + " outs.append(fnm)\n", + " tips.append(\"Model: %s
Variable: %sValue: %.3g
\" % (b,a,flt[indx],outs[-1].replace(\"html\",\"png\")))\n", + " extras.append(\"mycustom_attribute='{}'\".format(indx))\n", + " indx += 1\n", + " return outs, tips, extras\n", + "\n", + "targets, tooltips, extras = createTargets(rms_xy[...,0],targets_template)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "geo = x.geometry()\n", + "# create the html map element\n", + "map_element = vcs.utils.mapPng(\"clickable.png\",click_areas,targets,tooltips,width=geo[\"width\"],height=geo[\"height\"], extras=extras)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# write the html\n", + "share_pth = os.path.join(vcs_egg_path, \"vcs\")\n", + "def write_html(html_file, map_element):\n", + " # print(\"TIPS AND MAPPER:\",share_pth+\"/mapper.js\")\n", + " with open(html_file,\"w\") as f:\n", + " f.write(\"\")\n", + " f.write(\"\" % share_pth)\n", + " f.write(\"\" % share_pth)\n", + " f.write('')\n", + " f.write('' % share_pth)\n", + " f.write(\"\")\n", + " f.write(\"

Clickable Portraits Plots

\")\n", + " f.write(map_element)\n", + " #f.write(\"$('area').hover(function(){$(this).css('border','5px');},function(){$(this).css('border','0px');});\")\n", + " f.write(\"\")\n", + "\n", + "write_html(\"clickable_portrait.html\", map_element)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "

Clickable Portraits Plots

\n", + "Variable: prValue: -0.0392
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='48, 332,64, 332,64, 314,48, 314'>\n", + "Variable: prValue: 0.138
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='64, 332,81, 332,81, 314,64, 314'>\n", + "Variable: prValue: 0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='81, 332,98, 332,98, 314,81, 314'>\n", + "Variable: prValue: -0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='98, 332,115, 332,115, 314,98, 314'>\n", + "Variable: prValue: -0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='115, 332,132, 332,132, 314,115, 314'>\n", + "Variable: prValue: -0.0743
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='132, 332,149, 332,149, 314,132, 314'>\n", + "Variable: prValue: -0.125
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='149, 332,166, 332,166, 314,149, 314'>\n", + "Variable: prValue: -0.082
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='166, 332,183, 332,183, 314,166, 314'>\n", + "Variable: prValue: 0.463
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='183, 332,200, 332,200, 314,183, 314'>\n", + "Variable: prValue: -0.075
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='200, 332,217, 332,217, 314,200, 314'>\n", + "Variable: prValue: 0.0512
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='217, 332,234, 332,234, 314,217, 314'>\n", + "Variable: prValue: 0.175
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='234, 332,251, 332,251, 314,234, 314'>\n", + "Variable: prValue: 0.0624
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='251, 332,268, 332,268, 314,251, 314'>\n", + "Variable: prValue: 0.0238
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='268, 332,285, 332,285, 314,268, 314'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='285, 332,302, 332,302, 314,285, 314'>\n", + "Variable: prValue: -0.0021
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='302, 332,319, 332,319, 314,302, 314'>\n", + "Variable: prValue: 0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='319, 332,336, 332,336, 314,319, 314'>\n", + "Variable: prwValue: -0.0418
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='48, 314,64, 314,64, 296,48, 296'>\n", + "Variable: prwValue: -0.0187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='64, 314,81, 314,81, 296,64, 296'>\n", + "Variable: prwValue: 0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='81, 314,98, 314,98, 296,81, 296'>\n", + "Variable: prwValue: 0.0196
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='98, 314,115, 314,115, 296,98, 296'>\n", + "Variable: prwValue: 0.0217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='115, 314,132, 314,132, 296,115, 296'>\n", + "Variable: prwValue: 0.0224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='132, 314,149, 314,149, 296,132, 296'>\n", + "Variable: prwValue: 0.0213
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='149, 314,166, 314,166, 296,149, 296'>\n", + "Variable: prwValue: 0.0586
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='166, 314,183, 314,183, 296,166, 296'>\n", + "Variable: prwValue: 0.0123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='183, 314,200, 314,200, 296,183, 296'>\n", + "Variable: prwValue: -0.0608
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='200, 314,217, 314,217, 296,200, 296'>\n", + "Variable: prwValue: -0.0123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='217, 314,234, 314,234, 296,217, 296'>\n", + "Variable: prwValue: -0.0759
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='234, 314,251, 314,251, 296,234, 296'>\n", + "Variable: prwValue: -0.0721
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='251, 314,268, 314,268, 296,251, 296'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='268, 314,285, 314,285, 296,268, 296'>\n", + "Variable: prwValue: 0.0382
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='285, 314,302, 314,302, 296,285, 296'>\n", + "Variable: prwValue: -0.0349
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='302, 314,319, 314,319, 296,302, 296'>\n", + "Variable: prwValue: -0.0226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='319, 314,336, 314,336, 296,319, 296'>\n", + "Variable: pslValue: -0.0275
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='48, 296,64, 296,64, 278,48, 278'>\n", + "Variable: pslValue: -0.196
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='64, 296,81, 296,81, 278,64, 278'>\n", + "Variable: pslValue: -0.171
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='81, 296,98, 296,98, 278,81, 278'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='98, 296,115, 296,115, 278,98, 278'>\n", + "Variable: pslValue: -0.0153
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='115, 296,132, 296,132, 278,115, 278'>\n", + "Variable: pslValue: -0.407
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='132, 296,149, 296,149, 278,132, 278'>\n", + "Variable: pslValue: 0.0323
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='149, 296,166, 296,166, 278,149, 278'>\n", + "Variable: pslValue: 0.239
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='166, 296,183, 296,183, 278,166, 278'>\n", + "Variable: pslValue: 0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='183, 296,200, 296,200, 278,183, 278'>\n", + "Variable: pslValue: 0.363
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='200, 296,217, 296,217, 278,200, 278'>\n", + "Variable: pslValue: -0.277
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='217, 296,234, 296,234, 278,217, 278'>\n", + "Variable: pslValue: 0.111
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='234, 296,251, 296,251, 278,234, 278'>\n", + "Variable: pslValue: 0.078
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='251, 296,268, 296,268, 278,251, 278'>\n", + "Variable: pslValue: -0.231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='268, 296,285, 296,285, 278,268, 278'>\n", + "Variable: pslValue: 0.209
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='285, 296,302, 296,302, 278,285, 278'>\n", + "Variable: pslValue: -0.101
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='302, 296,319, 296,319, 278,302, 278'>\n", + "Variable: pslValue: 0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='319, 296,336, 296,336, 278,319, 278'>\n", + "Variable: rltcreValue: -0.121
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='48, 278,64, 278,64, 260,48, 260'>\n", + "Variable: rltcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='64, 278,81, 278,81, 260,64, 260'>\n", + "Variable: rltcreValue: -0.171
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='81, 278,98, 278,98, 260,81, 260'>\n", + "Variable: rltcreValue: 0.0127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='98, 278,115, 278,115, 260,98, 260'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='115, 278,132, 278,132, 260,115, 260'>\n", + "Variable: rltcreValue: 0.069
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='132, 278,149, 278,149, 260,132, 260'>\n", + "Variable: rltcreValue: -0.00485
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='149, 278,166, 278,166, 260,149, 260'>\n", + "Variable: rltcreValue: 0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='166, 278,183, 278,183, 260,166, 260'>\n", + "Variable: rltcreValue: 0.283
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='183, 278,200, 278,200, 260,183, 260'>\n", + "Variable: rltcreValue: 0.0575
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='200, 278,217, 278,217, 260,200, 260'>\n", + "Variable: rltcreValue: 0.0901
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='217, 278,234, 278,234, 260,217, 260'>\n", + "Variable: rltcreValue: -0.00442
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='234, 278,251, 278,251, 260,234, 260'>\n", + "Variable: rltcreValue: -0.0807
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='251, 278,268, 278,268, 260,251, 260'>\n", + "Variable: rltcreValue: -0.235
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='268, 278,285, 278,285, 260,268, 260'>\n", + "Variable: rltcreValue: 0.00371
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='285, 278,302, 278,302, 260,285, 260'>\n", + "Variable: rltcreValue: -0.146
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='302, 278,319, 278,319, 260,302, 260'>\n", + "Variable: rltcreValue: 0.545
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='319, 278,336, 278,336, 260,319, 260'>\n", + "Variable: rlutValue: -0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='48, 260,64, 260,64, 242,48, 242'>\n", + "Variable: rlutValue: 0.0063
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='64, 260,81, 260,81, 242,64, 242'>\n", + "Variable: rlutValue: 0.0937
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='81, 260,98, 260,98, 242,81, 242'>\n", + "Variable: rlutValue: -0.106
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='98, 260,115, 260,115, 242,98, 242'>\n", + "Variable: rlutValue: -0.113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='115, 260,132, 260,132, 242,115, 242'>\n", + "Variable: rlutValue: -0.317
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='132, 260,149, 260,149, 242,132, 242'>\n", + "Variable: rlutValue: -0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='149, 260,166, 260,166, 242,149, 242'>\n", + "Variable: rlutValue: 0.0969
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='166, 260,183, 260,183, 242,166, 242'>\n", + "Variable: rlutValue: 0.16
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='183, 260,200, 260,200, 242,183, 242'>\n", + "Variable: rlutValue: 0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='200, 260,217, 260,217, 242,200, 242'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='217, 260,234, 260,234, 242,217, 242'>\n", + "Variable: rlutValue: 0.0241
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='234, 260,251, 260,251, 242,234, 242'>\n", + "Variable: rlutValue: -0.0505
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='251, 260,268, 260,268, 242,251, 242'>\n", + "Variable: rlutValue: -0.0498
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='268, 260,285, 260,285, 242,268, 242'>\n", + "Variable: rlutValue: -0.0822
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='285, 260,302, 260,302, 242,285, 242'>\n", + "Variable: rlutValue: 0.0231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='302, 260,319, 260,319, 242,302, 242'>\n", + "Variable: rlutValue: 0.271
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='319, 260,336, 260,336, 242,319, 242'>\n", + "Variable: rstcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='48, 242,64, 242,64, 224,48, 224'>\n", + "Variable: rstcreValue: -0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='64, 242,81, 242,81, 224,64, 224'>\n", + "Variable: rstcreValue: -0.148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='81, 242,98, 242,98, 224,81, 224'>\n", + "Variable: rstcreValue: 0.0432
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='98, 242,115, 242,115, 224,98, 224'>\n", + "Variable: rstcreValue: 0.0311
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='115, 242,132, 242,132, 224,115, 224'>\n", + "Variable: rstcreValue: 0.000745
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='132, 242,149, 242,149, 224,132, 224'>\n", + "Variable: rstcreValue: 0.0384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='149, 242,166, 242,166, 224,149, 224'>\n", + "Variable: rstcreValue: 0.31
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='166, 242,183, 242,183, 224,166, 224'>\n", + "Variable: rstcreValue: 0.195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='183, 242,200, 242,200, 224,183, 224'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='200, 242,217, 242,217, 224,200, 224'>\n", + "Variable: rstcreValue: -0.205
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='217, 242,234, 242,234, 224,217, 224'>\n", + "Variable: rstcreValue: -0.0949
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='234, 242,251, 242,251, 224,234, 224'>\n", + "Variable: rstcreValue: -0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='251, 242,268, 242,268, 224,251, 224'>\n", + "Variable: rstcreValue: -0.307
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='268, 242,285, 242,285, 224,268, 224'>\n", + "Variable: rstcreValue: 0.0118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='285, 242,302, 242,302, 224,285, 224'>\n", + "Variable: rstcreValue: -0.015
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='302, 242,319, 242,319, 224,302, 224'>\n", + "Variable: rstcreValue: 0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='319, 242,336, 242,336, 224,319, 224'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='48, 224,64, 224,64, 206,48, 206'>\n", + "Variable: ta-200Value: -0.256
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='64, 224,81, 224,81, 206,64, 206'>\n", + "Variable: ta-200Value: -0.469
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='81, 224,98, 224,98, 206,81, 206'>\n", + "Variable: ta-200Value: 0.0237
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='98, 224,115, 224,115, 206,98, 206'>\n", + "Variable: ta-200Value: 0.0117
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='115, 224,132, 224,132, 206,115, 206'>\n", + "Variable: ta-200Value: 0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='132, 224,149, 224,149, 206,132, 206'>\n", + "Variable: ta-200Value: 0.00643
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='149, 224,166, 224,166, 206,149, 206'>\n", + "Variable: ta-200Value: 0.394
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='166, 224,183, 224,183, 206,166, 206'>\n", + "Variable: ta-200Value: -0.185
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='183, 224,200, 224,200, 206,183, 206'>\n", + "Variable: ta-200Value: 1.14
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='200, 224,217, 224,217, 206,200, 206'>\n", + "Variable: ta-200Value: -0.641
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='217, 224,234, 224,234, 206,217, 206'>\n", + "Variable: ta-200Value: -0.326
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='234, 224,251, 224,251, 206,234, 206'>\n", + "Variable: ta-200Value: -0.393
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='251, 224,268, 224,268, 206,251, 206'>\n", + "Variable: ta-200Value: -0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='268, 224,285, 224,285, 206,268, 206'>\n", + "Variable: ta-200Value: 0.28
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='285, 224,302, 224,302, 206,285, 206'>\n", + "Variable: ta-200Value: 0.633
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='302, 224,319, 224,319, 206,302, 206'>\n", + "Variable: ta-200Value: -0.00877
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='319, 224,336, 224,336, 206,319, 206'>\n", + "Variable: ta-850Value: 0.615
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='48, 206,64, 206,64, 188,48, 188'>\n", + "Variable: ta-850Value: -0.14
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='64, 206,81, 206,81, 188,64, 188'>\n", + "Variable: ta-850Value: -0.302
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='81, 206,98, 206,98, 188,81, 188'>\n", + "Variable: ta-850Value: -0.0519
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='98, 206,115, 206,115, 188,98, 188'>\n", + "Variable: ta-850Value: -0.085
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='115, 206,132, 206,132, 188,115, 188'>\n", + "Variable: ta-850Value: 0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='132, 206,149, 206,149, 188,132, 188'>\n", + "Variable: ta-850Value: -0.0577
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='149, 206,166, 206,166, 188,149, 188'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='166, 206,183, 206,183, 188,166, 188'>\n", + "Variable: ta-850Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='183, 206,200, 206,200, 188,183, 188'>\n", + "Variable: ta-850Value: 0.42
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='200, 206,217, 206,217, 188,200, 188'>\n", + "Variable: ta-850Value: -0.0765
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='217, 206,234, 206,234, 188,217, 188'>\n", + "Variable: ta-850Value: 0.688
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='234, 206,251, 206,251, 188,234, 188'>\n", + "Variable: ta-850Value: 0.385
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='251, 206,268, 206,268, 188,251, 188'>\n", + "Variable: ta-850Value: -0.209
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='268, 206,285, 206,285, 188,268, 188'>\n", + "Variable: ta-850Value: -0.168
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='285, 206,302, 206,302, 188,285, 188'>\n", + "Variable: ta-850Value: 1.07
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='302, 206,319, 206,319, 188,302, 188'>\n", + "Variable: ta-850Value: 0.887
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='319, 206,336, 206,336, 188,319, 188'>\n", + "Variable: tasValue: -0.0626
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='48, 188,64, 188,64, 170,48, 170'>\n", + "Variable: tasValue: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='64, 188,81, 188,81, 170,64, 170'>\n", + "Variable: tasValue: -0.183
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='81, 188,98, 188,98, 170,81, 170'>\n", + "Variable: tasValue: 0.0229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='98, 188,115, 188,115, 170,98, 170'>\n", + "Variable: tasValue: -0.0014
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='115, 188,132, 188,132, 170,115, 170'>\n", + "Variable: tasValue: 0.0276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='132, 188,149, 188,149, 170,132, 170'>\n", + "Variable: tasValue: 0.0463
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='149, 188,166, 188,166, 170,149, 170'>\n", + "Variable: tasValue: 0.0327
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='166, 188,183, 188,183, 170,166, 170'>\n", + "Variable: tasValue: 0.365
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='183, 188,200, 188,200, 170,183, 170'>\n", + "Variable: tasValue: 0.477
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='200, 188,217, 188,217, 170,200, 170'>\n", + "Variable: tasValue: -0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='217, 188,234, 188,234, 170,217, 170'>\n", + "Variable: tasValue: 0.165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='234, 188,251, 188,251, 170,234, 170'>\n", + "Variable: tasValue: -0.022
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='251, 188,268, 188,268, 170,251, 170'>\n", + "Variable: tasValue: -0.147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='268, 188,285, 188,285, 170,268, 170'>\n", + "Variable: tasValue: -0.372
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='285, 188,302, 188,302, 170,285, 170'>\n", + "Variable: tasValue: 0.147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='302, 188,319, 188,319, 170,302, 170'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='319, 188,336, 188,336, 170,319, 170'>\n", + "Variable: ua-200Value: -0.0273
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='48, 170,64, 170,64, 152,48, 152'>\n", + "Variable: ua-200Value: -0.0924
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='64, 170,81, 170,81, 152,64, 152'>\n", + "Variable: ua-200Value: 0.217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='81, 170,98, 170,98, 152,81, 152'>\n", + "Variable: ua-200Value: -0.0341
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='98, 170,115, 170,115, 152,98, 152'>\n", + "Variable: ua-200Value: -0.0598
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='115, 170,132, 170,132, 152,115, 152'>\n", + "Variable: ua-200Value: -0.256
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='132, 170,149, 170,149, 152,132, 152'>\n", + "Variable: ua-200Value: -0.064
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='149, 170,166, 170,166, 152,149, 152'>\n", + "Variable: ua-200Value: 0.139
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='166, 170,183, 170,183, 152,166, 152'>\n", + "Variable: ua-200Value: 0.384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='183, 170,200, 170,200, 152,183, 152'>\n", + "Variable: ua-200Value: 0.422
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='200, 170,217, 170,217, 152,200, 152'>\n", + "Variable: ua-200Value: 0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='217, 170,234, 170,234, 152,217, 152'>\n", + "Variable: ua-200Value: -0.033
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='234, 170,251, 170,251, 152,234, 152'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='251, 170,268, 170,268, 152,251, 152'>\n", + "Variable: ua-200Value: -0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='268, 170,285, 170,285, 152,268, 152'>\n", + "Variable: ua-200Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='285, 170,302, 170,302, 152,285, 152'>\n", + "Variable: ua-200Value: 0.207
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='302, 170,319, 170,319, 152,302, 152'>\n", + "Variable: ua-200Value: 0.567
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='319, 170,336, 170,336, 152,319, 152'>\n", + "Variable: ua-850Value: -0.184
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='48, 152,64, 152,64, 134,48, 134'>\n", + "Variable: ua-850Value: -0.4
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='64, 152,81, 152,81, 134,64, 134'>\n", + "Variable: ua-850Value: -0.223
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='81, 152,98, 152,98, 134,81, 134'>\n", + "Variable: ua-850Value: 0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='98, 152,115, 152,115, 134,98, 134'>\n", + "Variable: ua-850Value: 0.0698
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='115, 152,132, 152,132, 134,115, 134'>\n", + "Variable: ua-850Value: -0.349
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='132, 152,149, 152,149, 134,132, 134'>\n", + "Variable: ua-850Value: 0.0862
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='149, 152,166, 152,166, 134,149, 134'>\n", + "Variable: ua-850Value: 0.0869
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='166, 152,183, 152,183, 134,166, 134'>\n", + "Variable: ua-850Value: -0.0165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='183, 152,200, 152,200, 134,183, 134'>\n", + "Variable: ua-850Value: 0.517
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='200, 152,217, 152,217, 134,200, 134'>\n", + "Variable: ua-850Value: -0.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='217, 152,234, 152,234, 134,217, 134'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='234, 152,251, 152,251, 134,234, 134'>\n", + "Variable: ua-850Value: -0.0658
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='251, 152,268, 152,268, 134,251, 134'>\n", + "Variable: ua-850Value: -0.387
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='268, 152,285, 152,285, 134,268, 134'>\n", + "Variable: ua-850Value: 0.00197
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='285, 152,302, 152,302, 134,285, 134'>\n", + "Variable: ua-850Value: 0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='302, 152,319, 152,319, 134,302, 134'>\n", + "Variable: ua-850Value: 0.219
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='319, 152,336, 152,336, 134,319, 134'>\n", + "Variable: va-200Value: -0.0667
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='48, 134,64, 134,64, 116,48, 116'>\n", + "Variable: va-200Value: -0.165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='64, 134,81, 134,81, 116,64, 116'>\n", + "Variable: va-200Value: 0.0304
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='81, 134,98, 134,98, 116,81, 116'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='98, 134,115, 134,115, 116,98, 116'>\n", + "Variable: va-200Value: -0.0515
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='115, 134,132, 134,132, 116,115, 116'>\n", + "Variable: va-200Value: -0.108
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='132, 134,149, 134,149, 116,132, 116'>\n", + "Variable: va-200Value: -0.0312
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='149, 134,166, 134,166, 116,149, 116'>\n", + "Variable: va-200Value: 0.192
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='166, 134,183, 134,183, 116,166, 116'>\n", + "Variable: va-200Value: 0.285
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='183, 134,200, 134,200, 116,183, 116'>\n", + "Variable: va-200Value: 0.117
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='200, 134,217, 134,217, 116,200, 116'>\n", + "Variable: va-200Value: -0.0127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='217, 134,234, 134,234, 116,217, 116'>\n", + "Variable: va-200Value: 0.0987
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='234, 134,251, 134,251, 116,234, 116'>\n", + "Variable: va-200Value: 0.0346
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='251, 134,268, 134,268, 116,251, 116'>\n", + "Variable: va-200Value: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='268, 134,285, 134,285, 116,268, 116'>\n", + "Variable: va-200Value: -0.00591
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='285, 134,302, 134,302, 116,285, 116'>\n", + "Variable: va-200Value: 0.0641
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='302, 134,319, 134,319, 116,302, 116'>\n", + "Variable: va-200Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='319, 134,336, 134,336, 116,319, 116'>\n", + "Variable: va-850Value: -0.0767
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='48, 116,64, 116,64, 98,48, 98'>\n", + "Variable: va-850Value: -0.136
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='64, 116,81, 116,81, 98,64, 98'>\n", + "Variable: va-850Value: -0.0203
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='81, 116,98, 116,98, 98,81, 98'>\n", + "Variable: va-850Value: 0.0753
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='98, 116,115, 116,115, 98,98, 98'>\n", + "Variable: va-850Value: 0.0347
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='115, 116,132, 116,132, 98,115, 98'>\n", + "Variable: va-850Value: -0.252
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='132, 116,149, 116,149, 98,132, 98'>\n", + "Variable: va-850Value: 0.0521
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='149, 116,166, 116,166, 98,149, 98'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='166, 116,183, 116,183, 98,166, 98'>\n", + "Variable: va-850Value: 0.227
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='183, 116,200, 116,200, 98,183, 98'>\n", + "Variable: va-850Value: 0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='200, 116,217, 116,217, 98,200, 98'>\n", + "Variable: va-850Value: -0.0854
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='217, 116,234, 116,234, 98,217, 98'>\n", + "Variable: va-850Value: 0.013
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='234, 116,251, 116,251, 98,234, 98'>\n", + "Variable: va-850Value: -0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='251, 116,268, 116,268, 98,251, 98'>\n", + "Variable: va-850Value: -0.151
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='268, 116,285, 116,285, 98,268, 98'>\n", + "Variable: va-850Value: -0.0724
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='285, 116,302, 116,302, 98,285, 98'>\n", + "Variable: va-850Value: 0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='302, 116,319, 116,319, 98,302, 98'>\n", + "Variable: va-850Value: 0.479
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='319, 116,336, 116,336, 98,319, 98'>\n", + "Variable: zg-500Value: 0.353
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='48, 98,64, 98,64, 80,48, 80'>\n", + "Variable: zg-500Value: -0.0292
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='64, 98,81, 98,81, 80,64, 80'>\n", + "Variable: zg-500Value: -0.45
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='81, 98,98, 98,98, 80,81, 80'>\n", + "Variable: zg-500Value: -0.213
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='98, 98,115, 98,115, 80,98, 80'>\n", + "Variable: zg-500Value: -0.236
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='115, 98,132, 98,132, 80,115, 80'>\n", + "Variable: zg-500Value: -0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='132, 98,149, 98,149, 80,132, 80'>\n", + "Variable: zg-500Value: -0.195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='149, 98,166, 98,166, 80,149, 80'>\n", + "Variable: zg-500Value: -0.0451
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='166, 98,183, 98,183, 80,166, 80'>\n", + "Variable: zg-500Value: 0.0837
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='183, 98,200, 98,200, 80,183, 80'>\n", + "Variable: zg-500Value: 1.05
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='200, 98,217, 98,217, 80,200, 80'>\n", + "Variable: zg-500Value: 0.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='217, 98,234, 98,234, 80,217, 80'>\n", + "Variable: zg-500Value: 1.34
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='234, 98,251, 98,251, 80,234, 80'>\n", + "Variable: zg-500Value: 1.04
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='251, 98,268, 98,268, 80,251, 80'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='268, 98,285, 98,285, 80,268, 80'>\n", + "Variable: zg-500Value: -0.249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='285, 98,302, 98,302, 80,285, 80'>\n", + "Variable: zg-500Value: 0.539
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='302, 98,319, 98,319, 80,302, 80'>\n", + "Variable: zg-500Value: 0.0292
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='319, 98,336, 98,336, 80,319, 80'>\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Viz\n", + "def viz(html_file):\n", + " from IPython.display import HTML\n", + " #class HTML(object):\n", + " # def __init__(self,html):\n", + " # self.html = html\n", + " # def _repr_html_(self):\n", + " # return self.html\n", + "\n", + " f=open(html_file)\n", + " html = f.read()\n", + " mapper = open(share_pth+\"/mapper.js\").read()\n", + " tips = open(share_pth+\"/mapper.js\").read()\n", + " HTML(mapper)\n", + " HTML(tips)\n", + " return HTML(html)\n", + " \n", + "viz(\"clickable_portrait.html\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multiple Portrait Plots\n", + "\n", + "### Separate Portraits On A Page\n", + "\n", + "[Back To Top]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy\n", + "\n", + "P1 = pcmdi_metrics.graphics.portraits.Portrait()\n", + "P1.decorate(rms_xy, variables, yax)\n", + "P2 = pcmdi_metrics.graphics.portraits.Portrait()\n", + "P2.decorate(rms_xy, variables, yax)\n", + "x.clear()\n", + "\n", + "SET1 = P1.PLOT_SETTINGS\n", + "# Viewport on the Canvas\n", + "SET1.x1 = .1\n", + "SET1.x2 = .45\n", + "SET1.y1 = .2\n", + "SET1.y2 = .8\n", + "\n", + "SET1.legend.x1 = .91\n", + "SET1.legend.x2 = .99\n", + "SET1.legend.y1 = .1\n", + "SET1.legend.y2 = .45\n", + "\n", + "SET2 = P2.PLOT_SETTINGS\n", + "# Viewport on the Canvas\n", + "SET2.x1 = .55\n", + "SET2.x2 = .9\n", + "SET2.y1 = .2\n", + "SET2.y2 = .8\n", + "\n", + "SET2.legend.x1 = .91\n", + "SET2.legend.x2 = .99\n", + "SET2.legend.y1 = .55\n", + "SET2.legend.y2 = .9\n", + "\n", + "\n", + "mesh1, template1, meshfill1 = P1.plot(rms_xy[...,0],x=x)\n", + "mesh2, template2, meshfill2 = P2.plot(rms_xy[...,1],x=x)\n", + "x.png(\"clickable2.png\")\n", + "P1" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/ipykernel_launcher.py:24: UserWarning: Warning: converting a masked element to nan.\n" + ] + }, + { + "data": { + "text/html": [ + "

Clickable Portraits Plots

\n", + "Variable: prValue: -0.0392
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='40, 320,48, 320,48, 302,40, 302'>\n", + "Variable: prValue: 0.138
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='48, 320,56, 320,56, 302,48, 302'>\n", + "Variable: prValue: 0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='56, 320,64, 320,64, 302,56, 302'>\n", + "Variable: prValue: -0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='64, 320,72, 320,72, 302,64, 302'>\n", + "Variable: prValue: -0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='72, 320,81, 320,81, 302,72, 302'>\n", + "Variable: prValue: -0.0743
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='81, 320,89, 320,89, 302,81, 302'>\n", + "Variable: prValue: -0.125
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='89, 320,97, 320,97, 302,89, 302'>\n", + "Variable: prValue: -0.082
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='97, 320,105, 320,105, 302,97, 302'>\n", + "Variable: prValue: 0.463
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='105, 320,114, 320,114, 302,105, 302'>\n", + "Variable: prValue: -0.075
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='114, 320,122, 320,122, 302,114, 302'>\n", + "Variable: prValue: 0.0512
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='122, 320,130, 320,130, 302,122, 302'>\n", + "Variable: prValue: 0.175
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='130, 320,138, 320,138, 302,130, 302'>\n", + "Variable: prValue: 0.0624
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='138, 320,147, 320,147, 302,138, 302'>\n", + "Variable: prValue: 0.0238
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='147, 320,155, 320,155, 302,147, 302'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='155, 320,163, 320,163, 302,155, 302'>\n", + "Variable: prValue: -0.0021
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='163, 320,171, 320,171, 302,163, 302'>\n", + "Variable: prValue: 0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='171, 320,180, 320,180, 302,171, 302'>\n", + "Variable: prwValue: -0.0418
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='40, 302,48, 302,48, 285,40, 285'>\n", + "Variable: prwValue: -0.0187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='48, 302,56, 302,56, 285,48, 285'>\n", + "Variable: prwValue: 0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='56, 302,64, 302,64, 285,56, 285'>\n", + "Variable: prwValue: 0.0196
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='64, 302,72, 302,72, 285,64, 285'>\n", + "Variable: prwValue: 0.0217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='72, 302,81, 302,81, 285,72, 285'>\n", + "Variable: prwValue: 0.0224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='81, 302,89, 302,89, 285,81, 285'>\n", + "Variable: prwValue: 0.0213
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='89, 302,97, 302,97, 285,89, 285'>\n", + "Variable: prwValue: 0.0586
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='97, 302,105, 302,105, 285,97, 285'>\n", + "Variable: prwValue: 0.0123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='105, 302,114, 302,114, 285,105, 285'>\n", + "Variable: prwValue: -0.0608
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='114, 302,122, 302,122, 285,114, 285'>\n", + "Variable: prwValue: -0.0123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='122, 302,130, 302,130, 285,122, 285'>\n", + "Variable: prwValue: -0.0759
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='130, 302,138, 302,138, 285,130, 285'>\n", + "Variable: prwValue: -0.0721
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='138, 302,147, 302,147, 285,138, 285'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='147, 302,155, 302,155, 285,147, 285'>\n", + "Variable: prwValue: 0.0382
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='155, 302,163, 302,163, 285,155, 285'>\n", + "Variable: prwValue: -0.0349
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='163, 302,171, 302,171, 285,163, 285'>\n", + "Variable: prwValue: -0.0226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='171, 302,180, 302,180, 285,171, 285'>\n", + "Variable: pslValue: -0.0275
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='40, 285,48, 285,48, 268,40, 268'>\n", + "Variable: pslValue: -0.196
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='48, 285,56, 285,56, 268,48, 268'>\n", + "Variable: pslValue: -0.171
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='56, 285,64, 285,64, 268,56, 268'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='64, 285,72, 285,72, 268,64, 268'>\n", + "Variable: pslValue: -0.0153
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='72, 285,81, 285,81, 268,72, 268'>\n", + "Variable: pslValue: -0.407
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='81, 285,89, 285,89, 268,81, 268'>\n", + "Variable: pslValue: 0.0323
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='89, 285,97, 285,97, 268,89, 268'>\n", + "Variable: pslValue: 0.239
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='97, 285,105, 285,105, 268,97, 268'>\n", + "Variable: pslValue: 0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='105, 285,114, 285,114, 268,105, 268'>\n", + "Variable: pslValue: 0.363
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='114, 285,122, 285,122, 268,114, 268'>\n", + "Variable: pslValue: -0.277
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='122, 285,130, 285,130, 268,122, 268'>\n", + "Variable: pslValue: 0.111
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='130, 285,138, 285,138, 268,130, 268'>\n", + "Variable: pslValue: 0.078
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='138, 285,147, 285,147, 268,138, 268'>\n", + "Variable: pslValue: -0.231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='147, 285,155, 285,155, 268,147, 268'>\n", + "Variable: pslValue: 0.209
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='155, 285,163, 285,163, 268,155, 268'>\n", + "Variable: pslValue: -0.101
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='163, 285,171, 285,171, 268,163, 268'>\n", + "Variable: pslValue: 0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='171, 285,180, 285,180, 268,171, 268'>\n", + "Variable: rltcreValue: -0.121
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='40, 268,48, 268,48, 251,40, 251'>\n", + "Variable: rltcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='48, 268,56, 268,56, 251,48, 251'>\n", + "Variable: rltcreValue: -0.171
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='56, 268,64, 268,64, 251,56, 251'>\n", + "Variable: rltcreValue: 0.0127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='64, 268,72, 268,72, 251,64, 251'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='72, 268,81, 268,81, 251,72, 251'>\n", + "Variable: rltcreValue: 0.069
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='81, 268,89, 268,89, 251,81, 251'>\n", + "Variable: rltcreValue: -0.00485
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='89, 268,97, 268,97, 251,89, 251'>\n", + "Variable: rltcreValue: 0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='97, 268,105, 268,105, 251,97, 251'>\n", + "Variable: rltcreValue: 0.283
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='105, 268,114, 268,114, 251,105, 251'>\n", + "Variable: rltcreValue: 0.0575
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='114, 268,122, 268,122, 251,114, 251'>\n", + "Variable: rltcreValue: 0.0901
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='122, 268,130, 268,130, 251,122, 251'>\n", + "Variable: rltcreValue: -0.00442
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='130, 268,138, 268,138, 251,130, 251'>\n", + "Variable: rltcreValue: -0.0807
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='138, 268,147, 268,147, 251,138, 251'>\n", + "Variable: rltcreValue: -0.235
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='147, 268,155, 268,155, 251,147, 251'>\n", + "Variable: rltcreValue: 0.00371
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='155, 268,163, 268,163, 251,155, 251'>\n", + "Variable: rltcreValue: -0.146
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='163, 268,171, 268,171, 251,163, 251'>\n", + "Variable: rltcreValue: 0.545
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='171, 268,180, 268,180, 251,171, 251'>\n", + "Variable: rlutValue: -0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='40, 251,48, 251,48, 234,40, 234'>\n", + "Variable: rlutValue: 0.0063
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='48, 251,56, 251,56, 234,48, 234'>\n", + "Variable: rlutValue: 0.0937
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='56, 251,64, 251,64, 234,56, 234'>\n", + "Variable: rlutValue: -0.106
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='64, 251,72, 251,72, 234,64, 234'>\n", + "Variable: rlutValue: -0.113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='72, 251,81, 251,81, 234,72, 234'>\n", + "Variable: rlutValue: -0.317
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='81, 251,89, 251,89, 234,81, 234'>\n", + "Variable: rlutValue: -0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='89, 251,97, 251,97, 234,89, 234'>\n", + "Variable: rlutValue: 0.0969
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='97, 251,105, 251,105, 234,97, 234'>\n", + "Variable: rlutValue: 0.16
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='105, 251,114, 251,114, 234,105, 234'>\n", + "Variable: rlutValue: 0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='114, 251,122, 251,122, 234,114, 234'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='122, 251,130, 251,130, 234,122, 234'>\n", + "Variable: rlutValue: 0.0241
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='130, 251,138, 251,138, 234,130, 234'>\n", + "Variable: rlutValue: -0.0505
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='138, 251,147, 251,147, 234,138, 234'>\n", + "Variable: rlutValue: -0.0498
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='147, 251,155, 251,155, 234,147, 234'>\n", + "Variable: rlutValue: -0.0822
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='155, 251,163, 251,163, 234,155, 234'>\n", + "Variable: rlutValue: 0.0231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='163, 251,171, 251,171, 234,163, 234'>\n", + "Variable: rlutValue: 0.271
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='171, 251,180, 251,180, 234,171, 234'>\n", + "Variable: rstcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='40, 234,48, 234,48, 217,40, 217'>\n", + "Variable: rstcreValue: -0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='48, 234,56, 234,56, 217,48, 217'>\n", + "Variable: rstcreValue: -0.148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='56, 234,64, 234,64, 217,56, 217'>\n", + "Variable: rstcreValue: 0.0432
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='64, 234,72, 234,72, 217,64, 217'>\n", + "Variable: rstcreValue: 0.0311
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='72, 234,81, 234,81, 217,72, 217'>\n", + "Variable: rstcreValue: 0.000745
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='81, 234,89, 234,89, 217,81, 217'>\n", + "Variable: rstcreValue: 0.0384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='89, 234,97, 234,97, 217,89, 217'>\n", + "Variable: rstcreValue: 0.31
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='97, 234,105, 234,105, 217,97, 217'>\n", + "Variable: rstcreValue: 0.195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='105, 234,114, 234,114, 217,105, 217'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='114, 234,122, 234,122, 217,114, 217'>\n", + "Variable: rstcreValue: -0.205
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='122, 234,130, 234,130, 217,122, 217'>\n", + "Variable: rstcreValue: -0.0949
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='130, 234,138, 234,138, 217,130, 217'>\n", + "Variable: rstcreValue: -0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='138, 234,147, 234,147, 217,138, 217'>\n", + "Variable: rstcreValue: -0.307
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='147, 234,155, 234,155, 217,147, 217'>\n", + "Variable: rstcreValue: 0.0118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='155, 234,163, 234,163, 217,155, 217'>\n", + "Variable: rstcreValue: -0.015
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='163, 234,171, 234,171, 217,163, 217'>\n", + "Variable: rstcreValue: 0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='171, 234,180, 234,180, 217,171, 217'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='40, 217,48, 217,48, 200,40, 200'>\n", + "Variable: ta-200Value: -0.256
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='48, 217,56, 217,56, 200,48, 200'>\n", + "Variable: ta-200Value: -0.469
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='56, 217,64, 217,64, 200,56, 200'>\n", + "Variable: ta-200Value: 0.0237
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='64, 217,72, 217,72, 200,64, 200'>\n", + "Variable: ta-200Value: 0.0117
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='72, 217,81, 217,81, 200,72, 200'>\n", + "Variable: ta-200Value: 0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='81, 217,89, 217,89, 200,81, 200'>\n", + "Variable: ta-200Value: 0.00643
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='89, 217,97, 217,97, 200,89, 200'>\n", + "Variable: ta-200Value: 0.394
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='97, 217,105, 217,105, 200,97, 200'>\n", + "Variable: ta-200Value: -0.185
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='105, 217,114, 217,114, 200,105, 200'>\n", + "Variable: ta-200Value: 1.14
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='114, 217,122, 217,122, 200,114, 200'>\n", + "Variable: ta-200Value: -0.641
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='122, 217,130, 217,130, 200,122, 200'>\n", + "Variable: ta-200Value: -0.326
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='130, 217,138, 217,138, 200,130, 200'>\n", + "Variable: ta-200Value: -0.393
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='138, 217,147, 217,147, 200,138, 200'>\n", + "Variable: ta-200Value: -0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='147, 217,155, 217,155, 200,147, 200'>\n", + "Variable: ta-200Value: 0.28
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='155, 217,163, 217,163, 200,155, 200'>\n", + "Variable: ta-200Value: 0.633
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='163, 217,171, 217,171, 200,163, 200'>\n", + "Variable: ta-200Value: -0.00877
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='171, 217,180, 217,180, 200,171, 200'>\n", + "Variable: ta-850Value: 0.615
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='40, 200,48, 200,48, 182,40, 182'>\n", + "Variable: ta-850Value: -0.14
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='48, 200,56, 200,56, 182,48, 182'>\n", + "Variable: ta-850Value: -0.302
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='56, 200,64, 200,64, 182,56, 182'>\n", + "Variable: ta-850Value: -0.0519
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='64, 200,72, 200,72, 182,64, 182'>\n", + "Variable: ta-850Value: -0.085
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='72, 200,81, 200,81, 182,72, 182'>\n", + "Variable: ta-850Value: 0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='81, 200,89, 200,89, 182,81, 182'>\n", + "Variable: ta-850Value: -0.0577
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='89, 200,97, 200,97, 182,89, 182'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='97, 200,105, 200,105, 182,97, 182'>\n", + "Variable: ta-850Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='105, 200,114, 200,114, 182,105, 182'>\n", + "Variable: ta-850Value: 0.42
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='114, 200,122, 200,122, 182,114, 182'>\n", + "Variable: ta-850Value: -0.0765
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='122, 200,130, 200,130, 182,122, 182'>\n", + "Variable: ta-850Value: 0.688
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='130, 200,138, 200,138, 182,130, 182'>\n", + "Variable: ta-850Value: 0.385
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='138, 200,147, 200,147, 182,138, 182'>\n", + "Variable: ta-850Value: -0.209
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='147, 200,155, 200,155, 182,147, 182'>\n", + "Variable: ta-850Value: -0.168
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='155, 200,163, 200,163, 182,155, 182'>\n", + "Variable: ta-850Value: 1.07
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='163, 200,171, 200,171, 182,163, 182'>\n", + "Variable: ta-850Value: 0.887
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='171, 200,180, 200,180, 182,171, 182'>\n", + "Variable: tasValue: -0.0626
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='40, 182,48, 182,48, 165,40, 165'>\n", + "Variable: tasValue: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='48, 182,56, 182,56, 165,48, 165'>\n", + "Variable: tasValue: -0.183
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='56, 182,64, 182,64, 165,56, 165'>\n", + "Variable: tasValue: 0.0229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='64, 182,72, 182,72, 165,64, 165'>\n", + "Variable: tasValue: -0.0014
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='72, 182,81, 182,81, 165,72, 165'>\n", + "Variable: tasValue: 0.0276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='81, 182,89, 182,89, 165,81, 165'>\n", + "Variable: tasValue: 0.0463
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='89, 182,97, 182,97, 165,89, 165'>\n", + "Variable: tasValue: 0.0327
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='97, 182,105, 182,105, 165,97, 165'>\n", + "Variable: tasValue: 0.365
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='105, 182,114, 182,114, 165,105, 165'>\n", + "Variable: tasValue: 0.477
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='114, 182,122, 182,122, 165,114, 165'>\n", + "Variable: tasValue: -0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='122, 182,130, 182,130, 165,122, 165'>\n", + "Variable: tasValue: 0.165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='130, 182,138, 182,138, 165,130, 165'>\n", + "Variable: tasValue: -0.022
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='138, 182,147, 182,147, 165,138, 165'>\n", + "Variable: tasValue: -0.147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='147, 182,155, 182,155, 165,147, 165'>\n", + "Variable: tasValue: -0.372
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='155, 182,163, 182,163, 165,155, 165'>\n", + "Variable: tasValue: 0.147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='163, 182,171, 182,171, 165,163, 165'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='171, 182,180, 182,180, 165,171, 165'>\n", + "Variable: ua-200Value: -0.0273
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='40, 165,48, 165,48, 148,40, 148'>\n", + "Variable: ua-200Value: -0.0924
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='48, 165,56, 165,56, 148,48, 148'>\n", + "Variable: ua-200Value: 0.217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='56, 165,64, 165,64, 148,56, 148'>\n", + "Variable: ua-200Value: -0.0341
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='64, 165,72, 165,72, 148,64, 148'>\n", + "Variable: ua-200Value: -0.0598
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='72, 165,81, 165,81, 148,72, 148'>\n", + "Variable: ua-200Value: -0.256
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='81, 165,89, 165,89, 148,81, 148'>\n", + "Variable: ua-200Value: -0.064
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='89, 165,97, 165,97, 148,89, 148'>\n", + "Variable: ua-200Value: 0.139
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='97, 165,105, 165,105, 148,97, 148'>\n", + "Variable: ua-200Value: 0.384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='105, 165,114, 165,114, 148,105, 148'>\n", + "Variable: ua-200Value: 0.422
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='114, 165,122, 165,122, 148,114, 148'>\n", + "Variable: ua-200Value: 0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='122, 165,130, 165,130, 148,122, 148'>\n", + "Variable: ua-200Value: -0.033
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='130, 165,138, 165,138, 148,130, 148'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='138, 165,147, 165,147, 148,138, 148'>\n", + "Variable: ua-200Value: -0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='147, 165,155, 165,155, 148,147, 148'>\n", + "Variable: ua-200Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='155, 165,163, 165,163, 148,155, 148'>\n", + "Variable: ua-200Value: 0.207
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='163, 165,171, 165,171, 148,163, 148'>\n", + "Variable: ua-200Value: 0.567
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='171, 165,180, 165,180, 148,171, 148'>\n", + "Variable: ua-850Value: -0.184
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='40, 148,48, 148,48, 131,40, 131'>\n", + "Variable: ua-850Value: -0.4
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='48, 148,56, 148,56, 131,48, 131'>\n", + "Variable: ua-850Value: -0.223
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='56, 148,64, 148,64, 131,56, 131'>\n", + "Variable: ua-850Value: 0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='64, 148,72, 148,72, 131,64, 131'>\n", + "Variable: ua-850Value: 0.0698
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='72, 148,81, 148,81, 131,72, 131'>\n", + "Variable: ua-850Value: -0.349
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='81, 148,89, 148,89, 131,81, 131'>\n", + "Variable: ua-850Value: 0.0862
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='89, 148,97, 148,97, 131,89, 131'>\n", + "Variable: ua-850Value: 0.0869
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='97, 148,105, 148,105, 131,97, 131'>\n", + "Variable: ua-850Value: -0.0165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='105, 148,114, 148,114, 131,105, 131'>\n", + "Variable: ua-850Value: 0.517
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='114, 148,122, 148,122, 131,114, 131'>\n", + "Variable: ua-850Value: -0.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='122, 148,130, 148,130, 131,122, 131'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='130, 148,138, 148,138, 131,130, 131'>\n", + "Variable: ua-850Value: -0.0658
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='138, 148,147, 148,147, 131,138, 131'>\n", + "Variable: ua-850Value: -0.387
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='147, 148,155, 148,155, 131,147, 131'>\n", + "Variable: ua-850Value: 0.00197
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='155, 148,163, 148,163, 131,155, 131'>\n", + "Variable: ua-850Value: 0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='163, 148,171, 148,171, 131,163, 131'>\n", + "Variable: ua-850Value: 0.219
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='171, 148,180, 148,180, 131,171, 131'>\n", + "Variable: va-200Value: -0.0667
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='40, 131,48, 131,48, 114,40, 114'>\n", + "Variable: va-200Value: -0.165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='48, 131,56, 131,56, 114,48, 114'>\n", + "Variable: va-200Value: 0.0304
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='56, 131,64, 131,64, 114,56, 114'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='64, 131,72, 131,72, 114,64, 114'>\n", + "Variable: va-200Value: -0.0515
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='72, 131,81, 131,81, 114,72, 114'>\n", + "Variable: va-200Value: -0.108
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='81, 131,89, 131,89, 114,81, 114'>\n", + "Variable: va-200Value: -0.0312
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='89, 131,97, 131,97, 114,89, 114'>\n", + "Variable: va-200Value: 0.192
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='97, 131,105, 131,105, 114,97, 114'>\n", + "Variable: va-200Value: 0.285
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='105, 131,114, 131,114, 114,105, 114'>\n", + "Variable: va-200Value: 0.117
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='114, 131,122, 131,122, 114,114, 114'>\n", + "Variable: va-200Value: -0.0127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='122, 131,130, 131,130, 114,122, 114'>\n", + "Variable: va-200Value: 0.0987
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='130, 131,138, 131,138, 114,130, 114'>\n", + "Variable: va-200Value: 0.0346
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='138, 131,147, 131,147, 114,138, 114'>\n", + "Variable: va-200Value: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='147, 131,155, 131,155, 114,147, 114'>\n", + "Variable: va-200Value: -0.00591
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='155, 131,163, 131,163, 114,155, 114'>\n", + "Variable: va-200Value: 0.0641
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='163, 131,171, 131,171, 114,163, 114'>\n", + "Variable: va-200Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='171, 131,180, 131,180, 114,171, 114'>\n", + "Variable: va-850Value: -0.0767
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='40, 114,48, 114,48, 97,40, 97'>\n", + "Variable: va-850Value: -0.136
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='48, 114,56, 114,56, 97,48, 97'>\n", + "Variable: va-850Value: -0.0203
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='56, 114,64, 114,64, 97,56, 97'>\n", + "Variable: va-850Value: 0.0753
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='64, 114,72, 114,72, 97,64, 97'>\n", + "Variable: va-850Value: 0.0347
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='72, 114,81, 114,81, 97,72, 97'>\n", + "Variable: va-850Value: -0.252
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='81, 114,89, 114,89, 97,81, 97'>\n", + "Variable: va-850Value: 0.0521
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='89, 114,97, 114,97, 97,89, 97'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='97, 114,105, 114,105, 97,97, 97'>\n", + "Variable: va-850Value: 0.227
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='105, 114,114, 114,114, 97,105, 97'>\n", + "Variable: va-850Value: 0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='114, 114,122, 114,122, 97,114, 97'>\n", + "Variable: va-850Value: -0.0854
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='122, 114,130, 114,130, 97,122, 97'>\n", + "Variable: va-850Value: 0.013
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='130, 114,138, 114,138, 97,130, 97'>\n", + "Variable: va-850Value: -0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='138, 114,147, 114,147, 97,138, 97'>\n", + "Variable: va-850Value: -0.151
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='147, 114,155, 114,155, 97,147, 97'>\n", + "Variable: va-850Value: -0.0724
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='155, 114,163, 114,163, 97,155, 97'>\n", + "Variable: va-850Value: 0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='163, 114,171, 114,171, 97,163, 97'>\n", + "Variable: va-850Value: 0.479
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='171, 114,180, 114,180, 97,171, 97'>\n", + "Variable: zg-500Value: 0.353
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='40, 97,48, 97,48, 80,40, 80'>\n", + "Variable: zg-500Value: -0.0292
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='48, 97,56, 97,56, 80,48, 80'>\n", + "Variable: zg-500Value: -0.45
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='56, 97,64, 97,64, 80,56, 80'>\n", + "Variable: zg-500Value: -0.213
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='64, 97,72, 97,72, 80,64, 80'>\n", + "Variable: zg-500Value: -0.236
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='72, 97,81, 97,81, 80,72, 80'>\n", + "Variable: zg-500Value: -0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='81, 97,89, 97,89, 80,81, 80'>\n", + "Variable: zg-500Value: -0.195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='89, 97,97, 97,97, 80,89, 80'>\n", + "Variable: zg-500Value: -0.0451
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='97, 97,105, 97,105, 80,97, 80'>\n", + "Variable: zg-500Value: 0.0837
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='105, 97,114, 97,114, 80,105, 80'>\n", + "Variable: zg-500Value: 1.05
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='114, 97,122, 97,122, 80,114, 80'>\n", + "Variable: zg-500Value: 0.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='122, 97,130, 97,130, 80,122, 80'>\n", + "Variable: zg-500Value: 1.34
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='130, 97,138, 97,138, 80,130, 80'>\n", + "Variable: zg-500Value: 1.04
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='138, 97,147, 97,147, 80,138, 80'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='147, 97,155, 97,155, 80,147, 80'>\n", + "Variable: zg-500Value: -0.249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='155, 97,163, 97,163, 80,155, 80'>\n", + "Variable: zg-500Value: 0.539
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='163, 97,171, 97,171, 80,163, 80'>\n", + "Variable: zg-500Value: 0.0292
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='171, 97,180, 97,180, 80,171, 80'>\n", + "Variable: prValue: 0.00163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='220, 320,228, 320,228, 302,220, 302'>\n", + "Variable: prValue: 0.161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='228, 320,236, 320,236, 302,228, 302'>\n", + "Variable: prValue: 0.265
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='236, 320,244, 320,244, 302,236, 302'>\n", + "Variable: prValue: -0.139
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='244, 320,252, 320,252, 302,244, 302'>\n", + "Variable: prValue: -0.15
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='252, 320,261, 320,261, 302,252, 302'>\n", + "Variable: prValue: -0.0558
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='261, 320,269, 320,269, 302,261, 302'>\n", + "Variable: prValue: -0.123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='269, 320,277, 320,277, 302,269, 302'>\n", + "Variable: prValue: -0.108
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='277, 320,285, 320,285, 302,277, 302'>\n", + "Variable: prValue: 0.379
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='285, 320,294, 320,294, 302,285, 302'>\n", + "Variable: prValue: -0.137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='294, 320,302, 320,302, 302,294, 302'>\n", + "Variable: prValue: 0.0417
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='302, 320,310, 320,310, 302,302, 302'>\n", + "Variable: prValue: 0.118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='310, 320,318, 320,318, 302,310, 302'>\n", + "Variable: prValue: -0.026
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='318, 320,327, 320,327, 302,318, 302'>\n", + "Variable: prValue: 0.0975
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='327, 320,335, 320,335, 302,327, 302'>\n", + "Variable: prValue: -0.0179
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='335, 320,343, 320,343, 302,335, 302'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='343, 320,351, 320,351, 302,343, 302'>\n", + "Variable: prValue: 0.0439
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='351, 320,360, 320,360, 302,351, 302'>\n", + "Variable: prwValue: -0.0424
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='220, 302,228, 302,228, 285,220, 285'>\n", + "Variable: prwValue: -0.0267
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='228, 302,236, 302,236, 285,228, 285'>\n", + "Variable: prwValue: 0.0311
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='236, 302,244, 302,244, 285,236, 285'>\n", + "Variable: prwValue: 0.0336
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='244, 302,252, 302,252, 285,244, 285'>\n", + "Variable: prwValue: 0.0383
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='252, 302,261, 302,261, 285,252, 285'>\n", + "Variable: prwValue: 0.0285
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='261, 302,269, 302,269, 285,261, 285'>\n", + "Variable: prwValue: 0.0366
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='269, 302,277, 302,277, 285,269, 285'>\n", + "Variable: prwValue: 0.0676
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='277, 302,285, 302,285, 285,277, 285'>\n", + "Variable: prwValue: -0.0091
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='285, 302,294, 302,294, 285,285, 285'>\n", + "Variable: prwValue: -0.0728
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='294, 302,302, 302,302, 285,294, 285'>\n", + "Variable: prwValue: 0.0091
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='302, 302,310, 302,310, 285,302, 285'>\n", + "Variable: prwValue: -0.0666
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='310, 302,318, 302,318, 285,310, 285'>\n", + "Variable: prwValue: -0.0671
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='318, 302,327, 302,327, 285,318, 285'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='327, 302,335, 302,335, 285,327, 285'>\n", + "Variable: prwValue: 0.0161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='335, 302,343, 302,343, 285,335, 285'>\n", + "Variable: prwValue: -0.0321
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='343, 302,351, 302,351, 285,343, 285'>\n", + "Variable: prwValue: -0.0115
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='351, 302,360, 302,360, 285,351, 285'>\n", + "Variable: pslValue: -0.079
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='220, 285,228, 285,228, 268,220, 268'>\n", + "Variable: pslValue: -0.202
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='228, 285,236, 285,236, 268,228, 268'>\n", + "Variable: pslValue: -0.217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='236, 285,244, 285,244, 268,236, 268'>\n", + "Variable: pslValue: -0.0245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='244, 285,252, 285,252, 268,244, 268'>\n", + "Variable: pslValue: -0.0869
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='252, 285,261, 285,261, 268,252, 268'>\n", + "Variable: pslValue: -0.421
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='261, 285,269, 285,269, 268,261, 268'>\n", + "Variable: pslValue: 0.00992
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='269, 285,277, 285,277, 268,269, 268'>\n", + "Variable: pslValue: 0.0347
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='277, 285,285, 285,285, 268,277, 268'>\n", + "Variable: pslValue: 0.442
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='285, 285,294, 285,294, 268,285, 268'>\n", + "Variable: pslValue: 0.683
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='294, 285,302, 285,302, 268,294, 268'>\n", + "Variable: pslValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='302, 285,310, 285,310, 268,302, 268'>\n", + "Variable: pslValue: 0.207
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='310, 285,318, 285,318, 268,310, 268'>\n", + "Variable: pslValue: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='318, 285,327, 285,327, 268,318, 268'>\n", + "Variable: pslValue: -0.259
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='327, 285,335, 285,335, 268,327, 268'>\n", + "Variable: pslValue: 0.156
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='335, 285,343, 285,343, 268,335, 268'>\n", + "Variable: pslValue: 0.0901
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='343, 285,351, 285,351, 268,343, 268'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='351, 285,360, 285,360, 268,351, 268'>\n", + "Variable: rltcreValue: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='220, 268,228, 268,228, 251,220, 251'>\n", + "Variable: rltcreValue: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='228, 268,236, 268,236, 251,228, 251'>\n", + "Variable: rltcreValue: -0.00327
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='236, 268,244, 268,244, 251,236, 251'>\n", + "Variable: rltcreValue: 0.000701
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='244, 268,252, 268,252, 251,244, 251'>\n", + "Variable: rltcreValue: -0.0266
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='252, 268,261, 268,261, 251,252, 251'>\n", + "Variable: rltcreValue: 0.0667
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='261, 268,269, 268,269, 251,261, 251'>\n", + "Variable: rltcreValue: -0.0148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='269, 268,277, 268,277, 251,269, 251'>\n", + "Variable: rltcreValue: 0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='277, 268,285, 268,285, 251,277, 251'>\n", + "Variable: rltcreValue: 0.226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='285, 268,294, 268,294, 251,285, 251'>\n", + "Variable: rltcreValue: 0.0688
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='294, 268,302, 268,302, 251,294, 251'>\n", + "Variable: rltcreValue: 0.148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='302, 268,310, 268,310, 251,302, 251'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='310, 268,318, 268,318, 251,310, 251'>\n", + "Variable: rltcreValue: -0.124
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='318, 268,327, 268,327, 251,318, 251'>\n", + "Variable: rltcreValue: -0.188
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='327, 268,335, 268,335, 251,327, 251'>\n", + "Variable: rltcreValue: 0.0248
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='335, 268,343, 268,343, 251,335, 251'>\n", + "Variable: rltcreValue: -0.115
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='343, 268,351, 268,351, 251,343, 251'>\n", + "Variable: rltcreValue: 0.388
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='351, 268,360, 268,360, 251,351, 251'>\n", + "Variable: rlutValue: -0.156
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='220, 251,228, 251,228, 234,220, 234'>\n", + "Variable: rlutValue: 0.0586
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='228, 251,236, 251,236, 234,228, 234'>\n", + "Variable: rlutValue: 0.166
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='236, 251,244, 251,244, 234,236, 234'>\n", + "Variable: rlutValue: -0.056
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='244, 251,252, 251,252, 234,244, 234'>\n", + "Variable: rlutValue: -0.0777
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='252, 251,261, 251,261, 234,252, 234'>\n", + "Variable: rlutValue: -0.151
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='261, 251,269, 251,269, 234,261, 234'>\n", + "Variable: rlutValue: -0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='269, 251,277, 251,277, 234,269, 234'>\n", + "Variable: rlutValue: 0.056
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='277, 251,285, 251,285, 234,277, 234'>\n", + "Variable: rlutValue: 0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='285, 251,294, 251,294, 234,285, 234'>\n", + "Variable: rlutValue: 0.0931
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='294, 251,302, 251,302, 234,294, 234'>\n", + "Variable: rlutValue: 0.127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='302, 251,310, 251,310, 234,302, 234'>\n", + "Variable: rlutValue: 0.0335
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='310, 251,318, 251,318, 234,310, 234'>\n", + "Variable: rlutValue: -0.0905
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='318, 251,327, 251,327, 234,318, 234'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='327, 251,335, 251,335, 234,327, 234'>\n", + "Variable: rlutValue: -0.036
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='335, 251,343, 251,343, 234,335, 234'>\n", + "Variable: rlutValue: -0.00425
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='343, 251,351, 251,351, 234,343, 234'>\n", + "Variable: rlutValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='351, 251,360, 251,360, 234,351, 234'>\n", + "Variable: rstcreValue: -0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='220, 234,228, 234,228, 217,220, 217'>\n", + "Variable: rstcreValue: -0.181
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='228, 234,236, 234,236, 217,228, 217'>\n", + "Variable: rstcreValue: 0.0351
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='236, 234,244, 234,244, 217,236, 217'>\n", + "Variable: rstcreValue: 0.174
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='244, 234,252, 234,252, 217,244, 217'>\n", + "Variable: rstcreValue: 0.144
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='252, 234,261, 234,261, 217,252, 217'>\n", + "Variable: rstcreValue: 0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='261, 234,269, 234,269, 217,261, 217'>\n", + "Variable: rstcreValue: 0.172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='269, 234,277, 234,277, 217,269, 217'>\n", + "Variable: rstcreValue: 0.276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='277, 234,285, 234,285, 217,277, 217'>\n", + "Variable: rstcreValue: 0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='285, 234,294, 234,294, 217,285, 217'>\n", + "Variable: rstcreValue: -0.0986
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='294, 234,302, 234,302, 217,294, 217'>\n", + "Variable: rstcreValue: -0.19
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='302, 234,310, 234,310, 217,302, 217'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='310, 234,318, 234,318, 217,310, 217'>\n", + "Variable: rstcreValue: -0.042
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='318, 234,327, 234,327, 217,318, 217'>\n", + "Variable: rstcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='327, 234,335, 234,335, 217,327, 217'>\n", + "Variable: rstcreValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='335, 234,343, 234,343, 217,335, 217'>\n", + "Variable: rstcreValue: -0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='343, 234,351, 234,351, 217,343, 217'>\n", + "Variable: rstcreValue: 0.0309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='351, 234,360, 234,360, 217,351, 217'>\n", + "Variable: ta-200Value: 0.187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='220, 217,228, 217,228, 200,220, 200'>\n", + "Variable: ta-200Value: -0.218
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='228, 217,236, 217,236, 200,228, 200'>\n", + "Variable: ta-200Value: -0.389
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='236, 217,244, 217,244, 200,236, 200'>\n", + "Variable: ta-200Value: -0.0223
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='244, 217,252, 217,252, 200,244, 200'>\n", + "Variable: ta-200Value: -0.0538
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='252, 217,261, 217,261, 200,252, 200'>\n", + "Variable: ta-200Value: 0.253
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='261, 217,269, 217,269, 200,261, 200'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='269, 217,277, 217,277, 200,269, 200'>\n", + "Variable: ta-200Value: 0.527
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='277, 217,285, 217,285, 200,277, 200'>\n", + "Variable: ta-200Value: 0.153
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='285, 217,294, 217,294, 200,285, 200'>\n", + "Variable: ta-200Value: 1.46
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='294, 217,302, 217,302, 200,294, 200'>\n", + "Variable: ta-200Value: -0.375
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='302, 217,310, 217,310, 200,302, 200'>\n", + "Variable: ta-200Value: -0.0582
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='310, 217,318, 217,318, 200,310, 200'>\n", + "Variable: ta-200Value: -0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='318, 217,327, 217,327, 200,318, 200'>\n", + "Variable: ta-200Value: -0.427
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='327, 217,335, 217,335, 200,327, 200'>\n", + "Variable: ta-200Value: 0.6
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='335, 217,343, 217,343, 200,335, 200'>\n", + "Variable: ta-200Value: 0.771
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='343, 217,351, 217,351, 200,343, 200'>\n", + "Variable: ta-200Value: 0.0792
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='351, 217,360, 217,360, 200,351, 200'>\n", + "Variable: ta-850Value: 0.69
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='220, 200,228, 200,228, 182,220, 182'>\n", + "Variable: ta-850Value: -0.0808
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='228, 200,236, 200,236, 182,228, 182'>\n", + "Variable: ta-850Value: -0.298
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='236, 200,244, 200,244, 182,236, 182'>\n", + "Variable: ta-850Value: -0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='244, 200,252, 200,252, 182,244, 182'>\n", + "Variable: ta-850Value: -0.131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='252, 200,261, 200,261, 182,252, 182'>\n", + "Variable: ta-850Value: 0.107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='261, 200,269, 200,269, 182,261, 182'>\n", + "Variable: ta-850Value: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='269, 200,277, 200,277, 182,269, 182'>\n", + "Variable: ta-850Value: -0.0249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='277, 200,285, 200,285, 182,277, 182'>\n", + "Variable: ta-850Value: 0.561
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='285, 200,294, 200,294, 182,285, 182'>\n", + "Variable: ta-850Value: 0.486
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='294, 200,302, 200,302, 182,294, 182'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='302, 200,310, 200,310, 182,302, 182'>\n", + "Variable: ta-850Value: 0.864
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='310, 200,318, 200,318, 182,310, 182'>\n", + "Variable: ta-850Value: 0.473
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='318, 200,327, 200,327, 182,318, 182'>\n", + "Variable: ta-850Value: -0.073
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='327, 200,335, 200,335, 182,327, 182'>\n", + "Variable: ta-850Value: -0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='335, 200,343, 200,343, 182,335, 182'>\n", + "Variable: ta-850Value: 0.989
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='343, 200,351, 200,351, 182,343, 182'>\n", + "Variable: ta-850Value: 0.872
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='351, 200,360, 200,360, 182,351, 182'>\n", + "Variable: tasValue: -0.0373
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='220, 182,228, 182,228, 165,220, 165'>\n", + "Variable: tasValue: -0.0597
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='228, 182,236, 182,236, 165,228, 165'>\n", + "Variable: tasValue: -0.189
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='236, 182,244, 182,244, 165,236, 165'>\n", + "Variable: tasValue: -0.0919
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='244, 182,252, 182,252, 165,244, 165'>\n", + "Variable: tasValue: -0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='252, 182,261, 182,261, 165,252, 165'>\n", + "Variable: tasValue: 0.0306
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='261, 182,269, 182,269, 165,261, 165'>\n", + "Variable: tasValue: -0.0852
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='269, 182,277, 182,277, 165,269, 165'>\n", + "Variable: tasValue: 0.0114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='277, 182,285, 182,285, 165,277, 165'>\n", + "Variable: tasValue: 0.52
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='285, 182,294, 182,294, 165,285, 165'>\n", + "Variable: tasValue: 0.505
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='294, 182,302, 182,302, 165,294, 165'>\n", + "Variable: tasValue: -0.216
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='302, 182,310, 182,310, 165,302, 165'>\n", + "Variable: tasValue: 0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='310, 182,318, 182,318, 165,310, 165'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='318, 182,327, 182,327, 165,318, 165'>\n", + "Variable: tasValue: 0.0361
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='327, 182,335, 182,335, 165,327, 165'>\n", + "Variable: tasValue: -0.3
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='335, 182,343, 182,343, 165,335, 165'>\n", + "Variable: tasValue: 0.246
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='343, 182,351, 182,351, 165,343, 165'>\n", + "Variable: tasValue: 0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='351, 182,360, 182,360, 165,351, 165'>\n", + "Variable: ua-200Value: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='220, 165,228, 165,228, 148,220, 148'>\n", + "Variable: ua-200Value: -0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='228, 165,236, 165,236, 148,228, 148'>\n", + "Variable: ua-200Value: 0.0461
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='236, 165,244, 165,244, 148,236, 148'>\n", + "Variable: ua-200Value: -0.0956
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='244, 165,252, 165,252, 148,244, 148'>\n", + "Variable: ua-200Value: -0.0981
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='252, 165,261, 165,261, 148,252, 148'>\n", + "Variable: ua-200Value: -0.224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='261, 165,269, 165,269, 148,261, 148'>\n", + "Variable: ua-200Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='269, 165,277, 165,277, 148,269, 148'>\n", + "Variable: ua-200Value: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='277, 165,285, 165,285, 148,277, 148'>\n", + "Variable: ua-200Value: 0.22
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='285, 165,294, 165,294, 148,285, 148'>\n", + "Variable: ua-200Value: 0.37
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='294, 165,302, 165,302, 148,294, 148'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='302, 165,310, 165,310, 148,302, 148'>\n", + "Variable: ua-200Value: 0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='310, 165,318, 165,318, 148,310, 148'>\n", + "Variable: ua-200Value: -0.0143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='318, 165,327, 165,327, 148,318, 148'>\n", + "Variable: ua-200Value: -0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='327, 165,335, 165,335, 148,327, 148'>\n", + "Variable: ua-200Value: 0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='335, 165,343, 165,343, 148,335, 148'>\n", + "Variable: ua-200Value: 0.0527
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='343, 165,351, 165,351, 148,343, 148'>\n", + "Variable: ua-200Value: 0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='351, 165,360, 165,360, 148,351, 148'>\n", + "Variable: ua-850Value: -0.0967
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='220, 148,228, 148,228, 131,220, 131'>\n", + "Variable: ua-850Value: -0.247
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='228, 148,236, 148,236, 131,228, 131'>\n", + "Variable: ua-850Value: -0.0967
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='236, 148,244, 148,244, 131,236, 131'>\n", + "Variable: ua-850Value: 0.0589
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='244, 148,252, 148,252, 131,244, 131'>\n", + "Variable: ua-850Value: 0.0186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='252, 148,261, 148,261, 131,252, 131'>\n", + "Variable: ua-850Value: -0.279
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='261, 148,269, 148,269, 131,261, 131'>\n", + "Variable: ua-850Value: 0.0222
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='269, 148,277, 148,277, 131,269, 131'>\n", + "Variable: ua-850Value: -0.0539
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='277, 148,285, 148,285, 131,277, 131'>\n", + "Variable: ua-850Value: 0.0871
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='285, 148,294, 148,294, 131,285, 131'>\n", + "Variable: ua-850Value: 0.61
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='294, 148,302, 148,302, 131,294, 131'>\n", + "Variable: ua-850Value: -0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='302, 148,310, 148,310, 131,302, 131'>\n", + "Variable: ua-850Value: 0.0473
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='310, 148,318, 148,318, 131,310, 131'>\n", + "Variable: ua-850Value: -0.0131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='318, 148,327, 148,327, 131,318, 131'>\n", + "Variable: ua-850Value: -0.343
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='327, 148,335, 148,335, 131,327, 131'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='335, 148,343, 148,343, 131,335, 131'>\n", + "Variable: ua-850Value: 0.131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='343, 148,351, 148,351, 131,343, 131'>\n", + "Variable: ua-850Value: 0.0232
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='351, 148,360, 148,360, 131,351, 131'>\n", + "Variable: va-200Value: 0.0278
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='220, 131,228, 131,228, 114,220, 114'>\n", + "Variable: va-200Value: -0.187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='228, 131,236, 131,236, 114,228, 114'>\n", + "Variable: va-200Value: -0.0308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='236, 131,244, 131,244, 114,236, 114'>\n", + "Variable: va-200Value: -0.00845
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='244, 131,252, 131,252, 114,244, 114'>\n", + "Variable: va-200Value: -0.0328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='252, 131,261, 131,261, 114,252, 114'>\n", + "Variable: va-200Value: -0.136
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='261, 131,269, 131,269, 114,261, 114'>\n", + "Variable: va-200Value: 0.0149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='269, 131,277, 131,277, 114,269, 114'>\n", + "Variable: va-200Value: -0.0597
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='277, 131,285, 131,285, 114,277, 114'>\n", + "Variable: va-200Value: 0.158
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='285, 131,294, 131,294, 114,285, 114'>\n", + "Variable: va-200Value: 0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='294, 131,302, 131,302, 114,294, 114'>\n", + "Variable: va-200Value: -0.0975
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='302, 131,310, 131,310, 114,302, 114'>\n", + "Variable: va-200Value: 0.1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='310, 131,318, 131,318, 114,310, 114'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='318, 131,327, 131,327, 114,318, 114'>\n", + "Variable: va-200Value: -0.228
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='327, 131,335, 131,335, 114,327, 114'>\n", + "Variable: va-200Value: 0.0477
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='335, 131,343, 131,343, 114,335, 114'>\n", + "Variable: va-200Value: 0.0845
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='343, 131,351, 131,351, 114,343, 114'>\n", + "Variable: va-200Value: 0.575
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='351, 131,360, 131,360, 114,351, 114'>\n", + "Variable: va-850Value: -0.0947
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='220, 114,228, 114,228, 97,220, 97'>\n", + "Variable: va-850Value: -0.141
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='228, 114,236, 114,236, 97,228, 97'>\n", + "Variable: va-850Value: -0.0195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='236, 114,244, 114,244, 97,236, 97'>\n", + "Variable: va-850Value: 0.0638
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='244, 114,252, 114,252, 97,244, 97'>\n", + "Variable: va-850Value: 0.0381
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='252, 114,261, 114,261, 97,252, 97'>\n", + "Variable: va-850Value: -0.144
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='261, 114,269, 114,269, 97,261, 97'>\n", + "Variable: va-850Value: 0.0802
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='269, 114,277, 114,277, 97,269, 97'>\n", + "Variable: va-850Value: -0.0648
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='277, 114,285, 114,285, 97,277, 97'>\n", + "Variable: va-850Value: 0.269
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='285, 114,294, 114,294, 97,285, 97'>\n", + "Variable: va-850Value: 0.242
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='294, 114,302, 114,302, 97,294, 97'>\n", + "Variable: va-850Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='302, 114,310, 114,310, 97,302, 97'>\n", + "Variable: va-850Value: 0.0772
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='310, 114,318, 114,318, 97,310, 97'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='318, 114,327, 114,327, 97,318, 97'>\n", + "Variable: va-850Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='327, 114,335, 114,335, 97,327, 97'>\n", + "Variable: va-850Value: -0.0535
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='335, 114,343, 114,343, 97,335, 97'>\n", + "Variable: va-850Value: 0.277
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='343, 114,351, 114,351, 97,343, 97'>\n", + "Variable: va-850Value: 0.328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='351, 114,360, 114,360, 97,351, 97'>\n", + "Variable: zg-500Value: 0.29
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='220, 97,228, 97,228, 80,220, 80'>\n", + "Variable: zg-500Value: 0.0172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='228, 97,236, 97,236, 80,228, 80'>\n", + "Variable: zg-500Value: -0.345
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='236, 97,244, 97,244, 80,236, 80'>\n", + "Variable: zg-500Value: -0.276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='244, 97,252, 97,252, 80,244, 80'>\n", + "Variable: zg-500Value: -0.308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='252, 97,261, 97,261, 80,252, 80'>\n", + "Variable: zg-500Value: -0.309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='261, 97,269, 97,269, 80,261, 80'>\n", + "Variable: zg-500Value: -0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='269, 97,277, 97,277, 80,269, 80'>\n", + "Variable: zg-500Value: -0.252
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='277, 97,285, 97,285, 80,277, 80'>\n", + "Variable: zg-500Value: 0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='285, 97,294, 97,294, 80,285, 80'>\n", + "Variable: zg-500Value: 1.02
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='294, 97,302, 97,302, 80,294, 80'>\n", + "Variable: zg-500Value: 0.0588
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='302, 97,310, 97,310, 80,302, 80'>\n", + "Variable: zg-500Value: 1.03
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='310, 97,318, 97,318, 80,310, 80'>\n", + "Variable: zg-500Value: 0.749
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='318, 97,327, 97,327, 80,318, 80'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='327, 97,335, 97,335, 80,327, 80'>\n", + "Variable: zg-500Value: -0.249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='335, 97,343, 97,343, 80,335, 80'>\n", + "Variable: zg-500Value: 0.418
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='343, 97,351, 97,351, 80,343, 80'>\n", + "Variable: zg-500Value: -0.0172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='351, 97,360, 97,360, 80,351, 80'>\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Prepare areas target and tooltips for first plot\n", + "click_areas1 = vcs.utils.meshToPngCoords(mesh1,template1,[meshfill1.datawc_x1,meshfill1.datawc_x2,meshfill1.datawc_y1,meshfill1.datawc_y2],png=\"clickable2.png\")\n", + "targets1, tooltips1, extras1 = createTargets(rms_xy[...,0],targets_template)\n", + "\n", + "# Prepare areas target and tooltips for second plot\n", + "click_areas2 = vcs.utils.meshToPngCoords(mesh2,template2,[meshfill2.datawc_x1,meshfill2.datawc_x2,meshfill2.datawc_y1,meshfill2.datawc_y2],png=\"clickable2.png\")\n", + "targets2, tooltips2, extras2 = createTargets(rms_xy[...,1],targets_template)\n", + "\n", + "# Merge together all these\n", + "targets = numpy.concatenate((targets1, targets2))\n", + "tooltips = numpy.concatenate((tooltips1,tooltips2))\n", + "extras = numpy.concatenate((extras1,extras2))\n", + "click_areas = numpy.concatenate((click_areas1,click_areas2))\n", + "\n", + "geo = x.geometry()\n", + "# create the html map element\n", + "map_element = vcs.utils.mapPng(\"clickable2.png\",click_areas,targets,tooltips,extras=extras,width=geo[\"width\"],height=geo[\"height\"])\n", + "\n", + "# Geenrate html file\n", + "write_html(\"clickable_portrait_2.html\", map_element)\n", + "viz(\"clickable_portrait_2.html\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Multiple Sources Within A Single Portrait Plot" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/ipykernel_launcher.py:24: UserWarning: Warning: converting a masked element to nan.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n" + ] + }, + { + "data": { + "text/html": [ + "

Clickable Portraits Plots

\n", + "Variable: prValue: 0.00163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='56, 323,56, 314,48, 314,48, 329,56, 323'>\n", + "Variable: prValue: 0.161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='73, 323,73, 314,64, 314,64, 329,73, 323'>\n", + "Variable: prValue: 0.265
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='90, 323,90, 314,81, 314,81, 329,90, 323'>\n", + "Variable: prValue: -0.139
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='107, 323,107, 314,98, 314,98, 329,107, 323'>\n", + "Variable: prValue: -0.15
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='124, 323,124, 314,115, 314,115, 329,124, 323'>\n", + "Variable: prValue: -0.0558
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='141, 323,141, 314,132, 314,132, 329,141, 323'>\n", + "Variable: prValue: -0.123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='158, 323,158, 314,149, 314,149, 329,158, 323'>\n", + "Variable: prValue: -0.108
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='175, 323,175, 314,166, 314,166, 329,175, 323'>\n", + "Variable: prValue: 0.379
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='192, 323,192, 314,183, 314,183, 329,192, 323'>\n", + "Variable: prValue: -0.137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='208, 323,208, 314,200, 314,200, 329,208, 323'>\n", + "Variable: prValue: 0.0417
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='225, 323,225, 314,217, 314,217, 329,225, 323'>\n", + "Variable: prValue: 0.118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='242, 323,242, 314,234, 314,234, 329,242, 323'>\n", + "Variable: prValue: -0.026
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='259, 323,259, 314,251, 314,251, 329,259, 323'>\n", + "Variable: prValue: 0.0975
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='276, 323,276, 314,268, 314,268, 329,276, 323'>\n", + "Variable: prValue: -0.0179
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='293, 323,293, 314,285, 314,285, 329,293, 323'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='310, 323,310, 314,302, 314,302, 329,310, 323'>\n", + "Variable: prValue: 0.0439
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='327, 323,327, 314,319, 314,319, 329,327, 323'>\n", + "Variable: prwValue: -0.0424
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='56, 305,56, 296,48, 296,48, 311,56, 305'>\n", + "Variable: prwValue: -0.0267
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='73, 305,73, 296,64, 296,64, 311,73, 305'>\n", + "Variable: prwValue: 0.0311
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='90, 305,90, 296,81, 296,81, 311,90, 305'>\n", + "Variable: prwValue: 0.0336
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='107, 305,107, 296,98, 296,98, 311,107, 305'>\n", + "Variable: prwValue: 0.0383
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='124, 305,124, 296,115, 296,115, 311,124, 305'>\n", + "Variable: prwValue: 0.0285
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='141, 305,141, 296,132, 296,132, 311,141, 305'>\n", + "Variable: prwValue: 0.0366
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='158, 305,158, 296,149, 296,149, 311,158, 305'>\n", + "Variable: prwValue: 0.0676
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='175, 305,175, 296,166, 296,166, 311,175, 305'>\n", + "Variable: prwValue: -0.0091
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='192, 305,192, 296,183, 296,183, 311,192, 305'>\n", + "Variable: prwValue: -0.0728
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='208, 305,208, 296,200, 296,200, 311,208, 305'>\n", + "Variable: prwValue: 0.0091
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='225, 305,225, 296,217, 296,217, 311,225, 305'>\n", + "Variable: prwValue: -0.0666
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='242, 305,242, 296,234, 296,234, 311,242, 305'>\n", + "Variable: prwValue: -0.0671
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='259, 305,259, 296,251, 296,251, 311,259, 305'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='276, 305,276, 296,268, 296,268, 311,276, 305'>\n", + "Variable: prwValue: 0.0161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='293, 305,293, 296,285, 296,285, 311,293, 305'>\n", + "Variable: prwValue: -0.0321
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='310, 305,310, 296,302, 296,302, 311,310, 305'>\n", + "Variable: prwValue: -0.0115
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='327, 305,327, 296,319, 296,319, 311,327, 305'>\n", + "Variable: pslValue: -0.079
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='56, 287,56, 278,48, 278,48, 293,56, 287'>\n", + "Variable: pslValue: -0.202
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='73, 287,73, 278,64, 278,64, 293,73, 287'>\n", + "Variable: pslValue: -0.217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='90, 287,90, 278,81, 278,81, 293,90, 287'>\n", + "Variable: pslValue: -0.0245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='107, 287,107, 278,98, 278,98, 293,107, 287'>\n", + "Variable: pslValue: -0.0869
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='124, 287,124, 278,115, 278,115, 293,124, 287'>\n", + "Variable: pslValue: -0.421
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='141, 287,141, 278,132, 278,132, 293,141, 287'>\n", + "Variable: pslValue: 0.00992
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='158, 287,158, 278,149, 278,149, 293,158, 287'>\n", + "Variable: pslValue: 0.0347
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='175, 287,175, 278,166, 278,166, 293,175, 287'>\n", + "Variable: pslValue: 0.442
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='192, 287,192, 278,183, 278,183, 293,192, 287'>\n", + "Variable: pslValue: 0.683
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='208, 287,208, 278,200, 278,200, 293,208, 287'>\n", + "Variable: pslValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='225, 287,225, 278,217, 278,217, 293,225, 287'>\n", + "Variable: pslValue: 0.207
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='242, 287,242, 278,234, 278,234, 293,242, 287'>\n", + "Variable: pslValue: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='259, 287,259, 278,251, 278,251, 293,259, 287'>\n", + "Variable: pslValue: -0.259
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='276, 287,276, 278,268, 278,268, 293,276, 287'>\n", + "Variable: pslValue: 0.156
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='293, 287,293, 278,285, 278,285, 293,293, 287'>\n", + "Variable: pslValue: 0.0901
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='310, 287,310, 278,302, 278,302, 293,310, 287'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='327, 287,327, 278,319, 278,319, 293,327, 287'>\n", + "Variable: rltcreValue: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='56, 269,56, 260,48, 260,48, 275,56, 269'>\n", + "Variable: rltcreValue: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='73, 269,73, 260,64, 260,64, 275,73, 269'>\n", + "Variable: rltcreValue: -0.00327
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='90, 269,90, 260,81, 260,81, 275,90, 269'>\n", + "Variable: rltcreValue: 0.000701
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='107, 269,107, 260,98, 260,98, 275,107, 269'>\n", + "Variable: rltcreValue: -0.0266
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='124, 269,124, 260,115, 260,115, 275,124, 269'>\n", + "Variable: rltcreValue: 0.0667
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='141, 269,141, 260,132, 260,132, 275,141, 269'>\n", + "Variable: rltcreValue: -0.0148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='158, 269,158, 260,149, 260,149, 275,158, 269'>\n", + "Variable: rltcreValue: 0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='175, 269,175, 260,166, 260,166, 275,175, 269'>\n", + "Variable: rltcreValue: 0.226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='192, 269,192, 260,183, 260,183, 275,192, 269'>\n", + "Variable: rltcreValue: 0.0688
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='208, 269,208, 260,200, 260,200, 275,208, 269'>\n", + "Variable: rltcreValue: 0.148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='225, 269,225, 260,217, 260,217, 275,225, 269'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='242, 269,242, 260,234, 260,234, 275,242, 269'>\n", + "Variable: rltcreValue: -0.124
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='259, 269,259, 260,251, 260,251, 275,259, 269'>\n", + "Variable: rltcreValue: -0.188
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='276, 269,276, 260,268, 260,268, 275,276, 269'>\n", + "Variable: rltcreValue: 0.0248
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='293, 269,293, 260,285, 260,285, 275,293, 269'>\n", + "Variable: rltcreValue: -0.115
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='310, 269,310, 260,302, 260,302, 275,310, 269'>\n", + "Variable: rltcreValue: 0.388
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='327, 269,327, 260,319, 260,319, 275,327, 269'>\n", + "Variable: rlutValue: -0.156
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='56, 251,56, 242,48, 242,48, 257,56, 251'>\n", + "Variable: rlutValue: 0.0586
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='73, 251,73, 242,64, 242,64, 257,73, 251'>\n", + "Variable: rlutValue: 0.166
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='90, 251,90, 242,81, 242,81, 257,90, 251'>\n", + "Variable: rlutValue: -0.056
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='107, 251,107, 242,98, 242,98, 257,107, 251'>\n", + "Variable: rlutValue: -0.0777
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='124, 251,124, 242,115, 242,115, 257,124, 251'>\n", + "Variable: rlutValue: -0.151
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='141, 251,141, 242,132, 242,132, 257,141, 251'>\n", + "Variable: rlutValue: -0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='158, 251,158, 242,149, 242,149, 257,158, 251'>\n", + "Variable: rlutValue: 0.056
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='175, 251,175, 242,166, 242,166, 257,175, 251'>\n", + "Variable: rlutValue: 0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='192, 251,192, 242,183, 242,183, 257,192, 251'>\n", + "Variable: rlutValue: 0.0931
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='208, 251,208, 242,200, 242,200, 257,208, 251'>\n", + "Variable: rlutValue: 0.127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='225, 251,225, 242,217, 242,217, 257,225, 251'>\n", + "Variable: rlutValue: 0.0335
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='242, 251,242, 242,234, 242,234, 257,242, 251'>\n", + "Variable: rlutValue: -0.0905
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='259, 251,259, 242,251, 242,251, 257,259, 251'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='276, 251,276, 242,268, 242,268, 257,276, 251'>\n", + "Variable: rlutValue: -0.036
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='293, 251,293, 242,285, 242,285, 257,293, 251'>\n", + "Variable: rlutValue: -0.00425
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='310, 251,310, 242,302, 242,302, 257,310, 251'>\n", + "Variable: rlutValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='327, 251,327, 242,319, 242,319, 257,327, 251'>\n", + "Variable: rstcreValue: -0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='56, 233,56, 224,48, 224,48, 239,56, 233'>\n", + "Variable: rstcreValue: -0.181
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='73, 233,73, 224,64, 224,64, 239,73, 233'>\n", + "Variable: rstcreValue: 0.0351
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='90, 233,90, 224,81, 224,81, 239,90, 233'>\n", + "Variable: rstcreValue: 0.174
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='107, 233,107, 224,98, 224,98, 239,107, 233'>\n", + "Variable: rstcreValue: 0.144
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='124, 233,124, 224,115, 224,115, 239,124, 233'>\n", + "Variable: rstcreValue: 0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='141, 233,141, 224,132, 224,132, 239,141, 233'>\n", + "Variable: rstcreValue: 0.172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='158, 233,158, 224,149, 224,149, 239,158, 233'>\n", + "Variable: rstcreValue: 0.276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='175, 233,175, 224,166, 224,166, 239,175, 233'>\n", + "Variable: rstcreValue: 0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='192, 233,192, 224,183, 224,183, 239,192, 233'>\n", + "Variable: rstcreValue: -0.0986
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='208, 233,208, 224,200, 224,200, 239,208, 233'>\n", + "Variable: rstcreValue: -0.19
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='225, 233,225, 224,217, 224,217, 239,225, 233'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='242, 233,242, 224,234, 224,234, 239,242, 233'>\n", + "Variable: rstcreValue: -0.042
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='259, 233,259, 224,251, 224,251, 239,259, 233'>\n", + "Variable: rstcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='276, 233,276, 224,268, 224,268, 239,276, 233'>\n", + "Variable: rstcreValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='293, 233,293, 224,285, 224,285, 239,293, 233'>\n", + "Variable: rstcreValue: -0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='310, 233,310, 224,302, 224,302, 239,310, 233'>\n", + "Variable: rstcreValue: 0.0309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='327, 233,327, 224,319, 224,319, 239,327, 233'>\n", + "Variable: ta-200Value: 0.187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='56, 215,56, 206,48, 206,48, 221,56, 215'>\n", + "Variable: ta-200Value: -0.218
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='73, 215,73, 206,64, 206,64, 221,73, 215'>\n", + "Variable: ta-200Value: -0.389
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='90, 215,90, 206,81, 206,81, 221,90, 215'>\n", + "Variable: ta-200Value: -0.0223
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='107, 215,107, 206,98, 206,98, 221,107, 215'>\n", + "Variable: ta-200Value: -0.0538
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='124, 215,124, 206,115, 206,115, 221,124, 215'>\n", + "Variable: ta-200Value: 0.253
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='141, 215,141, 206,132, 206,132, 221,141, 215'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='158, 215,158, 206,149, 206,149, 221,158, 215'>\n", + "Variable: ta-200Value: 0.527
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='175, 215,175, 206,166, 206,166, 221,175, 215'>\n", + "Variable: ta-200Value: 0.153
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='192, 215,192, 206,183, 206,183, 221,192, 215'>\n", + "Variable: ta-200Value: 1.46
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='208, 215,208, 206,200, 206,200, 221,208, 215'>\n", + "Variable: ta-200Value: -0.375
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='225, 215,225, 206,217, 206,217, 221,225, 215'>\n", + "Variable: ta-200Value: -0.0582
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='242, 215,242, 206,234, 206,234, 221,242, 215'>\n", + "Variable: ta-200Value: -0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='259, 215,259, 206,251, 206,251, 221,259, 215'>\n", + "Variable: ta-200Value: -0.427
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='276, 215,276, 206,268, 206,268, 221,276, 215'>\n", + "Variable: ta-200Value: 0.6
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='293, 215,293, 206,285, 206,285, 221,293, 215'>\n", + "Variable: ta-200Value: 0.771
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='310, 215,310, 206,302, 206,302, 221,310, 215'>\n", + "Variable: ta-200Value: 0.0792
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='327, 215,327, 206,319, 206,319, 221,327, 215'>\n", + "Variable: ta-850Value: 0.69
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='56, 197,56, 188,48, 188,48, 202,56, 197'>\n", + "Variable: ta-850Value: -0.0808
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='73, 197,73, 188,64, 188,64, 202,73, 197'>\n", + "Variable: ta-850Value: -0.298
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='90, 197,90, 188,81, 188,81, 202,90, 197'>\n", + "Variable: ta-850Value: -0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='107, 197,107, 188,98, 188,98, 202,107, 197'>\n", + "Variable: ta-850Value: -0.131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='124, 197,124, 188,115, 188,115, 202,124, 197'>\n", + "Variable: ta-850Value: 0.107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='141, 197,141, 188,132, 188,132, 202,141, 197'>\n", + "Variable: ta-850Value: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='158, 197,158, 188,149, 188,149, 202,158, 197'>\n", + "Variable: ta-850Value: -0.0249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='175, 197,175, 188,166, 188,166, 202,175, 197'>\n", + "Variable: ta-850Value: 0.561
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='192, 197,192, 188,183, 188,183, 202,192, 197'>\n", + "Variable: ta-850Value: 0.486
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='208, 197,208, 188,200, 188,200, 202,208, 197'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='225, 197,225, 188,217, 188,217, 202,225, 197'>\n", + "Variable: ta-850Value: 0.864
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='242, 197,242, 188,234, 188,234, 202,242, 197'>\n", + "Variable: ta-850Value: 0.473
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='259, 197,259, 188,251, 188,251, 202,259, 197'>\n", + "Variable: ta-850Value: -0.073
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='276, 197,276, 188,268, 188,268, 202,276, 197'>\n", + "Variable: ta-850Value: -0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='293, 197,293, 188,285, 188,285, 202,293, 197'>\n", + "Variable: ta-850Value: 0.989
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='310, 197,310, 188,302, 188,302, 202,310, 197'>\n", + "Variable: ta-850Value: 0.872
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='327, 197,327, 188,319, 188,319, 202,327, 197'>\n", + "Variable: tasValue: -0.0373
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='56, 179,56, 170,48, 170,48, 185,56, 179'>\n", + "Variable: tasValue: -0.0597
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='73, 179,73, 170,64, 170,64, 185,73, 179'>\n", + "Variable: tasValue: -0.189
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='90, 179,90, 170,81, 170,81, 185,90, 179'>\n", + "Variable: tasValue: -0.0919
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='107, 179,107, 170,98, 170,98, 185,107, 179'>\n", + "Variable: tasValue: -0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='124, 179,124, 170,115, 170,115, 185,124, 179'>\n", + "Variable: tasValue: 0.0306
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='141, 179,141, 170,132, 170,132, 185,141, 179'>\n", + "Variable: tasValue: -0.0852
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='158, 179,158, 170,149, 170,149, 185,158, 179'>\n", + "Variable: tasValue: 0.0114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='175, 179,175, 170,166, 170,166, 185,175, 179'>\n", + "Variable: tasValue: 0.52
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='192, 179,192, 170,183, 170,183, 185,192, 179'>\n", + "Variable: tasValue: 0.505
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='208, 179,208, 170,200, 170,200, 185,208, 179'>\n", + "Variable: tasValue: -0.216
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='225, 179,225, 170,217, 170,217, 185,225, 179'>\n", + "Variable: tasValue: 0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='242, 179,242, 170,234, 170,234, 185,242, 179'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='259, 179,259, 170,251, 170,251, 185,259, 179'>\n", + "Variable: tasValue: 0.0361
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='276, 179,276, 170,268, 170,268, 185,276, 179'>\n", + "Variable: tasValue: -0.3
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='293, 179,293, 170,285, 170,285, 185,293, 179'>\n", + "Variable: tasValue: 0.246
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='310, 179,310, 170,302, 170,302, 185,310, 179'>\n", + "Variable: tasValue: 0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='327, 179,327, 170,319, 170,319, 185,327, 179'>\n", + "Variable: ua-200Value: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='56, 161,56, 152,48, 152,48, 167,56, 161'>\n", + "Variable: ua-200Value: -0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='73, 161,73, 152,64, 152,64, 167,73, 161'>\n", + "Variable: ua-200Value: 0.0461
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='90, 161,90, 152,81, 152,81, 167,90, 161'>\n", + "Variable: ua-200Value: -0.0956
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='107, 161,107, 152,98, 152,98, 167,107, 161'>\n", + "Variable: ua-200Value: -0.0981
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='124, 161,124, 152,115, 152,115, 167,124, 161'>\n", + "Variable: ua-200Value: -0.224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='141, 161,141, 152,132, 152,132, 167,141, 161'>\n", + "Variable: ua-200Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='158, 161,158, 152,149, 152,149, 167,158, 161'>\n", + "Variable: ua-200Value: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='175, 161,175, 152,166, 152,166, 167,175, 161'>\n", + "Variable: ua-200Value: 0.22
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='192, 161,192, 152,183, 152,183, 167,192, 161'>\n", + "Variable: ua-200Value: 0.37
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='208, 161,208, 152,200, 152,200, 167,208, 161'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='225, 161,225, 152,217, 152,217, 167,225, 161'>\n", + "Variable: ua-200Value: 0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='242, 161,242, 152,234, 152,234, 167,242, 161'>\n", + "Variable: ua-200Value: -0.0143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='259, 161,259, 152,251, 152,251, 167,259, 161'>\n", + "Variable: ua-200Value: -0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='276, 161,276, 152,268, 152,268, 167,276, 161'>\n", + "Variable: ua-200Value: 0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='293, 161,293, 152,285, 152,285, 167,293, 161'>\n", + "Variable: ua-200Value: 0.0527
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='310, 161,310, 152,302, 152,302, 167,310, 161'>\n", + "Variable: ua-200Value: 0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='327, 161,327, 152,319, 152,319, 167,327, 161'>\n", + "Variable: ua-850Value: -0.0967
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='56, 143,56, 134,48, 134,48, 149,56, 143'>\n", + "Variable: ua-850Value: -0.247
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='73, 143,73, 134,64, 134,64, 149,73, 143'>\n", + "Variable: ua-850Value: -0.0967
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='90, 143,90, 134,81, 134,81, 149,90, 143'>\n", + "Variable: ua-850Value: 0.0589
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='107, 143,107, 134,98, 134,98, 149,107, 143'>\n", + "Variable: ua-850Value: 0.0186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='124, 143,124, 134,115, 134,115, 149,124, 143'>\n", + "Variable: ua-850Value: -0.279
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='141, 143,141, 134,132, 134,132, 149,141, 143'>\n", + "Variable: ua-850Value: 0.0222
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='158, 143,158, 134,149, 134,149, 149,158, 143'>\n", + "Variable: ua-850Value: -0.0539
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='175, 143,175, 134,166, 134,166, 149,175, 143'>\n", + "Variable: ua-850Value: 0.0871
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='192, 143,192, 134,183, 134,183, 149,192, 143'>\n", + "Variable: ua-850Value: 0.61
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='208, 143,208, 134,200, 134,200, 149,208, 143'>\n", + "Variable: ua-850Value: -0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='225, 143,225, 134,217, 134,217, 149,225, 143'>\n", + "Variable: ua-850Value: 0.0473
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='242, 143,242, 134,234, 134,234, 149,242, 143'>\n", + "Variable: ua-850Value: -0.0131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='259, 143,259, 134,251, 134,251, 149,259, 143'>\n", + "Variable: ua-850Value: -0.343
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='276, 143,276, 134,268, 134,268, 149,276, 143'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='293, 143,293, 134,285, 134,285, 149,293, 143'>\n", + "Variable: ua-850Value: 0.131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='310, 143,310, 134,302, 134,302, 149,310, 143'>\n", + "Variable: ua-850Value: 0.0232
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='327, 143,327, 134,319, 134,319, 149,327, 143'>\n", + "Variable: va-200Value: 0.0278
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='56, 125,56, 116,48, 116,48, 131,56, 125'>\n", + "Variable: va-200Value: -0.187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='73, 125,73, 116,64, 116,64, 131,73, 125'>\n", + "Variable: va-200Value: -0.0308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='90, 125,90, 116,81, 116,81, 131,90, 125'>\n", + "Variable: va-200Value: -0.00845
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='107, 125,107, 116,98, 116,98, 131,107, 125'>\n", + "Variable: va-200Value: -0.0328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='124, 125,124, 116,115, 116,115, 131,124, 125'>\n", + "Variable: va-200Value: -0.136
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='141, 125,141, 116,132, 116,132, 131,141, 125'>\n", + "Variable: va-200Value: 0.0149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='158, 125,158, 116,149, 116,149, 131,158, 125'>\n", + "Variable: va-200Value: -0.0597
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='175, 125,175, 116,166, 116,166, 131,175, 125'>\n", + "Variable: va-200Value: 0.158
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='192, 125,192, 116,183, 116,183, 131,192, 125'>\n", + "Variable: va-200Value: 0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='208, 125,208, 116,200, 116,200, 131,208, 125'>\n", + "Variable: va-200Value: -0.0975
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='225, 125,225, 116,217, 116,217, 131,225, 125'>\n", + "Variable: va-200Value: 0.1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='242, 125,242, 116,234, 116,234, 131,242, 125'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='259, 125,259, 116,251, 116,251, 131,259, 125'>\n", + "Variable: va-200Value: -0.228
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='276, 125,276, 116,268, 116,268, 131,276, 125'>\n", + "Variable: va-200Value: 0.0477
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='293, 125,293, 116,285, 116,285, 131,293, 125'>\n", + "Variable: va-200Value: 0.0845
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='310, 125,310, 116,302, 116,302, 131,310, 125'>\n", + "Variable: va-200Value: 0.575
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='327, 125,327, 116,319, 116,319, 131,327, 125'>\n", + "Variable: va-850Value: -0.0947
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='56, 107,56, 98,48, 98,48, 113,56, 107'>\n", + "Variable: va-850Value: -0.141
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='73, 107,73, 98,64, 98,64, 113,73, 107'>\n", + "Variable: va-850Value: -0.0195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='90, 107,90, 98,81, 98,81, 113,90, 107'>\n", + "Variable: va-850Value: 0.0638
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='107, 107,107, 98,98, 98,98, 113,107, 107'>\n", + "Variable: va-850Value: 0.0381
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='124, 107,124, 98,115, 98,115, 113,124, 107'>\n", + "Variable: va-850Value: -0.144
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='141, 107,141, 98,132, 98,132, 113,141, 107'>\n", + "Variable: va-850Value: 0.0802
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='158, 107,158, 98,149, 98,149, 113,158, 107'>\n", + "Variable: va-850Value: -0.0648
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='175, 107,175, 98,166, 98,166, 113,175, 107'>\n", + "Variable: va-850Value: 0.269
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='192, 107,192, 98,183, 98,183, 113,192, 107'>\n", + "Variable: va-850Value: 0.242
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='208, 107,208, 98,200, 98,200, 113,208, 107'>\n", + "Variable: va-850Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='225, 107,225, 98,217, 98,217, 113,225, 107'>\n", + "Variable: va-850Value: 0.0772
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='242, 107,242, 98,234, 98,234, 113,242, 107'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='259, 107,259, 98,251, 98,251, 113,259, 107'>\n", + "Variable: va-850Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='276, 107,276, 98,268, 98,268, 113,276, 107'>\n", + "Variable: va-850Value: -0.0535
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='293, 107,293, 98,285, 98,285, 113,293, 107'>\n", + "Variable: va-850Value: 0.277
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='310, 107,310, 98,302, 98,302, 113,310, 107'>\n", + "Variable: va-850Value: 0.328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='327, 107,327, 98,319, 98,319, 113,327, 107'>\n", + "Variable: zg-500Value: 0.29
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='56, 89,56, 80,48, 80,48, 95,56, 89'>\n", + "Variable: zg-500Value: 0.0172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='73, 89,73, 80,64, 80,64, 95,73, 89'>\n", + "Variable: zg-500Value: -0.345
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='90, 89,90, 80,81, 80,81, 95,90, 89'>\n", + "Variable: zg-500Value: -0.276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='107, 89,107, 80,98, 80,98, 95,107, 89'>\n", + "Variable: zg-500Value: -0.308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='124, 89,124, 80,115, 80,115, 95,124, 89'>\n", + "Variable: zg-500Value: -0.309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='141, 89,141, 80,132, 80,132, 95,141, 89'>\n", + "Variable: zg-500Value: -0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='158, 89,158, 80,149, 80,149, 95,158, 89'>\n", + "Variable: zg-500Value: -0.252
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='175, 89,175, 80,166, 80,166, 95,175, 89'>\n", + "Variable: zg-500Value: 0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='192, 89,192, 80,183, 80,183, 95,192, 89'>\n", + "Variable: zg-500Value: 1.02
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='208, 89,208, 80,200, 80,200, 95,208, 89'>\n", + "Variable: zg-500Value: 0.0588
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='225, 89,225, 80,217, 80,217, 95,225, 89'>\n", + "Variable: zg-500Value: 1.03
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='242, 89,242, 80,234, 80,234, 95,242, 89'>\n", + "Variable: zg-500Value: 0.749
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='259, 89,259, 80,251, 80,251, 95,259, 89'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='276, 89,276, 80,268, 80,268, 95,276, 89'>\n", + "Variable: zg-500Value: -0.249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='293, 89,293, 80,285, 80,285, 95,293, 89'>\n", + "Variable: zg-500Value: 0.418
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='310, 89,310, 80,302, 80,302, 95,310, 89'>\n", + "Variable: zg-500Value: -0.0172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='327, 89,327, 80,319, 80,319, 95,327, 89'>\n", + "Variable: prValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='56, 323,48, 329,48, 332,64, 332,64, 329'>\n", + "Variable: prValue: 0.0884
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='73, 323,64, 329,64, 332,81, 332,81, 329'>\n", + "Variable: prValue: 0.0484
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='90, 323,81, 329,81, 332,98, 332,98, 329'>\n", + "Variable: prValue: -0.142
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='107, 323,98, 329,98, 332,115, 332,115, 329'>\n", + "Variable: prValue: -0.137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='124, 323,115, 329,115, 332,132, 332,132, 329'>\n", + "Variable: prValue: -0.135
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='141, 323,132, 329,132, 332,149, 332,149, 329'>\n", + "Variable: prValue: -0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='158, 323,149, 329,149, 332,166, 332,166, 329'>\n", + "Variable: prValue: -0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='175, 323,166, 329,166, 332,183, 332,183, 329'>\n", + "Variable: prValue: 0.389
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='192, 323,183, 329,183, 332,200, 332,200, 329'>\n", + "Variable: prValue: 0.0109
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='208, 323,200, 329,200, 332,217, 332,217, 329'>\n", + "Variable: prValue: -0.0706
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='225, 323,217, 329,217, 332,234, 332,234, 329'>\n", + "Variable: prValue: 0.0267
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='242, 323,234, 329,234, 332,251, 332,251, 329'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='259, 323,251, 329,251, 332,268, 332,268, 329'>\n", + "Variable: prValue: 0.0464
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='276, 323,268, 329,268, 332,285, 332,285, 329'>\n", + "Variable: prValue: 0.0202
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='293, 323,285, 329,285, 332,302, 332,302, 329'>\n", + "Variable: prValue: -0.0701
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='310, 323,302, 329,302, 332,319, 332,319, 329'>\n", + "Variable: prValue: 0.0676
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='327, 323,319, 329,319, 332,336, 332,336, 329'>\n", + "Variable: prwValue: -0.049
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='56, 305,48, 311,48, 314,64, 314,64, 311'>\n", + "Variable: prwValue: -0.0106
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='73, 305,64, 311,64, 314,81, 314,81, 311'>\n", + "Variable: prwValue: 0.0317
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='90, 305,81, 311,81, 314,98, 314,98, 311'>\n", + "Variable: prwValue: 0.0164
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='107, 305,98, 311,98, 314,115, 314,115, 311'>\n", + "Variable: prwValue: 0.0106
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='124, 305,115, 311,115, 314,132, 314,132, 311'>\n", + "Variable: prwValue: 0.0248
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='141, 305,132, 311,132, 314,149, 314,149, 311'>\n", + "Variable: prwValue: 0.0158
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='158, 305,149, 311,149, 314,166, 314,166, 311'>\n", + "Variable: prwValue: 0.0654
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='175, 305,166, 311,166, 314,183, 314,183, 311'>\n", + "Variable: prwValue: 0.0347
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='192, 305,183, 311,183, 314,200, 314,200, 311'>\n", + "Variable: prwValue: -0.0844
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='208, 305,200, 311,200, 314,217, 314,217, 311'>\n", + "Variable: prwValue: -0.0116
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='225, 305,217, 311,217, 314,234, 314,234, 311'>\n", + "Variable: prwValue: -0.0658
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='242, 305,234, 311,234, 314,251, 314,251, 311'>\n", + "Variable: prwValue: -0.0612
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='259, 305,251, 311,251, 314,268, 314,268, 311'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='276, 305,268, 311,268, 314,285, 314,285, 311'>\n", + "Variable: prwValue: 0.0549
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='293, 305,285, 311,285, 314,302, 314,302, 311'>\n", + "Variable: prwValue: -0.0659
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='310, 305,302, 311,302, 314,319, 314,319, 311'>\n", + "Variable: prwValue: -0.0531
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='327, 305,319, 311,319, 314,336, 314,336, 311'>\n", + "Variable: pslValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='56, 287,48, 293,48, 296,64, 296,64, 293'>\n", + "Variable: pslValue: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='73, 287,64, 293,64, 296,81, 296,81, 293'>\n", + "Variable: pslValue: -0.0865
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='90, 287,81, 293,81, 296,98, 296,98, 293'>\n", + "Variable: pslValue: 0.0342
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='107, 287,98, 293,98, 296,115, 296,115, 293'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='124, 287,115, 293,115, 296,132, 296,132, 293'>\n", + "Variable: pslValue: -0.314
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='141, 287,132, 293,132, 296,149, 296,149, 293'>\n", + "Variable: pslValue: 0.0322
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='158, 287,149, 293,149, 296,166, 296,166, 293'>\n", + "Variable: pslValue: 0.23
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='175, 287,166, 293,166, 296,183, 296,183, 293'>\n", + "Variable: pslValue: 0.143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='192, 287,183, 293,183, 296,200, 296,200, 293'>\n", + "Variable: pslValue: 0.0367
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='208, 287,200, 293,200, 296,217, 296,217, 293'>\n", + "Variable: pslValue: -0.225
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='225, 287,217, 293,217, 296,234, 296,234, 293'>\n", + "Variable: pslValue: -0.000594
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='242, 287,234, 293,234, 296,251, 296,251, 293'>\n", + "Variable: pslValue: 0.0126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='259, 287,251, 293,251, 296,268, 296,268, 293'>\n", + "Variable: pslValue: -0.0888
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='276, 287,268, 293,268, 296,285, 296,285, 293'>\n", + "Variable: pslValue: 0.0716
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='293, 287,285, 293,285, 296,302, 296,302, 293'>\n", + "Variable: pslValue: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='310, 287,302, 293,302, 296,319, 296,319, 293'>\n", + "Variable: pslValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='327, 287,319, 293,319, 296,336, 296,336, 293'>\n", + "Variable: rltcreValue: -0.17
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='56, 269,48, 275,48, 278,64, 278,64, 275'>\n", + "Variable: rltcreValue: -0.162
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='73, 269,64, 275,64, 278,81, 278,81, 275'>\n", + "Variable: rltcreValue: -0.143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='90, 269,81, 275,81, 278,98, 278,98, 275'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='107, 269,98, 275,98, 278,115, 278,115, 275'>\n", + "Variable: rltcreValue: -0.00281
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='124, 269,115, 275,115, 278,132, 278,132, 275'>\n", + "Variable: rltcreValue: -0.00539
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='141, 269,132, 275,132, 278,149, 278,149, 275'>\n", + "Variable: rltcreValue: -0.0235
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='158, 269,149, 275,149, 278,166, 278,166, 275'>\n", + "Variable: rltcreValue: 0.367
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='175, 269,166, 275,166, 278,183, 278,183, 275'>\n", + "Variable: rltcreValue: 0.285
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='192, 269,183, 275,183, 278,200, 278,200, 275'>\n", + "Variable: rltcreValue: 0.1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='208, 269,200, 275,200, 278,217, 278,217, 275'>\n", + "Variable: rltcreValue: 0.226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='225, 269,217, 275,217, 278,234, 278,234, 275'>\n", + "Variable: rltcreValue: 0.0502
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='242, 269,234, 275,234, 278,251, 278,251, 275'>\n", + "Variable: rltcreValue: 0.0186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='259, 269,251, 275,251, 278,268, 278,268, 275'>\n", + "Variable: rltcreValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='276, 269,268, 275,268, 278,285, 278,285, 275'>\n", + "Variable: rltcreValue: 0.0924
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='293, 269,285, 275,285, 278,302, 278,302, 275'>\n", + "Variable: rltcreValue: -0.159
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='310, 269,302, 275,302, 278,319, 278,319, 275'>\n", + "Variable: rltcreValue: 0.461
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='327, 269,319, 275,319, 278,336, 278,336, 275'>\n", + "Variable: rlutValue: -0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='56, 251,48, 257,48, 260,64, 260,64, 257'>\n", + "Variable: rlutValue: -0.0214
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='73, 251,64, 257,64, 260,81, 260,81, 257'>\n", + "Variable: rlutValue: 0.135
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='90, 251,81, 257,81, 260,98, 260,98, 257'>\n", + "Variable: rlutValue: -0.111
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='107, 251,98, 257,98, 260,115, 260,115, 257'>\n", + "Variable: rlutValue: -0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='124, 251,115, 257,115, 260,132, 260,132, 257'>\n", + "Variable: rlutValue: -0.229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='141, 251,132, 257,132, 260,149, 260,149, 257'>\n", + "Variable: rlutValue: -0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='158, 251,149, 257,149, 260,166, 260,166, 257'>\n", + "Variable: rlutValue: 0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='175, 251,166, 257,166, 260,183, 260,183, 257'>\n", + "Variable: rlutValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='192, 251,183, 257,183, 260,200, 260,200, 257'>\n", + "Variable: rlutValue: 0.112
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='208, 251,200, 257,200, 260,217, 260,217, 257'>\n", + "Variable: rlutValue: 0.149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='225, 251,217, 257,217, 260,234, 260,234, 257'>\n", + "Variable: rlutValue: 0.0417
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='242, 251,234, 257,234, 260,251, 260,251, 257'>\n", + "Variable: rlutValue: 0.0419
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='259, 251,251, 257,251, 260,268, 260,268, 257'>\n", + "Variable: rlutValue: -0.109
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='276, 251,268, 257,268, 260,285, 260,285, 257'>\n", + "Variable: rlutValue: -0.0178
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='293, 251,285, 257,285, 260,302, 260,302, 257'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='310, 251,302, 257,302, 260,319, 260,319, 257'>\n", + "Variable: rlutValue: 0.247
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='327, 251,319, 257,319, 260,336, 260,336, 257'>\n", + "Variable: rstcreValue: -0.0382
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='56, 233,48, 239,48, 242,64, 242,64, 239'>\n", + "Variable: rstcreValue: -0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='73, 233,64, 239,64, 242,81, 242,81, 239'>\n", + "Variable: rstcreValue: -0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='90, 233,81, 239,81, 242,98, 242,98, 239'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='107, 233,98, 239,98, 242,115, 242,115, 239'>\n", + "Variable: rstcreValue: -0.00677
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='124, 233,115, 239,115, 242,132, 242,132, 239'>\n", + "Variable: rstcreValue: -0.0191
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='141, 233,132, 239,132, 242,149, 242,149, 239'>\n", + "Variable: rstcreValue: -0.0103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='158, 233,149, 239,149, 242,166, 242,166, 239'>\n", + "Variable: rstcreValue: 0.386
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='175, 233,166, 239,166, 242,183, 242,183, 239'>\n", + "Variable: rstcreValue: 0.308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='192, 233,183, 239,183, 242,200, 242,200, 239'>\n", + "Variable: rstcreValue: 0.033
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='208, 233,200, 239,200, 242,217, 242,217, 239'>\n", + "Variable: rstcreValue: -0.0922
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='225, 233,217, 239,217, 242,234, 242,234, 239'>\n", + "Variable: rstcreValue: 0.0456
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='242, 233,234, 239,234, 242,251, 242,251, 239'>\n", + "Variable: rstcreValue: 0.0446
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='259, 233,251, 239,251, 242,268, 242,268, 239'>\n", + "Variable: rstcreValue: -0.287
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='276, 233,268, 239,268, 242,285, 242,285, 239'>\n", + "Variable: rstcreValue: 0.135
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='293, 233,285, 239,285, 242,302, 242,302, 239'>\n", + "Variable: rstcreValue: 0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='310, 233,302, 239,302, 242,319, 242,319, 239'>\n", + "Variable: rstcreValue: 0.161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='327, 233,319, 239,319, 242,336, 242,336, 239'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='56, 215,48, 221,48, 224,64, 224,64, 221'>\n", + "Variable: ta-200Value: -0.3
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='73, 215,64, 221,64, 224,81, 224,81, 221'>\n", + "Variable: ta-200Value: -0.492
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='90, 215,81, 221,81, 224,98, 224,98, 221'>\n", + "Variable: ta-200Value: 0.0514
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='107, 215,98, 221,98, 224,115, 224,115, 221'>\n", + "Variable: ta-200Value: 0.0535
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='124, 215,115, 221,115, 224,132, 224,132, 221'>\n", + "Variable: ta-200Value: 0.172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='141, 215,132, 221,132, 224,149, 224,149, 221'>\n", + "Variable: ta-200Value: 0.00963
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='158, 215,149, 221,149, 224,166, 224,166, 221'>\n", + "Variable: ta-200Value: 0.201
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='175, 215,166, 221,166, 224,183, 224,183, 221'>\n", + "Variable: ta-200Value: -0.2
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='192, 215,183, 221,183, 224,200, 224,200, 221'>\n", + "Variable: ta-200Value: 0.932
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='208, 215,200, 221,200, 224,217, 224,217, 221'>\n", + "Variable: ta-200Value: -0.507
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='225, 215,217, 221,217, 224,234, 224,234, 221'>\n", + "Variable: ta-200Value: -0.432
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='242, 215,234, 221,234, 224,251, 224,251, 221'>\n", + "Variable: ta-200Value: -0.476
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='259, 215,251, 221,251, 224,268, 224,268, 221'>\n", + "Variable: ta-200Value: -0.422
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='276, 215,268, 221,268, 224,285, 224,285, 221'>\n", + "Variable: ta-200Value: 0.185
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='293, 215,285, 221,285, 224,302, 224,302, 221'>\n", + "Variable: ta-200Value: 0.484
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='310, 215,302, 221,302, 224,319, 224,319, 221'>\n", + "Variable: ta-200Value: -0.0399
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='327, 215,319, 221,319, 224,336, 224,336, 221'>\n", + "Variable: ta-850Value: 0.382
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='56, 197,48, 202,48, 206,64, 206,64, 202'>\n", + "Variable: ta-850Value: -0.272
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='73, 197,64, 202,64, 206,81, 206,81, 202'>\n", + "Variable: ta-850Value: -0.328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='90, 197,81, 202,81, 206,98, 206,98, 202'>\n", + "Variable: ta-850Value: -0.0628
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='107, 197,98, 202,98, 206,115, 206,115, 202'>\n", + "Variable: ta-850Value: -0.105
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='124, 197,115, 202,115, 206,132, 206,132, 202'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='141, 197,132, 202,132, 206,149, 206,149, 202'>\n", + "Variable: ta-850Value: -0.0634
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='158, 197,149, 202,149, 206,166, 206,166, 202'>\n", + "Variable: ta-850Value: 0.0308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='175, 197,166, 202,166, 206,183, 206,183, 202'>\n", + "Variable: ta-850Value: 0.341
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='192, 197,183, 202,183, 206,200, 206,200, 202'>\n", + "Variable: ta-850Value: 0.241
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='208, 197,200, 202,200, 206,217, 206,217, 202'>\n", + "Variable: ta-850Value: -0.143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='225, 197,217, 202,217, 206,234, 206,234, 202'>\n", + "Variable: ta-850Value: 0.346
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='242, 197,234, 202,234, 206,251, 206,251, 202'>\n", + "Variable: ta-850Value: 0.159
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='259, 197,251, 202,251, 206,268, 206,268, 202'>\n", + "Variable: ta-850Value: -0.343
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='276, 197,268, 202,268, 206,285, 206,285, 202'>\n", + "Variable: ta-850Value: -0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='293, 197,285, 202,285, 206,302, 206,302, 202'>\n", + "Variable: ta-850Value: 0.962
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='310, 197,302, 202,302, 206,319, 206,319, 202'>\n", + "Variable: ta-850Value: 0.715
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='327, 197,319, 202,319, 206,336, 206,336, 202'>\n", + "Variable: tasValue: -0.123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='56, 179,48, 185,48, 188,64, 188,64, 185'>\n", + "Variable: tasValue: -0.107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='73, 179,64, 185,64, 188,81, 188,81, 185'>\n", + "Variable: tasValue: -0.133
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='90, 179,81, 185,81, 188,98, 188,98, 185'>\n", + "Variable: tasValue: 0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='107, 179,98, 185,98, 188,115, 188,115, 185'>\n", + "Variable: tasValue: 0.0987
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='124, 179,115, 185,115, 188,132, 188,132, 185'>\n", + "Variable: tasValue: 0.00933
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='141, 179,132, 185,132, 188,149, 188,149, 185'>\n", + "Variable: tasValue: 0.168
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='158, 179,149, 185,149, 188,166, 188,166, 185'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='175, 179,166, 185,166, 188,183, 188,183, 185'>\n", + "Variable: tasValue: 0.353
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='192, 179,183, 185,183, 188,200, 188,200, 185'>\n", + "Variable: tasValue: 0.374
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='208, 179,200, 185,200, 188,217, 188,217, 185'>\n", + "Variable: tasValue: -0.124
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='225, 179,217, 185,217, 188,234, 188,234, 185'>\n", + "Variable: tasValue: -0.0187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='242, 179,234, 185,234, 188,251, 188,251, 185'>\n", + "Variable: tasValue: -0.0231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='259, 179,251, 185,251, 188,268, 188,268, 185'>\n", + "Variable: tasValue: -0.128
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='276, 179,268, 185,268, 188,285, 188,285, 185'>\n", + "Variable: tasValue: -0.296
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='293, 179,285, 185,285, 188,302, 188,302, 185'>\n", + "Variable: tasValue: 0.214
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='310, 179,302, 185,302, 188,319, 188,319, 185'>\n", + "Variable: tasValue: 0.0893
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='327, 179,319, 185,319, 188,336, 188,336, 185'>\n", + "Variable: ua-200Value: -0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='56, 161,48, 167,48, 170,64, 170,64, 167'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='73, 161,64, 167,64, 170,81, 170,81, 167'>\n", + "Variable: ua-200Value: 0.0884
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='90, 161,81, 167,81, 170,98, 170,98, 167'>\n", + "Variable: ua-200Value: -0.0964
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='107, 161,98, 167,98, 170,115, 170,115, 167'>\n", + "Variable: ua-200Value: -0.122
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='124, 161,115, 167,115, 170,132, 170,132, 167'>\n", + "Variable: ua-200Value: -0.316
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='141, 161,132, 167,132, 170,149, 170,149, 167'>\n", + "Variable: ua-200Value: -0.127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='158, 161,149, 167,149, 170,166, 170,166, 167'>\n", + "Variable: ua-200Value: 0.109
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='175, 161,166, 167,166, 170,183, 170,183, 167'>\n", + "Variable: ua-200Value: 0.0589
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='192, 161,183, 167,183, 170,200, 170,200, 167'>\n", + "Variable: ua-200Value: 0.0934
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='208, 161,200, 167,200, 170,217, 170,217, 167'>\n", + "Variable: ua-200Value: -0.0542
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='225, 161,217, 167,217, 170,234, 170,234, 167'>\n", + "Variable: ua-200Value: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='242, 161,234, 167,234, 170,251, 170,251, 167'>\n", + "Variable: ua-200Value: -0.136
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='259, 161,251, 167,251, 170,268, 170,268, 167'>\n", + "Variable: ua-200Value: 0.00547
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='276, 161,268, 167,268, 170,285, 170,285, 167'>\n", + "Variable: ua-200Value: 0.217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='293, 161,285, 167,285, 170,302, 170,302, 167'>\n", + "Variable: ua-200Value: 0.0214
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='310, 161,302, 167,302, 170,319, 170,319, 167'>\n", + "Variable: ua-200Value: 0.58
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='327, 161,319, 167,319, 170,336, 170,336, 167'>\n", + "Variable: ua-850Value: -0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='56, 143,48, 149,48, 152,64, 152,64, 149'>\n", + "Variable: ua-850Value: -0.389
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='73, 143,64, 149,64, 152,81, 152,81, 149'>\n", + "Variable: ua-850Value: -0.29
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='90, 143,81, 149,81, 152,98, 152,98, 149'>\n", + "Variable: ua-850Value: 0.0656
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='107, 143,98, 149,98, 152,115, 152,115, 149'>\n", + "Variable: ua-850Value: 0.0427
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='124, 143,115, 149,115, 152,132, 152,132, 149'>\n", + "Variable: ua-850Value: -0.273
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='141, 143,132, 149,132, 152,149, 152,149, 149'>\n", + "Variable: ua-850Value: 0.0473
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='158, 143,149, 149,149, 152,166, 152,166, 149'>\n", + "Variable: ua-850Value: 0.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='175, 143,166, 149,166, 152,183, 152,183, 149'>\n", + "Variable: ua-850Value: 0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='192, 143,183, 149,183, 152,200, 152,200, 149'>\n", + "Variable: ua-850Value: 0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='208, 143,200, 149,200, 152,217, 152,217, 149'>\n", + "Variable: ua-850Value: -0.0982
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='225, 143,217, 149,217, 152,234, 152,234, 149'>\n", + "Variable: ua-850Value: -0.027
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='242, 143,234, 149,234, 152,251, 152,251, 149'>\n", + "Variable: ua-850Value: -0.0626
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='259, 143,251, 149,251, 152,268, 152,268, 149'>\n", + "Variable: ua-850Value: -0.27
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='276, 143,268, 149,268, 152,285, 152,285, 149'>\n", + "Variable: ua-850Value: 0.000509
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='293, 143,285, 149,285, 152,302, 152,302, 149'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='310, 143,302, 149,302, 152,319, 152,319, 149'>\n", + "Variable: ua-850Value: 0.25
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='327, 143,319, 149,319, 152,336, 152,336, 149'>\n", + "Variable: va-200Value: -0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='56, 125,48, 131,48, 134,64, 134,64, 131'>\n", + "Variable: va-200Value: 0.0138
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='73, 125,64, 131,64, 134,81, 134,81, 131'>\n", + "Variable: va-200Value: 0.14
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='90, 125,81, 131,81, 134,98, 134,98, 131'>\n", + "Variable: va-200Value: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='107, 125,98, 131,98, 134,115, 134,115, 131'>\n", + "Variable: va-200Value: -0.155
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='124, 125,115, 131,115, 134,132, 134,132, 131'>\n", + "Variable: va-200Value: -0.178
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='141, 125,132, 131,132, 134,149, 134,149, 131'>\n", + "Variable: va-200Value: -0.161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='158, 125,149, 131,149, 134,166, 134,166, 131'>\n", + "Variable: va-200Value: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='175, 125,166, 131,166, 134,183, 134,183, 131'>\n", + "Variable: va-200Value: 0.067
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='192, 125,183, 131,183, 134,200, 134,200, 131'>\n", + "Variable: va-200Value: 0.0613
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='208, 125,200, 131,200, 134,217, 134,217, 131'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='225, 125,217, 131,217, 134,234, 134,234, 131'>\n", + "Variable: va-200Value: -0.0264
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='242, 125,234, 131,234, 134,251, 134,251, 131'>\n", + "Variable: va-200Value: -0.00287
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='259, 125,251, 131,251, 134,268, 134,268, 131'>\n", + "Variable: va-200Value: 0.00573
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='276, 125,268, 131,268, 134,285, 134,285, 131'>\n", + "Variable: va-200Value: 0.0126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='293, 125,285, 131,285, 134,302, 134,302, 131'>\n", + "Variable: va-200Value: -0.0401
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='310, 125,302, 131,302, 134,319, 134,319, 131'>\n", + "Variable: va-200Value: 0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='327, 125,319, 131,319, 134,336, 134,336, 131'>\n", + "Variable: va-850Value: -0.0916
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='56, 107,48, 113,48, 116,64, 116,64, 113'>\n", + "Variable: va-850Value: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='73, 107,64, 113,64, 116,81, 116,81, 113'>\n", + "Variable: va-850Value: 0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='90, 107,81, 113,81, 116,98, 116,98, 113'>\n", + "Variable: va-850Value: 0.0155
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='107, 107,98, 113,98, 116,115, 116,115, 113'>\n", + "Variable: va-850Value: -0.0309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='124, 107,115, 113,115, 116,132, 116,132, 113'>\n", + "Variable: va-850Value: -0.219
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='141, 107,132, 113,132, 116,149, 116,149, 113'>\n", + "Variable: va-850Value: -0.00993
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='158, 107,149, 113,149, 116,166, 116,166, 113'>\n", + "Variable: va-850Value: 0.0839
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='175, 107,166, 113,166, 116,183, 116,183, 113'>\n", + "Variable: va-850Value: 0.26
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='192, 107,183, 113,183, 116,200, 116,200, 113'>\n", + "Variable: va-850Value: 0.189
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='208, 107,200, 113,200, 116,217, 116,217, 113'>\n", + "Variable: va-850Value: -0.0199
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='225, 107,217, 113,217, 116,234, 116,234, 113'>\n", + "Variable: va-850Value: 0.0298
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='242, 107,234, 113,234, 116,251, 116,251, 113'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='259, 107,251, 113,251, 116,268, 116,268, 113'>\n", + "Variable: va-850Value: -0.00221
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='276, 107,268, 113,268, 116,285, 116,285, 113'>\n", + "Variable: va-850Value: -0.0121
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='293, 107,285, 113,285, 116,302, 116,302, 113'>\n", + "Variable: va-850Value: 0.359
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='310, 107,302, 113,302, 116,319, 116,319, 113'>\n", + "Variable: va-850Value: 0.391
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='327, 107,319, 113,319, 116,336, 116,336, 113'>\n", + "Variable: zg-500Value: 0.224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='56, 89,48, 95,48, 98,64, 98,64, 95'>\n", + "Variable: zg-500Value: -0.112
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='73, 89,64, 95,64, 98,81, 98,81, 95'>\n", + "Variable: zg-500Value: -0.318
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='90, 89,81, 95,81, 98,98, 98,98, 95'>\n", + "Variable: zg-500Value: -0.0296
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='107, 89,98, 95,98, 98,115, 98,115, 95'>\n", + "Variable: zg-500Value: -0.0619
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='124, 89,115, 95,115, 98,132, 98,132, 95'>\n", + "Variable: zg-500Value: -0.323
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='141, 89,132, 95,132, 98,149, 98,149, 95'>\n", + "Variable: zg-500Value: -0.00497
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='158, 89,149, 95,149, 98,166, 98,166, 95'>\n", + "Variable: zg-500Value: 0.0908
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='175, 89,166, 95,166, 98,183, 98,183, 95'>\n", + "Variable: zg-500Value: 0.00497
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='192, 89,183, 95,183, 98,200, 98,200, 95'>\n", + "Variable: zg-500Value: 0.664
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='208, 89,200, 95,200, 98,217, 98,217, 95'>\n", + "Variable: zg-500Value: 0.0606
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='225, 89,217, 95,217, 98,234, 98,234, 95'>\n", + "Variable: zg-500Value: 1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='242, 89,234, 95,234, 98,251, 98,251, 95'>\n", + "Variable: zg-500Value: 0.78
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='259, 89,251, 95,251, 98,268, 98,268, 95'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='276, 89,268, 95,268, 98,285, 98,285, 95'>\n", + "Variable: zg-500Value: -0.113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='293, 89,285, 95,285, 98,302, 98,302, 95'>\n", + "Variable: zg-500Value: 0.357
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='310, 89,302, 95,302, 98,319, 98,319, 95'>\n", + "Variable: zg-500Value: -0.0115
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='327, 89,319, 95,319, 98,336, 98,336, 95'>\n", + "Variable: prValue: -0.00524
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='56, 323,56, 314,64, 314,64, 329,56, 323'>\n", + "Variable: prValue: 0.054
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='73, 323,73, 314,81, 314,81, 329,73, 323'>\n", + "Variable: prValue: 0.098
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='90, 323,90, 314,98, 314,98, 329,90, 323'>\n", + "Variable: prValue: -0.0786
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='107, 323,107, 314,115, 314,115, 329,107, 323'>\n", + "Variable: prValue: -0.0623
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='124, 323,124, 314,132, 314,132, 329,124, 323'>\n", + "Variable: prValue: -0.0974
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='141, 323,141, 314,149, 314,149, 329,141, 323'>\n", + "Variable: prValue: -0.0896
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='158, 323,158, 314,166, 314,166, 329,158, 323'>\n", + "Variable: prValue: -0.0665
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='175, 323,175, 314,183, 314,183, 329,175, 323'>\n", + "Variable: prValue: 0.307
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='192, 323,192, 314,200, 314,200, 329,192, 323'>\n", + "Variable: prValue: -0.23
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='208, 323,208, 314,217, 314,217, 329,208, 323'>\n", + "Variable: prValue: 0.168
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='225, 323,225, 314,234, 314,234, 329,225, 323'>\n", + "Variable: prValue: 0.0901
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='242, 323,242, 314,251, 314,251, 329,242, 323'>\n", + "Variable: prValue: 0.0372
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='259, 323,259, 314,268, 314,268, 329,259, 323'>\n", + "Variable: prValue: 0.043
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='276, 323,276, 314,285, 314,285, 329,276, 323'>\n", + "Variable: prValue: -0.0608
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='293, 323,293, 314,302, 314,302, 329,293, 323'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='310, 323,310, 314,319, 314,319, 329,310, 323'>\n", + "Variable: prValue: 0.0241
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='327, 323,327, 314,336, 314,336, 329,327, 323'>\n", + "Variable: prwValue: -0.0434
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='56, 305,56, 296,64, 296,64, 311,56, 305'>\n", + "Variable: prwValue: -0.0338
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='73, 305,73, 296,81, 296,81, 311,73, 305'>\n", + "Variable: prwValue: 0.0254
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='90, 305,90, 296,98, 296,98, 311,90, 305'>\n", + "Variable: prwValue: 0.00103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='107, 305,107, 296,115, 296,115, 311,107, 305'>\n", + "Variable: prwValue: 0.00599
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='124, 305,124, 296,132, 296,132, 311,124, 305'>\n", + "Variable: prwValue: 0.00995
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='141, 305,141, 296,149, 296,149, 311,141, 305'>\n", + "Variable: prwValue: -0.00103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='158, 305,158, 296,166, 296,166, 311,158, 305'>\n", + "Variable: prwValue: 0.0289
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='175, 305,175, 296,183, 296,183, 311,175, 305'>\n", + "Variable: prwValue: 0.0184
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='192, 305,192, 296,200, 296,200, 311,192, 305'>\n", + "Variable: prwValue: -0.0579
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='208, 305,208, 296,217, 296,217, 311,208, 305'>\n", + "Variable: prwValue: 0.00934
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='225, 305,225, 296,234, 296,234, 311,225, 305'>\n", + "Variable: prwValue: -0.0595
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='242, 305,242, 296,251, 296,251, 311,242, 305'>\n", + "Variable: prwValue: -0.0571
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='259, 305,259, 296,268, 296,268, 311,259, 305'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='276, 305,276, 296,285, 296,285, 311,276, 305'>\n", + "Variable: prwValue: 0.0392
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='293, 305,293, 296,302, 296,302, 311,293, 305'>\n", + "Variable: prwValue: -0.0309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='310, 305,310, 296,319, 296,319, 311,310, 305'>\n", + "Variable: prwValue: -0.0243
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='327, 305,327, 296,336, 296,336, 311,327, 305'>\n", + "Variable: pslValue: -0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='56, 287,56, 278,64, 278,64, 293,56, 287'>\n", + "Variable: pslValue: -0.227
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='73, 287,73, 278,81, 278,81, 293,73, 287'>\n", + "Variable: pslValue: -0.211
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='90, 287,90, 278,98, 278,98, 293,90, 287'>\n", + "Variable: pslValue: 0.00694
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='107, 287,107, 278,115, 278,115, 293,107, 287'>\n", + "Variable: pslValue: 0.0102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='124, 287,124, 278,132, 278,132, 293,124, 287'>\n", + "Variable: pslValue: -0.407
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='141, 287,141, 278,149, 278,149, 293,141, 287'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='158, 287,158, 278,166, 278,166, 293,158, 287'>\n", + "Variable: pslValue: 0.00522
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='175, 287,175, 278,183, 278,183, 293,175, 287'>\n", + "Variable: pslValue: 0.0245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='192, 287,192, 278,200, 278,200, 293,192, 287'>\n", + "Variable: pslValue: 0.0851
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='208, 287,208, 278,217, 278,217, 293,208, 287'>\n", + "Variable: pslValue: -0.205
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='225, 287,225, 278,234, 278,234, 293,225, 287'>\n", + "Variable: pslValue: 0.0316
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='242, 287,242, 278,251, 278,251, 293,242, 287'>\n", + "Variable: pslValue: -0.00749
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='259, 287,259, 278,268, 278,268, 293,259, 287'>\n", + "Variable: pslValue: -0.193
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='276, 287,276, 278,285, 278,285, 293,276, 287'>\n", + "Variable: pslValue: 0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='293, 287,293, 278,302, 278,302, 293,293, 287'>\n", + "Variable: pslValue: -0.051
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='310, 287,310, 278,319, 278,319, 293,310, 287'>\n", + "Variable: pslValue: 0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='327, 287,327, 278,336, 278,336, 293,327, 287'>\n", + "Variable: rltcreValue: -0.0421
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='56, 269,56, 260,64, 260,64, 275,56, 269'>\n", + "Variable: rltcreValue: -0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='73, 269,73, 260,81, 260,81, 275,73, 269'>\n", + "Variable: rltcreValue: -0.0895
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='90, 269,90, 260,98, 260,98, 275,90, 269'>\n", + "Variable: rltcreValue: 0.0147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='107, 269,107, 260,115, 260,115, 275,107, 269'>\n", + "Variable: rltcreValue: 0.0188
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='124, 269,124, 260,132, 260,132, 275,124, 269'>\n", + "Variable: rltcreValue: 0.0226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='141, 269,141, 260,149, 260,149, 275,141, 269'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='158, 269,158, 260,166, 260,166, 275,158, 269'>\n", + "Variable: rltcreValue: 0.122
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='175, 269,175, 260,183, 260,183, 275,175, 269'>\n", + "Variable: rltcreValue: 0.124
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='192, 269,192, 260,200, 260,200, 275,192, 269'>\n", + "Variable: rltcreValue: -0.0437
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='208, 269,208, 260,217, 260,217, 275,208, 269'>\n", + "Variable: rltcreValue: 0.289
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='225, 269,225, 260,234, 260,234, 275,225, 269'>\n", + "Variable: rltcreValue: -0.000107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='242, 269,242, 260,251, 260,251, 275,242, 269'>\n", + "Variable: rltcreValue: -0.0141
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='259, 269,259, 260,268, 260,268, 275,259, 269'>\n", + "Variable: rltcreValue: -0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='276, 269,276, 260,285, 260,285, 275,276, 269'>\n", + "Variable: rltcreValue: 0.0626
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='293, 269,293, 260,302, 260,302, 275,293, 269'>\n", + "Variable: rltcreValue: -0.149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='310, 269,310, 260,319, 260,319, 275,310, 269'>\n", + "Variable: rltcreValue: 0.359
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='327, 269,327, 260,336, 260,336, 275,327, 269'>\n", + "Variable: rlutValue: -0.0283
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='56, 251,56, 242,64, 242,64, 257,56, 251'>\n", + "Variable: rlutValue: -0.0119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='73, 251,73, 242,81, 242,81, 257,73, 251'>\n", + "Variable: rlutValue: 0.0443
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='90, 251,90, 242,98, 242,98, 257,90, 251'>\n", + "Variable: rlutValue: -0.00948
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='107, 251,107, 242,115, 242,115, 257,107, 251'>\n", + "Variable: rlutValue: 0.000409
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='124, 251,124, 242,132, 242,132, 257,124, 251'>\n", + "Variable: rlutValue: -0.159
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='141, 251,141, 242,149, 242,149, 257,141, 251'>\n", + "Variable: rlutValue: -0.014
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='158, 251,158, 242,166, 242,166, 257,158, 251'>\n", + "Variable: rlutValue: 0.0419
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='175, 251,175, 242,183, 242,183, 257,175, 251'>\n", + "Variable: rlutValue: 0.0198
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='192, 251,192, 242,200, 242,200, 257,192, 251'>\n", + "Variable: rlutValue: -0.0105
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='208, 251,208, 242,217, 242,217, 257,208, 251'>\n", + "Variable: rlutValue: 0.278
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='225, 251,225, 242,234, 242,234, 257,225, 251'>\n", + "Variable: rlutValue: 0.024
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='242, 251,242, 242,251, 242,251, 257,242, 251'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='259, 251,259, 242,268, 242,268, 257,259, 251'>\n", + "Variable: rlutValue: -0.0149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='276, 251,276, 242,285, 242,285, 257,276, 251'>\n", + "Variable: rlutValue: 0.0164
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='293, 251,293, 242,302, 242,302, 257,293, 251'>\n", + "Variable: rlutValue: -0.0761
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='310, 251,310, 242,319, 242,319, 257,310, 251'>\n", + "Variable: rlutValue: 0.173
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='327, 251,327, 242,336, 242,336, 257,327, 251'>\n", + "Variable: rstcreValue: -0.0597
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='56, 233,56, 224,64, 224,64, 239,56, 233'>\n", + "Variable: rstcreValue: -0.281
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='73, 233,73, 224,81, 224,81, 239,73, 233'>\n", + "Variable: rstcreValue: -0.17
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='90, 233,90, 224,98, 224,98, 239,90, 233'>\n", + "Variable: rstcreValue: 0.0267
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='107, 233,107, 224,115, 224,115, 239,107, 233'>\n", + "Variable: rstcreValue: 0.0314
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='124, 233,124, 224,132, 224,132, 239,124, 233'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='141, 233,141, 224,149, 224,149, 239,141, 233'>\n", + "Variable: rstcreValue: 0.0229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='158, 233,158, 224,166, 224,166, 239,158, 233'>\n", + "Variable: rstcreValue: 0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='175, 233,175, 224,183, 224,183, 239,175, 233'>\n", + "Variable: rstcreValue: -0.0358
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='192, 233,192, 224,200, 224,200, 239,192, 233'>\n", + "Variable: rstcreValue: -0.0161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='208, 233,208, 224,217, 224,217, 239,208, 233'>\n", + "Variable: rstcreValue: -0.00385
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='225, 233,225, 224,234, 224,234, 239,225, 233'>\n", + "Variable: rstcreValue: 0.000578
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='242, 233,242, 224,251, 224,251, 239,242, 233'>\n", + "Variable: rstcreValue: -0.0961
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='259, 233,259, 224,268, 224,268, 239,259, 233'>\n", + "Variable: rstcreValue: -0.253
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='276, 233,276, 224,285, 224,285, 239,276, 233'>\n", + "Variable: rstcreValue: 0.00668
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='293, 233,293, 224,302, 224,302, 239,293, 233'>\n", + "Variable: rstcreValue: 0.118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='310, 233,310, 224,319, 224,319, 239,310, 233'>\n", + "Variable: rstcreValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='327, 233,327, 224,336, 224,336, 239,327, 233'>\n", + "Variable: ta-200Value: -0.0698
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='56, 215,56, 206,64, 206,64, 221,56, 215'>\n", + "Variable: ta-200Value: -0.237
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='73, 215,73, 206,81, 206,81, 221,73, 215'>\n", + "Variable: ta-200Value: -0.458
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='90, 215,90, 206,98, 206,98, 221,90, 215'>\n", + "Variable: ta-200Value: 0.089
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='107, 215,107, 206,115, 206,115, 221,107, 215'>\n", + "Variable: ta-200Value: 0.0603
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='124, 215,124, 206,132, 206,132, 221,124, 215'>\n", + "Variable: ta-200Value: 0.251
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='141, 215,141, 206,149, 206,149, 221,141, 215'>\n", + "Variable: ta-200Value: 0.0651
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='158, 215,158, 206,166, 206,166, 221,158, 215'>\n", + "Variable: ta-200Value: 0.402
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='175, 215,175, 206,183, 206,183, 221,175, 215'>\n", + "Variable: ta-200Value: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='192, 215,192, 206,200, 206,200, 221,192, 215'>\n", + "Variable: ta-200Value: 1.02
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='208, 215,208, 206,217, 206,217, 221,208, 215'>\n", + "Variable: ta-200Value: -0.514
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='225, 215,225, 206,234, 206,234, 221,225, 215'>\n", + "Variable: ta-200Value: -0.338
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='242, 215,242, 206,251, 206,251, 221,242, 215'>\n", + "Variable: ta-200Value: -0.36
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='259, 215,259, 206,268, 206,268, 221,259, 215'>\n", + "Variable: ta-200Value: -0.367
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='276, 215,276, 206,285, 206,285, 221,276, 215'>\n", + "Variable: ta-200Value: 0.277
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='293, 215,293, 206,302, 206,302, 221,293, 215'>\n", + "Variable: ta-200Value: 0.574
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='310, 215,310, 206,319, 206,319, 221,310, 215'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='327, 215,327, 206,336, 206,336, 221,327, 215'>\n", + "Variable: ta-850Value: 0.669
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='56, 197,56, 188,64, 188,64, 202,56, 197'>\n", + "Variable: ta-850Value: -0.174
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='73, 197,73, 188,81, 188,81, 202,73, 197'>\n", + "Variable: ta-850Value: -0.387
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='90, 197,90, 188,98, 188,98, 202,90, 197'>\n", + "Variable: ta-850Value: -0.112
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='107, 197,107, 188,115, 188,115, 202,107, 197'>\n", + "Variable: ta-850Value: -0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='124, 197,124, 188,132, 188,132, 202,124, 197'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='141, 197,141, 188,149, 188,149, 202,141, 197'>\n", + "Variable: ta-850Value: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='158, 197,158, 188,166, 188,166, 202,158, 197'>\n", + "Variable: ta-850Value: -0.0502
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='175, 197,175, 188,183, 188,183, 202,175, 197'>\n", + "Variable: ta-850Value: 0.384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='192, 197,192, 188,200, 188,200, 202,192, 197'>\n", + "Variable: ta-850Value: 0.351
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='208, 197,208, 188,217, 188,217, 202,208, 197'>\n", + "Variable: ta-850Value: 0.0218
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='225, 197,225, 188,234, 188,234, 202,225, 197'>\n", + "Variable: ta-850Value: 0.543
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='242, 197,242, 188,251, 188,251, 202,242, 197'>\n", + "Variable: ta-850Value: 0.282
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='259, 197,259, 188,268, 188,268, 202,259, 197'>\n", + "Variable: ta-850Value: -0.2
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='276, 197,276, 188,285, 188,285, 202,276, 197'>\n", + "Variable: ta-850Value: -0.229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='293, 197,293, 188,302, 188,302, 202,293, 197'>\n", + "Variable: ta-850Value: 1.02
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='310, 197,310, 188,319, 188,319, 202,310, 197'>\n", + "Variable: ta-850Value: 0.86
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='327, 197,327, 188,336, 188,336, 202,327, 197'>\n", + "Variable: tasValue: 0.0227
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='56, 179,56, 170,64, 170,64, 185,56, 179'>\n", + "Variable: tasValue: -0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='73, 179,73, 170,81, 170,81, 185,73, 179'>\n", + "Variable: tasValue: -0.211
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='90, 179,90, 170,98, 170,98, 185,90, 179'>\n", + "Variable: tasValue: 0.0191
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='107, 179,107, 170,115, 170,115, 185,107, 179'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='124, 179,124, 170,132, 170,132, 185,124, 179'>\n", + "Variable: tasValue: -0.0584
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='141, 179,141, 170,149, 170,149, 185,141, 179'>\n", + "Variable: tasValue: 0.0247
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='158, 179,158, 170,166, 170,166, 185,158, 179'>\n", + "Variable: tasValue: -0.00933
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='175, 179,175, 170,183, 170,183, 185,175, 179'>\n", + "Variable: tasValue: 0.172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='192, 179,192, 170,200, 170,200, 185,192, 179'>\n", + "Variable: tasValue: 0.308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='208, 179,208, 170,217, 170,217, 185,208, 179'>\n", + "Variable: tasValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='225, 179,225, 170,234, 170,234, 185,225, 179'>\n", + "Variable: tasValue: 0.121
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='242, 179,242, 170,251, 170,251, 185,242, 179'>\n", + "Variable: tasValue: 0.00608
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='259, 179,259, 170,268, 170,268, 185,259, 179'>\n", + "Variable: tasValue: -0.116
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='276, 179,276, 170,285, 170,285, 185,276, 179'>\n", + "Variable: tasValue: -0.341
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='293, 179,293, 170,302, 170,302, 185,293, 179'>\n", + "Variable: tasValue: 0.0324
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='310, 179,310, 170,319, 170,319, 185,310, 179'>\n", + "Variable: tasValue: -0.0657
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='327, 179,327, 170,336, 170,336, 185,327, 179'>\n", + "Variable: ua-200Value: 0.1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='56, 161,56, 152,64, 152,64, 167,56, 161'>\n", + "Variable: ua-200Value: -0.228
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='73, 161,73, 152,81, 152,81, 167,73, 161'>\n", + "Variable: ua-200Value: -0.0689
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='90, 161,90, 152,98, 152,98, 167,90, 161'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='107, 161,107, 152,115, 152,115, 167,107, 161'>\n", + "Variable: ua-200Value: -0.0147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='124, 161,124, 152,132, 152,132, 167,124, 161'>\n", + "Variable: ua-200Value: -0.262
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='141, 161,141, 152,149, 152,149, 167,141, 161'>\n", + "Variable: ua-200Value: -0.0658
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='158, 161,158, 152,166, 152,166, 167,158, 161'>\n", + "Variable: ua-200Value: 0.0264
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='175, 161,175, 152,183, 152,183, 167,175, 161'>\n", + "Variable: ua-200Value: 0.128
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='192, 161,192, 152,200, 152,200, 167,192, 161'>\n", + "Variable: ua-200Value: 0.164
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='208, 161,208, 152,217, 152,217, 167,208, 161'>\n", + "Variable: ua-200Value: 0.294
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='225, 161,225, 152,234, 152,234, 167,225, 161'>\n", + "Variable: ua-200Value: -0.122
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='242, 161,242, 152,251, 152,251, 167,242, 161'>\n", + "Variable: ua-200Value: -0.0825
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='259, 161,259, 152,268, 152,268, 167,259, 161'>\n", + "Variable: ua-200Value: -0.221
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='276, 161,276, 152,285, 152,285, 167,276, 161'>\n", + "Variable: ua-200Value: 0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='293, 161,293, 152,302, 152,302, 167,293, 161'>\n", + "Variable: ua-200Value: 0.0813
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='310, 161,310, 152,319, 152,319, 167,310, 161'>\n", + "Variable: ua-200Value: 0.164
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='327, 161,327, 152,336, 152,336, 167,327, 161'>\n", + "Variable: ua-850Value: -0.00425
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='56, 143,56, 134,64, 134,64, 149,56, 143'>\n", + "Variable: ua-850Value: -0.369
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='73, 143,73, 134,81, 134,81, 149,73, 143'>\n", + "Variable: ua-850Value: -0.222
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='90, 143,90, 134,98, 134,98, 149,90, 143'>\n", + "Variable: ua-850Value: 0.174
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='107, 143,107, 134,115, 134,115, 149,107, 143'>\n", + "Variable: ua-850Value: 0.142
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='124, 143,124, 134,132, 134,132, 149,124, 143'>\n", + "Variable: ua-850Value: -0.343
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='141, 143,141, 134,149, 134,149, 149,141, 143'>\n", + "Variable: ua-850Value: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='158, 143,158, 134,166, 134,166, 149,158, 143'>\n", + "Variable: ua-850Value: 0.062
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='175, 143,175, 134,183, 134,183, 149,175, 143'>\n", + "Variable: ua-850Value: -0.0711
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='192, 143,192, 134,200, 134,200, 149,192, 143'>\n", + "Variable: ua-850Value: 0.358
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='208, 143,208, 134,217, 134,217, 149,208, 143'>\n", + "Variable: ua-850Value: 0.0377
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='225, 143,225, 134,234, 134,234, 149,225, 143'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='242, 143,242, 134,251, 134,251, 149,242, 143'>\n", + "Variable: ua-850Value: -0.0225
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='259, 143,259, 134,268, 134,268, 149,259, 143'>\n", + "Variable: ua-850Value: -0.291
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='276, 143,276, 134,285, 134,285, 149,276, 143'>\n", + "Variable: ua-850Value: -0.0535
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='293, 143,293, 134,302, 134,302, 149,293, 143'>\n", + "Variable: ua-850Value: 0.257
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='310, 143,310, 134,319, 134,319, 149,310, 143'>\n", + "Variable: ua-850Value: 0.259
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='327, 143,327, 134,336, 134,336, 149,327, 143'>\n", + "Variable: va-200Value: -0.029
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='56, 125,56, 116,64, 116,64, 131,56, 125'>\n", + "Variable: va-200Value: -0.113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='73, 125,73, 116,81, 116,81, 131,73, 125'>\n", + "Variable: va-200Value: 0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='90, 125,90, 116,98, 116,98, 131,90, 125'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='107, 125,107, 116,115, 116,115, 131,107, 125'>\n", + "Variable: va-200Value: -0.0634
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='124, 125,124, 116,132, 116,132, 131,124, 125'>\n", + "Variable: va-200Value: -0.0917
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='141, 125,141, 116,149, 116,149, 131,141, 125'>\n", + "Variable: va-200Value: -0.0676
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='158, 125,158, 116,166, 116,166, 131,158, 125'>\n", + "Variable: va-200Value: 0.162
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='175, 125,175, 116,183, 116,183, 131,175, 125'>\n", + "Variable: va-200Value: 0.263
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='192, 125,192, 116,200, 116,200, 131,192, 125'>\n", + "Variable: va-200Value: 0.0748
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='208, 125,208, 116,217, 116,217, 131,208, 125'>\n", + "Variable: va-200Value: 0.0978
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='225, 125,225, 116,234, 116,234, 131,225, 125'>\n", + "Variable: va-200Value: -0.0272
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='242, 125,242, 116,251, 116,251, 131,242, 125'>\n", + "Variable: va-200Value: -0.0441
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='259, 125,259, 116,268, 116,268, 131,259, 125'>\n", + "Variable: va-200Value: -0.0712
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='276, 125,276, 116,285, 116,285, 131,276, 125'>\n", + "Variable: va-200Value: 0.0441
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='293, 125,293, 116,302, 116,302, 131,293, 125'>\n", + "Variable: va-200Value: 0.041
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='310, 125,310, 116,319, 116,319, 131,310, 125'>\n", + "Variable: va-200Value: 0.302
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='327, 125,327, 116,336, 116,336, 131,327, 125'>\n", + "Variable: va-850Value: -0.0126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='56, 107,56, 98,64, 98,64, 113,56, 107'>\n", + "Variable: va-850Value: -0.107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='73, 107,73, 98,81, 98,81, 113,73, 107'>\n", + "Variable: va-850Value: -0.044
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='90, 107,90, 98,98, 98,98, 113,90, 107'>\n", + "Variable: va-850Value: 0.034
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='107, 107,107, 98,115, 98,115, 113,107, 107'>\n", + "Variable: va-850Value: -0.0176
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='124, 107,124, 98,132, 98,132, 113,124, 107'>\n", + "Variable: va-850Value: -0.224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='141, 107,141, 98,149, 98,149, 113,141, 107'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='158, 107,158, 98,166, 98,166, 113,158, 107'>\n", + "Variable: va-850Value: -0.0113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='175, 107,175, 98,183, 98,183, 113,175, 107'>\n", + "Variable: va-850Value: 0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='192, 107,192, 98,200, 98,200, 113,192, 107'>\n", + "Variable: va-850Value: 0.137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='208, 107,208, 98,217, 98,217, 113,208, 107'>\n", + "Variable: va-850Value: 0.00755
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='225, 107,225, 98,234, 98,234, 113,225, 107'>\n", + "Variable: va-850Value: 0.0503
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='242, 107,242, 98,251, 98,251, 113,242, 107'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='259, 107,259, 98,268, 98,268, 113,259, 107'>\n", + "Variable: va-850Value: -0.0642
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='276, 107,276, 98,285, 98,285, 113,276, 107'>\n", + "Variable: va-850Value: -0.0616
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='293, 107,293, 98,302, 98,302, 113,293, 107'>\n", + "Variable: va-850Value: 0.39
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='310, 107,310, 98,319, 98,319, 113,310, 107'>\n", + "Variable: va-850Value: 0.395
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='327, 107,327, 98,336, 98,336, 113,327, 107'>\n", + "Variable: zg-500Value: 0.483
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='56, 89,56, 80,64, 80,64, 95,56, 89'>\n", + "Variable: zg-500Value: -0.0625
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='73, 89,73, 80,81, 80,81, 95,73, 89'>\n", + "Variable: zg-500Value: -0.466
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='90, 89,90, 80,98, 80,98, 95,90, 89'>\n", + "Variable: zg-500Value: -0.125
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='107, 89,107, 80,115, 80,115, 95,107, 89'>\n", + "Variable: zg-500Value: -0.149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='124, 89,124, 80,132, 80,132, 95,124, 89'>\n", + "Variable: zg-500Value: -0.304
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='141, 89,141, 80,149, 80,149, 95,141, 89'>\n", + "Variable: zg-500Value: -0.181
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='158, 89,158, 80,166, 80,166, 95,158, 89'>\n", + "Variable: zg-500Value: -0.0651
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='175, 89,175, 80,183, 80,183, 95,175, 89'>\n", + "Variable: zg-500Value: 0.0853
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='192, 89,192, 80,200, 80,200, 95,192, 89'>\n", + "Variable: zg-500Value: 0.85
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='208, 89,208, 80,217, 80,217, 95,208, 89'>\n", + "Variable: zg-500Value: 0.185
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='225, 89,225, 80,234, 80,234, 95,225, 89'>\n", + "Variable: zg-500Value: 1.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='242, 89,242, 80,251, 80,251, 95,242, 89'>\n", + "Variable: zg-500Value: 0.842
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='259, 89,259, 80,268, 80,268, 95,259, 89'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='276, 89,276, 80,285, 80,285, 95,276, 89'>\n", + "Variable: zg-500Value: -0.228
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='293, 89,293, 80,302, 80,302, 95,293, 89'>\n", + "Variable: zg-500Value: 0.444
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='310, 89,310, 80,319, 80,319, 95,310, 89'>\n", + "Variable: zg-500Value: 0.0625
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='327, 89,327, 80,336, 80,336, 95,327, 89'>\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P = pcmdi_metrics.graphics.portraits.Portrait()\n", + "P.decorate(rms_xy, variables, yax)\n", + "\n", + "x.clear()\n", + "\n", + "for i in range(3):\n", + " multi=i+1.3\n", + " mesh, template, meshfill = P.plot(rms_xy[...,i+1],x=x,multiple=multi)\n", + " x.png(\"clickable3.png\")\n", + " click_areas1 = vcs.utils.meshToPngCoords(mesh,template,[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable3.png\")\n", + " targets1, tooltips1, extras1 = createTargets(rms_xy[...,i+1],targets_template)\n", + " if i==0:\n", + " click_areas = click_areas1\n", + " targets = targets1\n", + " tooltips = tooltips1\n", + " extras = extras1\n", + " else:\n", + " targets = numpy.concatenate((targets,targets1))\n", + " tooltips = numpy.concatenate((tooltips,tooltips1))\n", + " extras = numpy.concatenate((extras,extras1))\n", + " click_areas = numpy.concatenate((click_areas,click_areas1))\n", + "\n", + "geo = x.geometry()\n", + "# create the html map element\n", + "map_element = vcs.utils.mapPng(\"clickable3.png\",click_areas,targets,tooltips,extras=extras,width=geo[\"width\"],height=geo[\"height\"])\n", + "\n", + "# Geenrate html file\n", + "write_html(\"clickable_portrait_3.html\", map_element)\n", + "viz(\"clickable_portrait_3.html\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Multiple Portrait Plots with Multiple Sources" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/ipykernel_launcher.py:24: UserWarning: Warning: converting a masked element to nan.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n", + "WARNING: meshfill pipeline: poly does not have Scalars array on cell data, using solid color\n" + ] + }, + { + "data": { + "text/html": [ + "

Clickable Portraits Plots

\n", + "Variable: prValue: 0.00163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='44, 311,44, 302,40, 302,40, 317,44, 311'>\n", + "Variable: prValue: 0.161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='52, 311,52, 302,48, 302,48, 317,52, 311'>\n", + "Variable: prValue: 0.265
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='60, 311,60, 302,56, 302,56, 317,60, 311'>\n", + "Variable: prValue: -0.139
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='68, 311,68, 302,64, 302,64, 317,68, 311'>\n", + "Variable: prValue: -0.15
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='77, 311,77, 302,72, 302,72, 317,77, 311'>\n", + "Variable: prValue: -0.0558
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='85, 311,85, 302,81, 302,81, 317,85, 311'>\n", + "Variable: prValue: -0.123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='93, 311,93, 302,89, 302,89, 317,93, 311'>\n", + "Variable: prValue: -0.108
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='101, 311,101, 302,97, 302,97, 317,101, 311'>\n", + "Variable: prValue: 0.379
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='110, 311,110, 302,105, 302,105, 317,110, 311'>\n", + "Variable: prValue: -0.137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='118, 311,118, 302,114, 302,114, 317,118, 311'>\n", + "Variable: prValue: 0.0417
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='126, 311,126, 302,122, 302,122, 317,126, 311'>\n", + "Variable: prValue: 0.118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='134, 311,134, 302,130, 302,130, 317,134, 311'>\n", + "Variable: prValue: -0.026
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='142, 311,142, 302,138, 302,138, 317,142, 311'>\n", + "Variable: prValue: 0.0975
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='151, 311,151, 302,147, 302,147, 317,151, 311'>\n", + "Variable: prValue: -0.0179
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='159, 311,159, 302,155, 302,155, 317,159, 311'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='167, 311,167, 302,163, 302,163, 317,167, 311'>\n", + "Variable: prValue: 0.0439
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='175, 311,175, 302,171, 302,171, 317,175, 311'>\n", + "Variable: prwValue: -0.0424
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='44, 294,44, 285,40, 285,40, 300,44, 294'>\n", + "Variable: prwValue: -0.0267
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='52, 294,52, 285,48, 285,48, 300,52, 294'>\n", + "Variable: prwValue: 0.0311
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='60, 294,60, 285,56, 285,56, 300,60, 294'>\n", + "Variable: prwValue: 0.0336
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='68, 294,68, 285,64, 285,64, 300,68, 294'>\n", + "Variable: prwValue: 0.0383
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='77, 294,77, 285,72, 285,72, 300,77, 294'>\n", + "Variable: prwValue: 0.0285
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='85, 294,85, 285,81, 285,81, 300,85, 294'>\n", + "Variable: prwValue: 0.0366
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='93, 294,93, 285,89, 285,89, 300,93, 294'>\n", + "Variable: prwValue: 0.0676
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='101, 294,101, 285,97, 285,97, 300,101, 294'>\n", + "Variable: prwValue: -0.0091
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='110, 294,110, 285,105, 285,105, 300,110, 294'>\n", + "Variable: prwValue: -0.0728
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='118, 294,118, 285,114, 285,114, 300,118, 294'>\n", + "Variable: prwValue: 0.0091
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='126, 294,126, 285,122, 285,122, 300,126, 294'>\n", + "Variable: prwValue: -0.0666
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='134, 294,134, 285,130, 285,130, 300,134, 294'>\n", + "Variable: prwValue: -0.0671
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='142, 294,142, 285,138, 285,138, 300,142, 294'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='151, 294,151, 285,147, 285,147, 300,151, 294'>\n", + "Variable: prwValue: 0.0161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='159, 294,159, 285,155, 285,155, 300,159, 294'>\n", + "Variable: prwValue: -0.0321
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='167, 294,167, 285,163, 285,163, 300,167, 294'>\n", + "Variable: prwValue: -0.0115
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='175, 294,175, 285,171, 285,171, 300,175, 294'>\n", + "Variable: pslValue: -0.079
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='44, 277,44, 268,40, 268,40, 282,44, 277'>\n", + "Variable: pslValue: -0.202
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='52, 277,52, 268,48, 268,48, 282,52, 277'>\n", + "Variable: pslValue: -0.217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='60, 277,60, 268,56, 268,56, 282,60, 277'>\n", + "Variable: pslValue: -0.0245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='68, 277,68, 268,64, 268,64, 282,68, 277'>\n", + "Variable: pslValue: -0.0869
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='77, 277,77, 268,72, 268,72, 282,77, 277'>\n", + "Variable: pslValue: -0.421
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='85, 277,85, 268,81, 268,81, 282,85, 277'>\n", + "Variable: pslValue: 0.00992
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='93, 277,93, 268,89, 268,89, 282,93, 277'>\n", + "Variable: pslValue: 0.0347
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='101, 277,101, 268,97, 268,97, 282,101, 277'>\n", + "Variable: pslValue: 0.442
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='110, 277,110, 268,105, 268,105, 282,110, 277'>\n", + "Variable: pslValue: 0.683
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='118, 277,118, 268,114, 268,114, 282,118, 277'>\n", + "Variable: pslValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='126, 277,126, 268,122, 268,122, 282,126, 277'>\n", + "Variable: pslValue: 0.207
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='134, 277,134, 268,130, 268,130, 282,134, 277'>\n", + "Variable: pslValue: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='142, 277,142, 268,138, 268,138, 282,142, 277'>\n", + "Variable: pslValue: -0.259
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='151, 277,151, 268,147, 268,147, 282,151, 277'>\n", + "Variable: pslValue: 0.156
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='159, 277,159, 268,155, 268,155, 282,159, 277'>\n", + "Variable: pslValue: 0.0901
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='167, 277,167, 268,163, 268,163, 282,167, 277'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='175, 277,175, 268,171, 268,171, 282,175, 277'>\n", + "Variable: rltcreValue: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='44, 260,44, 251,40, 251,40, 265,44, 260'>\n", + "Variable: rltcreValue: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='52, 260,52, 251,48, 251,48, 265,52, 260'>\n", + "Variable: rltcreValue: -0.00327
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='60, 260,60, 251,56, 251,56, 265,60, 260'>\n", + "Variable: rltcreValue: 0.000701
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='68, 260,68, 251,64, 251,64, 265,68, 260'>\n", + "Variable: rltcreValue: -0.0266
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='77, 260,77, 251,72, 251,72, 265,77, 260'>\n", + "Variable: rltcreValue: 0.0667
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='85, 260,85, 251,81, 251,81, 265,85, 260'>\n", + "Variable: rltcreValue: -0.0148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='93, 260,93, 251,89, 251,89, 265,93, 260'>\n", + "Variable: rltcreValue: 0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='101, 260,101, 251,97, 251,97, 265,101, 260'>\n", + "Variable: rltcreValue: 0.226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='110, 260,110, 251,105, 251,105, 265,110, 260'>\n", + "Variable: rltcreValue: 0.0688
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='118, 260,118, 251,114, 251,114, 265,118, 260'>\n", + "Variable: rltcreValue: 0.148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='126, 260,126, 251,122, 251,122, 265,126, 260'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='134, 260,134, 251,130, 251,130, 265,134, 260'>\n", + "Variable: rltcreValue: -0.124
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='142, 260,142, 251,138, 251,138, 265,142, 260'>\n", + "Variable: rltcreValue: -0.188
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='151, 260,151, 251,147, 251,147, 265,151, 260'>\n", + "Variable: rltcreValue: 0.0248
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='159, 260,159, 251,155, 251,155, 265,159, 260'>\n", + "Variable: rltcreValue: -0.115
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='167, 260,167, 251,163, 251,163, 265,167, 260'>\n", + "Variable: rltcreValue: 0.388
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='175, 260,175, 251,171, 251,171, 265,175, 260'>\n", + "Variable: rlutValue: -0.156
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='44, 242,44, 234,40, 234,40, 248,44, 242'>\n", + "Variable: rlutValue: 0.0586
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='52, 242,52, 234,48, 234,48, 248,52, 242'>\n", + "Variable: rlutValue: 0.166
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='60, 242,60, 234,56, 234,56, 248,60, 242'>\n", + "Variable: rlutValue: -0.056
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='68, 242,68, 234,64, 234,64, 248,68, 242'>\n", + "Variable: rlutValue: -0.0777
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='77, 242,77, 234,72, 234,72, 248,77, 242'>\n", + "Variable: rlutValue: -0.151
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='85, 242,85, 234,81, 234,81, 248,85, 242'>\n", + "Variable: rlutValue: -0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='93, 242,93, 234,89, 234,89, 248,93, 242'>\n", + "Variable: rlutValue: 0.056
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='101, 242,101, 234,97, 234,97, 248,101, 242'>\n", + "Variable: rlutValue: 0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='110, 242,110, 234,105, 234,105, 248,110, 242'>\n", + "Variable: rlutValue: 0.0931
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='118, 242,118, 234,114, 234,114, 248,118, 242'>\n", + "Variable: rlutValue: 0.127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='126, 242,126, 234,122, 234,122, 248,126, 242'>\n", + "Variable: rlutValue: 0.0335
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='134, 242,134, 234,130, 234,130, 248,134, 242'>\n", + "Variable: rlutValue: -0.0905
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='142, 242,142, 234,138, 234,138, 248,142, 242'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='151, 242,151, 234,147, 234,147, 248,151, 242'>\n", + "Variable: rlutValue: -0.036
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='159, 242,159, 234,155, 234,155, 248,159, 242'>\n", + "Variable: rlutValue: -0.00425
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='167, 242,167, 234,163, 234,163, 248,167, 242'>\n", + "Variable: rlutValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='175, 242,175, 234,171, 234,171, 248,175, 242'>\n", + "Variable: rstcreValue: -0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='44, 225,44, 217,40, 217,40, 231,44, 225'>\n", + "Variable: rstcreValue: -0.181
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='52, 225,52, 217,48, 217,48, 231,52, 225'>\n", + "Variable: rstcreValue: 0.0351
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='60, 225,60, 217,56, 217,56, 231,60, 225'>\n", + "Variable: rstcreValue: 0.174
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='68, 225,68, 217,64, 217,64, 231,68, 225'>\n", + "Variable: rstcreValue: 0.144
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='77, 225,77, 217,72, 217,72, 231,77, 225'>\n", + "Variable: rstcreValue: 0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='85, 225,85, 217,81, 217,81, 231,85, 225'>\n", + "Variable: rstcreValue: 0.172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='93, 225,93, 217,89, 217,89, 231,93, 225'>\n", + "Variable: rstcreValue: 0.276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='101, 225,101, 217,97, 217,97, 231,101, 225'>\n", + "Variable: rstcreValue: 0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='110, 225,110, 217,105, 217,105, 231,110, 225'>\n", + "Variable: rstcreValue: -0.0986
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='118, 225,118, 217,114, 217,114, 231,118, 225'>\n", + "Variable: rstcreValue: -0.19
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='126, 225,126, 217,122, 217,122, 231,126, 225'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='134, 225,134, 217,130, 217,130, 231,134, 225'>\n", + "Variable: rstcreValue: -0.042
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='142, 225,142, 217,138, 217,138, 231,142, 225'>\n", + "Variable: rstcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='151, 225,151, 217,147, 217,147, 231,151, 225'>\n", + "Variable: rstcreValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='159, 225,159, 217,155, 217,155, 231,159, 225'>\n", + "Variable: rstcreValue: -0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='167, 225,167, 217,163, 217,163, 231,167, 225'>\n", + "Variable: rstcreValue: 0.0309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='175, 225,175, 217,171, 217,171, 231,175, 225'>\n", + "Variable: ta-200Value: 0.187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='44, 208,44, 200,40, 200,40, 214,44, 208'>\n", + "Variable: ta-200Value: -0.218
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='52, 208,52, 200,48, 200,48, 214,52, 208'>\n", + "Variable: ta-200Value: -0.389
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='60, 208,60, 200,56, 200,56, 214,60, 208'>\n", + "Variable: ta-200Value: -0.0223
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='68, 208,68, 200,64, 200,64, 214,68, 208'>\n", + "Variable: ta-200Value: -0.0538
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='77, 208,77, 200,72, 200,72, 214,77, 208'>\n", + "Variable: ta-200Value: 0.253
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='85, 208,85, 200,81, 200,81, 214,85, 208'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='93, 208,93, 200,89, 200,89, 214,93, 208'>\n", + "Variable: ta-200Value: 0.527
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='101, 208,101, 200,97, 200,97, 214,101, 208'>\n", + "Variable: ta-200Value: 0.153
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='110, 208,110, 200,105, 200,105, 214,110, 208'>\n", + "Variable: ta-200Value: 1.46
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='118, 208,118, 200,114, 200,114, 214,118, 208'>\n", + "Variable: ta-200Value: -0.375
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='126, 208,126, 200,122, 200,122, 214,126, 208'>\n", + "Variable: ta-200Value: -0.0582
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='134, 208,134, 200,130, 200,130, 214,134, 208'>\n", + "Variable: ta-200Value: -0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='142, 208,142, 200,138, 200,138, 214,142, 208'>\n", + "Variable: ta-200Value: -0.427
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='151, 208,151, 200,147, 200,147, 214,151, 208'>\n", + "Variable: ta-200Value: 0.6
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='159, 208,159, 200,155, 200,155, 214,159, 208'>\n", + "Variable: ta-200Value: 0.771
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='167, 208,167, 200,163, 200,163, 214,167, 208'>\n", + "Variable: ta-200Value: 0.0792
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='175, 208,175, 200,171, 200,171, 214,175, 208'>\n", + "Variable: ta-850Value: 0.69
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='44, 191,44, 182,40, 182,40, 197,44, 191'>\n", + "Variable: ta-850Value: -0.0808
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='52, 191,52, 182,48, 182,48, 197,52, 191'>\n", + "Variable: ta-850Value: -0.298
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='60, 191,60, 182,56, 182,56, 197,60, 191'>\n", + "Variable: ta-850Value: -0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='68, 191,68, 182,64, 182,64, 197,68, 191'>\n", + "Variable: ta-850Value: -0.131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='77, 191,77, 182,72, 182,72, 197,77, 191'>\n", + "Variable: ta-850Value: 0.107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='85, 191,85, 182,81, 182,81, 197,85, 191'>\n", + "Variable: ta-850Value: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='93, 191,93, 182,89, 182,89, 197,93, 191'>\n", + "Variable: ta-850Value: -0.0249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='101, 191,101, 182,97, 182,97, 197,101, 191'>\n", + "Variable: ta-850Value: 0.561
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='110, 191,110, 182,105, 182,105, 197,110, 191'>\n", + "Variable: ta-850Value: 0.486
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='118, 191,118, 182,114, 182,114, 197,118, 191'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='126, 191,126, 182,122, 182,122, 197,126, 191'>\n", + "Variable: ta-850Value: 0.864
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='134, 191,134, 182,130, 182,130, 197,134, 191'>\n", + "Variable: ta-850Value: 0.473
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='142, 191,142, 182,138, 182,138, 197,142, 191'>\n", + "Variable: ta-850Value: -0.073
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='151, 191,151, 182,147, 182,147, 197,151, 191'>\n", + "Variable: ta-850Value: -0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='159, 191,159, 182,155, 182,155, 197,159, 191'>\n", + "Variable: ta-850Value: 0.989
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='167, 191,167, 182,163, 182,163, 197,167, 191'>\n", + "Variable: ta-850Value: 0.872
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='175, 191,175, 182,171, 182,171, 197,175, 191'>\n", + "Variable: tasValue: -0.0373
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='44, 174,44, 165,40, 165,40, 180,44, 174'>\n", + "Variable: tasValue: -0.0597
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='52, 174,52, 165,48, 165,48, 180,52, 174'>\n", + "Variable: tasValue: -0.189
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='60, 174,60, 165,56, 165,56, 180,60, 174'>\n", + "Variable: tasValue: -0.0919
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='68, 174,68, 165,64, 165,64, 180,68, 174'>\n", + "Variable: tasValue: -0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='77, 174,77, 165,72, 165,72, 180,77, 174'>\n", + "Variable: tasValue: 0.0306
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='85, 174,85, 165,81, 165,81, 180,85, 174'>\n", + "Variable: tasValue: -0.0852
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='93, 174,93, 165,89, 165,89, 180,93, 174'>\n", + "Variable: tasValue: 0.0114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='101, 174,101, 165,97, 165,97, 180,101, 174'>\n", + "Variable: tasValue: 0.52
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='110, 174,110, 165,105, 165,105, 180,110, 174'>\n", + "Variable: tasValue: 0.505
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='118, 174,118, 165,114, 165,114, 180,118, 174'>\n", + "Variable: tasValue: -0.216
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='126, 174,126, 165,122, 165,122, 180,126, 174'>\n", + "Variable: tasValue: 0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='134, 174,134, 165,130, 165,130, 180,134, 174'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='142, 174,142, 165,138, 165,138, 180,142, 174'>\n", + "Variable: tasValue: 0.0361
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='151, 174,151, 165,147, 165,147, 180,151, 174'>\n", + "Variable: tasValue: -0.3
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='159, 174,159, 165,155, 165,155, 180,159, 174'>\n", + "Variable: tasValue: 0.246
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='167, 174,167, 165,163, 165,163, 180,167, 174'>\n", + "Variable: tasValue: 0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='175, 174,175, 165,171, 165,171, 180,175, 174'>\n", + "Variable: ua-200Value: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='44, 157,44, 148,40, 148,40, 162,44, 157'>\n", + "Variable: ua-200Value: -0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='52, 157,52, 148,48, 148,48, 162,52, 157'>\n", + "Variable: ua-200Value: 0.0461
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='60, 157,60, 148,56, 148,56, 162,60, 157'>\n", + "Variable: ua-200Value: -0.0956
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='68, 157,68, 148,64, 148,64, 162,68, 157'>\n", + "Variable: ua-200Value: -0.0981
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='77, 157,77, 148,72, 148,72, 162,77, 157'>\n", + "Variable: ua-200Value: -0.224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='85, 157,85, 148,81, 148,81, 162,85, 157'>\n", + "Variable: ua-200Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='93, 157,93, 148,89, 148,89, 162,93, 157'>\n", + "Variable: ua-200Value: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='101, 157,101, 148,97, 148,97, 162,101, 157'>\n", + "Variable: ua-200Value: 0.22
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='110, 157,110, 148,105, 148,105, 162,110, 157'>\n", + "Variable: ua-200Value: 0.37
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='118, 157,118, 148,114, 148,114, 162,118, 157'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='126, 157,126, 148,122, 148,122, 162,126, 157'>\n", + "Variable: ua-200Value: 0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='134, 157,134, 148,130, 148,130, 162,134, 157'>\n", + "Variable: ua-200Value: -0.0143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='142, 157,142, 148,138, 148,138, 162,142, 157'>\n", + "Variable: ua-200Value: -0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='151, 157,151, 148,147, 148,147, 162,151, 157'>\n", + "Variable: ua-200Value: 0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='159, 157,159, 148,155, 148,155, 162,159, 157'>\n", + "Variable: ua-200Value: 0.0527
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='167, 157,167, 148,163, 148,163, 162,167, 157'>\n", + "Variable: ua-200Value: 0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='175, 157,175, 148,171, 148,171, 162,175, 157'>\n", + "Variable: ua-850Value: -0.0967
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='44, 140,44, 131,40, 131,40, 145,44, 140'>\n", + "Variable: ua-850Value: -0.247
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='52, 140,52, 131,48, 131,48, 145,52, 140'>\n", + "Variable: ua-850Value: -0.0967
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='60, 140,60, 131,56, 131,56, 145,60, 140'>\n", + "Variable: ua-850Value: 0.0589
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='68, 140,68, 131,64, 131,64, 145,68, 140'>\n", + "Variable: ua-850Value: 0.0186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='77, 140,77, 131,72, 131,72, 145,77, 140'>\n", + "Variable: ua-850Value: -0.279
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='85, 140,85, 131,81, 131,81, 145,85, 140'>\n", + "Variable: ua-850Value: 0.0222
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='93, 140,93, 131,89, 131,89, 145,93, 140'>\n", + "Variable: ua-850Value: -0.0539
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='101, 140,101, 131,97, 131,97, 145,101, 140'>\n", + "Variable: ua-850Value: 0.0871
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='110, 140,110, 131,105, 131,105, 145,110, 140'>\n", + "Variable: ua-850Value: 0.61
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='118, 140,118, 131,114, 131,114, 145,118, 140'>\n", + "Variable: ua-850Value: -0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='126, 140,126, 131,122, 131,122, 145,126, 140'>\n", + "Variable: ua-850Value: 0.0473
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='134, 140,134, 131,130, 131,130, 145,134, 140'>\n", + "Variable: ua-850Value: -0.0131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='142, 140,142, 131,138, 131,138, 145,142, 140'>\n", + "Variable: ua-850Value: -0.343
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='151, 140,151, 131,147, 131,147, 145,151, 140'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='159, 140,159, 131,155, 131,155, 145,159, 140'>\n", + "Variable: ua-850Value: 0.131
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='167, 140,167, 131,163, 131,163, 145,167, 140'>\n", + "Variable: ua-850Value: 0.0232
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='175, 140,175, 131,171, 131,171, 145,175, 140'>\n", + "Variable: va-200Value: 0.0278
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='44, 122,44, 114,40, 114,40, 128,44, 122'>\n", + "Variable: va-200Value: -0.187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='52, 122,52, 114,48, 114,48, 128,52, 122'>\n", + "Variable: va-200Value: -0.0308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='60, 122,60, 114,56, 114,56, 128,60, 122'>\n", + "Variable: va-200Value: -0.00845
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='68, 122,68, 114,64, 114,64, 128,68, 122'>\n", + "Variable: va-200Value: -0.0328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='77, 122,77, 114,72, 114,72, 128,77, 122'>\n", + "Variable: va-200Value: -0.136
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='85, 122,85, 114,81, 114,81, 128,85, 122'>\n", + "Variable: va-200Value: 0.0149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='93, 122,93, 114,89, 114,89, 128,93, 122'>\n", + "Variable: va-200Value: -0.0597
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='101, 122,101, 114,97, 114,97, 128,101, 122'>\n", + "Variable: va-200Value: 0.158
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='110, 122,110, 114,105, 114,105, 128,110, 122'>\n", + "Variable: va-200Value: 0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='118, 122,118, 114,114, 114,114, 128,118, 122'>\n", + "Variable: va-200Value: -0.0975
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='126, 122,126, 114,122, 114,122, 128,126, 122'>\n", + "Variable: va-200Value: 0.1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='134, 122,134, 114,130, 114,130, 128,134, 122'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='142, 122,142, 114,138, 114,138, 128,142, 122'>\n", + "Variable: va-200Value: -0.228
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='151, 122,151, 114,147, 114,147, 128,151, 122'>\n", + "Variable: va-200Value: 0.0477
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='159, 122,159, 114,155, 114,155, 128,159, 122'>\n", + "Variable: va-200Value: 0.0845
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='167, 122,167, 114,163, 114,163, 128,167, 122'>\n", + "Variable: va-200Value: 0.575
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='175, 122,175, 114,171, 114,171, 128,175, 122'>\n", + "Variable: va-850Value: -0.0947
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='44, 105,44, 97,40, 97,40, 111,44, 105'>\n", + "Variable: va-850Value: -0.141
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='52, 105,52, 97,48, 97,48, 111,52, 105'>\n", + "Variable: va-850Value: -0.0195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='60, 105,60, 97,56, 97,56, 111,60, 105'>\n", + "Variable: va-850Value: 0.0638
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='68, 105,68, 97,64, 97,64, 111,68, 105'>\n", + "Variable: va-850Value: 0.0381
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='77, 105,77, 97,72, 97,72, 111,77, 105'>\n", + "Variable: va-850Value: -0.144
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='85, 105,85, 97,81, 97,81, 111,85, 105'>\n", + "Variable: va-850Value: 0.0802
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='93, 105,93, 97,89, 97,89, 111,93, 105'>\n", + "Variable: va-850Value: -0.0648
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='101, 105,101, 97,97, 97,97, 111,101, 105'>\n", + "Variable: va-850Value: 0.269
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='110, 105,110, 97,105, 97,105, 111,110, 105'>\n", + "Variable: va-850Value: 0.242
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='118, 105,118, 97,114, 97,114, 111,118, 105'>\n", + "Variable: va-850Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='126, 105,126, 97,122, 97,122, 111,126, 105'>\n", + "Variable: va-850Value: 0.0772
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='134, 105,134, 97,130, 97,130, 111,134, 105'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='142, 105,142, 97,138, 97,138, 111,142, 105'>\n", + "Variable: va-850Value: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='151, 105,151, 97,147, 97,147, 111,151, 105'>\n", + "Variable: va-850Value: -0.0535
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='159, 105,159, 97,155, 97,155, 111,159, 105'>\n", + "Variable: va-850Value: 0.277
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='167, 105,167, 97,163, 97,163, 111,167, 105'>\n", + "Variable: va-850Value: 0.328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='175, 105,175, 97,171, 97,171, 111,175, 105'>\n", + "Variable: zg-500Value: 0.29
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='44, 88,44, 80,40, 80,40, 94,44, 88'>\n", + "Variable: zg-500Value: 0.0172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='52, 88,52, 80,48, 80,48, 94,52, 88'>\n", + "Variable: zg-500Value: -0.345
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='60, 88,60, 80,56, 80,56, 94,60, 88'>\n", + "Variable: zg-500Value: -0.276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='68, 88,68, 80,64, 80,64, 94,68, 88'>\n", + "Variable: zg-500Value: -0.308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='77, 88,77, 80,72, 80,72, 94,77, 88'>\n", + "Variable: zg-500Value: -0.309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='85, 88,85, 80,81, 80,81, 94,85, 88'>\n", + "Variable: zg-500Value: -0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='93, 88,93, 80,89, 80,89, 94,93, 88'>\n", + "Variable: zg-500Value: -0.252
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='101, 88,101, 80,97, 80,97, 94,101, 88'>\n", + "Variable: zg-500Value: 0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='110, 88,110, 80,105, 80,105, 94,110, 88'>\n", + "Variable: zg-500Value: 1.02
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='118, 88,118, 80,114, 80,114, 94,118, 88'>\n", + "Variable: zg-500Value: 0.0588
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='126, 88,126, 80,122, 80,122, 94,126, 88'>\n", + "Variable: zg-500Value: 1.03
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='134, 88,134, 80,130, 80,130, 94,134, 88'>\n", + "Variable: zg-500Value: 0.749
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='142, 88,142, 80,138, 80,138, 94,142, 88'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='151, 88,151, 80,147, 80,147, 94,151, 88'>\n", + "Variable: zg-500Value: -0.249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='159, 88,159, 80,155, 80,155, 94,159, 88'>\n", + "Variable: zg-500Value: 0.418
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='167, 88,167, 80,163, 80,163, 94,167, 88'>\n", + "Variable: zg-500Value: -0.0172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='175, 88,175, 80,171, 80,171, 94,175, 88'>\n", + "Variable: prValue: -0.00524
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='224, 311,224, 302,220, 302,220, 317,224, 311'>\n", + "Variable: prValue: 0.054
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='232, 311,232, 302,228, 302,228, 317,232, 311'>\n", + "Variable: prValue: 0.098
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='240, 311,240, 302,236, 302,236, 317,240, 311'>\n", + "Variable: prValue: -0.0786
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='248, 311,248, 302,244, 302,244, 317,248, 311'>\n", + "Variable: prValue: -0.0623
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='257, 311,257, 302,252, 302,252, 317,257, 311'>\n", + "Variable: prValue: -0.0974
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='265, 311,265, 302,261, 302,261, 317,265, 311'>\n", + "Variable: prValue: -0.0896
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='273, 311,273, 302,269, 302,269, 317,273, 311'>\n", + "Variable: prValue: -0.0665
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='281, 311,281, 302,277, 302,277, 317,281, 311'>\n", + "Variable: prValue: 0.307
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='290, 311,290, 302,285, 302,285, 317,290, 311'>\n", + "Variable: prValue: -0.23
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='298, 311,298, 302,294, 302,294, 317,298, 311'>\n", + "Variable: prValue: 0.168
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='306, 311,306, 302,302, 302,302, 317,306, 311'>\n", + "Variable: prValue: 0.0901
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='314, 311,314, 302,310, 302,310, 317,314, 311'>\n", + "Variable: prValue: 0.0372
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='322, 311,322, 302,318, 302,318, 317,322, 311'>\n", + "Variable: prValue: 0.043
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='331, 311,331, 302,327, 302,327, 317,331, 311'>\n", + "Variable: prValue: -0.0608
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='339, 311,339, 302,335, 302,335, 317,339, 311'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='347, 311,347, 302,343, 302,343, 317,347, 311'>\n", + "Variable: prValue: 0.0241
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='355, 311,355, 302,351, 302,351, 317,355, 311'>\n", + "Variable: prwValue: -0.0434
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='224, 294,224, 285,220, 285,220, 300,224, 294'>\n", + "Variable: prwValue: -0.0338
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='232, 294,232, 285,228, 285,228, 300,232, 294'>\n", + "Variable: prwValue: 0.0254
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='240, 294,240, 285,236, 285,236, 300,240, 294'>\n", + "Variable: prwValue: 0.00103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='248, 294,248, 285,244, 285,244, 300,248, 294'>\n", + "Variable: prwValue: 0.00599
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='257, 294,257, 285,252, 285,252, 300,257, 294'>\n", + "Variable: prwValue: 0.00995
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='265, 294,265, 285,261, 285,261, 300,265, 294'>\n", + "Variable: prwValue: -0.00103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='273, 294,273, 285,269, 285,269, 300,273, 294'>\n", + "Variable: prwValue: 0.0289
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='281, 294,281, 285,277, 285,277, 300,281, 294'>\n", + "Variable: prwValue: 0.0184
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='290, 294,290, 285,285, 285,285, 300,290, 294'>\n", + "Variable: prwValue: -0.0579
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='298, 294,298, 285,294, 285,294, 300,298, 294'>\n", + "Variable: prwValue: 0.00934
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='306, 294,306, 285,302, 285,302, 300,306, 294'>\n", + "Variable: prwValue: -0.0595
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='314, 294,314, 285,310, 285,310, 300,314, 294'>\n", + "Variable: prwValue: -0.0571
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='322, 294,322, 285,318, 285,318, 300,322, 294'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='331, 294,331, 285,327, 285,327, 300,331, 294'>\n", + "Variable: prwValue: 0.0392
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='339, 294,339, 285,335, 285,335, 300,339, 294'>\n", + "Variable: prwValue: -0.0309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='347, 294,347, 285,343, 285,343, 300,347, 294'>\n", + "Variable: prwValue: -0.0243
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='355, 294,355, 285,351, 285,351, 300,355, 294'>\n", + "Variable: pslValue: -0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='224, 277,224, 268,220, 268,220, 282,224, 277'>\n", + "Variable: pslValue: -0.227
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='232, 277,232, 268,228, 268,228, 282,232, 277'>\n", + "Variable: pslValue: -0.211
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='240, 277,240, 268,236, 268,236, 282,240, 277'>\n", + "Variable: pslValue: 0.00694
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='248, 277,248, 268,244, 268,244, 282,248, 277'>\n", + "Variable: pslValue: 0.0102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='257, 277,257, 268,252, 268,252, 282,257, 277'>\n", + "Variable: pslValue: -0.407
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='265, 277,265, 268,261, 268,261, 282,265, 277'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='273, 277,273, 268,269, 268,269, 282,273, 277'>\n", + "Variable: pslValue: 0.00522
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='281, 277,281, 268,277, 268,277, 282,281, 277'>\n", + "Variable: pslValue: 0.0245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='290, 277,290, 268,285, 268,285, 282,290, 277'>\n", + "Variable: pslValue: 0.0851
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='298, 277,298, 268,294, 268,294, 282,298, 277'>\n", + "Variable: pslValue: -0.205
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='306, 277,306, 268,302, 268,302, 282,306, 277'>\n", + "Variable: pslValue: 0.0316
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='314, 277,314, 268,310, 268,310, 282,314, 277'>\n", + "Variable: pslValue: -0.00749
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='322, 277,322, 268,318, 268,318, 282,322, 277'>\n", + "Variable: pslValue: -0.193
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='331, 277,331, 268,327, 268,327, 282,331, 277'>\n", + "Variable: pslValue: 0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='339, 277,339, 268,335, 268,335, 282,339, 277'>\n", + "Variable: pslValue: -0.051
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='347, 277,347, 268,343, 268,343, 282,347, 277'>\n", + "Variable: pslValue: 0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='355, 277,355, 268,351, 268,351, 282,355, 277'>\n", + "Variable: rltcreValue: -0.0421
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='224, 260,224, 251,220, 251,220, 265,224, 260'>\n", + "Variable: rltcreValue: -0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='232, 260,232, 251,228, 251,228, 265,232, 260'>\n", + "Variable: rltcreValue: -0.0895
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='240, 260,240, 251,236, 251,236, 265,240, 260'>\n", + "Variable: rltcreValue: 0.0147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='248, 260,248, 251,244, 251,244, 265,248, 260'>\n", + "Variable: rltcreValue: 0.0188
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='257, 260,257, 251,252, 251,252, 265,257, 260'>\n", + "Variable: rltcreValue: 0.0226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='265, 260,265, 251,261, 251,261, 265,265, 260'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='273, 260,273, 251,269, 251,269, 265,273, 260'>\n", + "Variable: rltcreValue: 0.122
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='281, 260,281, 251,277, 251,277, 265,281, 260'>\n", + "Variable: rltcreValue: 0.124
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='290, 260,290, 251,285, 251,285, 265,290, 260'>\n", + "Variable: rltcreValue: -0.0437
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='298, 260,298, 251,294, 251,294, 265,298, 260'>\n", + "Variable: rltcreValue: 0.289
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='306, 260,306, 251,302, 251,302, 265,306, 260'>\n", + "Variable: rltcreValue: -0.000107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='314, 260,314, 251,310, 251,310, 265,314, 260'>\n", + "Variable: rltcreValue: -0.0141
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='322, 260,322, 251,318, 251,318, 265,322, 260'>\n", + "Variable: rltcreValue: -0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='331, 260,331, 251,327, 251,327, 265,331, 260'>\n", + "Variable: rltcreValue: 0.0626
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='339, 260,339, 251,335, 251,335, 265,339, 260'>\n", + "Variable: rltcreValue: -0.149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='347, 260,347, 251,343, 251,343, 265,347, 260'>\n", + "Variable: rltcreValue: 0.359
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='355, 260,355, 251,351, 251,351, 265,355, 260'>\n", + "Variable: rlutValue: -0.0283
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='224, 242,224, 234,220, 234,220, 248,224, 242'>\n", + "Variable: rlutValue: -0.0119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='232, 242,232, 234,228, 234,228, 248,232, 242'>\n", + "Variable: rlutValue: 0.0443
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='240, 242,240, 234,236, 234,236, 248,240, 242'>\n", + "Variable: rlutValue: -0.00948
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='248, 242,248, 234,244, 234,244, 248,248, 242'>\n", + "Variable: rlutValue: 0.000409
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='257, 242,257, 234,252, 234,252, 248,257, 242'>\n", + "Variable: rlutValue: -0.159
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='265, 242,265, 234,261, 234,261, 248,265, 242'>\n", + "Variable: rlutValue: -0.014
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='273, 242,273, 234,269, 234,269, 248,273, 242'>\n", + "Variable: rlutValue: 0.0419
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='281, 242,281, 234,277, 234,277, 248,281, 242'>\n", + "Variable: rlutValue: 0.0198
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='290, 242,290, 234,285, 234,285, 248,290, 242'>\n", + "Variable: rlutValue: -0.0105
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='298, 242,298, 234,294, 234,294, 248,298, 242'>\n", + "Variable: rlutValue: 0.278
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='306, 242,306, 234,302, 234,302, 248,306, 242'>\n", + "Variable: rlutValue: 0.024
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='314, 242,314, 234,310, 234,310, 248,314, 242'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='322, 242,322, 234,318, 234,318, 248,322, 242'>\n", + "Variable: rlutValue: -0.0149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='331, 242,331, 234,327, 234,327, 248,331, 242'>\n", + "Variable: rlutValue: 0.0164
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='339, 242,339, 234,335, 234,335, 248,339, 242'>\n", + "Variable: rlutValue: -0.0761
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='347, 242,347, 234,343, 234,343, 248,347, 242'>\n", + "Variable: rlutValue: 0.173
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='355, 242,355, 234,351, 234,351, 248,355, 242'>\n", + "Variable: rstcreValue: -0.0597
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='224, 225,224, 217,220, 217,220, 231,224, 225'>\n", + "Variable: rstcreValue: -0.281
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='232, 225,232, 217,228, 217,228, 231,232, 225'>\n", + "Variable: rstcreValue: -0.17
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='240, 225,240, 217,236, 217,236, 231,240, 225'>\n", + "Variable: rstcreValue: 0.0267
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='248, 225,248, 217,244, 217,244, 231,248, 225'>\n", + "Variable: rstcreValue: 0.0314
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='257, 225,257, 217,252, 217,252, 231,257, 225'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='265, 225,265, 217,261, 217,261, 231,265, 225'>\n", + "Variable: rstcreValue: 0.0229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='273, 225,273, 217,269, 217,269, 231,273, 225'>\n", + "Variable: rstcreValue: 0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='281, 225,281, 217,277, 217,277, 231,281, 225'>\n", + "Variable: rstcreValue: -0.0358
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='290, 225,290, 217,285, 217,285, 231,290, 225'>\n", + "Variable: rstcreValue: -0.0161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='298, 225,298, 217,294, 217,294, 231,298, 225'>\n", + "Variable: rstcreValue: -0.00385
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='306, 225,306, 217,302, 217,302, 231,306, 225'>\n", + "Variable: rstcreValue: 0.000578
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='314, 225,314, 217,310, 217,310, 231,314, 225'>\n", + "Variable: rstcreValue: -0.0961
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='322, 225,322, 217,318, 217,318, 231,322, 225'>\n", + "Variable: rstcreValue: -0.253
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='331, 225,331, 217,327, 217,327, 231,331, 225'>\n", + "Variable: rstcreValue: 0.00668
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='339, 225,339, 217,335, 217,335, 231,339, 225'>\n", + "Variable: rstcreValue: 0.118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='347, 225,347, 217,343, 217,343, 231,347, 225'>\n", + "Variable: rstcreValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='355, 225,355, 217,351, 217,351, 231,355, 225'>\n", + "Variable: ta-200Value: -0.0698
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='224, 208,224, 200,220, 200,220, 214,224, 208'>\n", + "Variable: ta-200Value: -0.237
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='232, 208,232, 200,228, 200,228, 214,232, 208'>\n", + "Variable: ta-200Value: -0.458
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='240, 208,240, 200,236, 200,236, 214,240, 208'>\n", + "Variable: ta-200Value: 0.089
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='248, 208,248, 200,244, 200,244, 214,248, 208'>\n", + "Variable: ta-200Value: 0.0603
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='257, 208,257, 200,252, 200,252, 214,257, 208'>\n", + "Variable: ta-200Value: 0.251
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='265, 208,265, 200,261, 200,261, 214,265, 208'>\n", + "Variable: ta-200Value: 0.0651
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='273, 208,273, 200,269, 200,269, 214,273, 208'>\n", + "Variable: ta-200Value: 0.402
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='281, 208,281, 200,277, 200,277, 214,281, 208'>\n", + "Variable: ta-200Value: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='290, 208,290, 200,285, 200,285, 214,290, 208'>\n", + "Variable: ta-200Value: 1.02
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='298, 208,298, 200,294, 200,294, 214,298, 208'>\n", + "Variable: ta-200Value: -0.514
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='306, 208,306, 200,302, 200,302, 214,306, 208'>\n", + "Variable: ta-200Value: -0.338
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='314, 208,314, 200,310, 200,310, 214,314, 208'>\n", + "Variable: ta-200Value: -0.36
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='322, 208,322, 200,318, 200,318, 214,322, 208'>\n", + "Variable: ta-200Value: -0.367
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='331, 208,331, 200,327, 200,327, 214,331, 208'>\n", + "Variable: ta-200Value: 0.277
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='339, 208,339, 200,335, 200,335, 214,339, 208'>\n", + "Variable: ta-200Value: 0.574
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='347, 208,347, 200,343, 200,343, 214,347, 208'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='355, 208,355, 200,351, 200,351, 214,355, 208'>\n", + "Variable: ta-850Value: 0.669
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='224, 191,224, 182,220, 182,220, 197,224, 191'>\n", + "Variable: ta-850Value: -0.174
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='232, 191,232, 182,228, 182,228, 197,232, 191'>\n", + "Variable: ta-850Value: -0.387
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='240, 191,240, 182,236, 182,236, 197,240, 191'>\n", + "Variable: ta-850Value: -0.112
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='248, 191,248, 182,244, 182,244, 197,248, 191'>\n", + "Variable: ta-850Value: -0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='257, 191,257, 182,252, 182,252, 197,257, 191'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='265, 191,265, 182,261, 182,261, 197,265, 191'>\n", + "Variable: ta-850Value: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='273, 191,273, 182,269, 182,269, 197,273, 191'>\n", + "Variable: ta-850Value: -0.0502
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='281, 191,281, 182,277, 182,277, 197,281, 191'>\n", + "Variable: ta-850Value: 0.384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='290, 191,290, 182,285, 182,285, 197,290, 191'>\n", + "Variable: ta-850Value: 0.351
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='298, 191,298, 182,294, 182,294, 197,298, 191'>\n", + "Variable: ta-850Value: 0.0218
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='306, 191,306, 182,302, 182,302, 197,306, 191'>\n", + "Variable: ta-850Value: 0.543
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='314, 191,314, 182,310, 182,310, 197,314, 191'>\n", + "Variable: ta-850Value: 0.282
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='322, 191,322, 182,318, 182,318, 197,322, 191'>\n", + "Variable: ta-850Value: -0.2
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='331, 191,331, 182,327, 182,327, 197,331, 191'>\n", + "Variable: ta-850Value: -0.229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='339, 191,339, 182,335, 182,335, 197,339, 191'>\n", + "Variable: ta-850Value: 1.02
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='347, 191,347, 182,343, 182,343, 197,347, 191'>\n", + "Variable: ta-850Value: 0.86
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='355, 191,355, 182,351, 182,351, 197,355, 191'>\n", + "Variable: tasValue: 0.0227
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='224, 174,224, 165,220, 165,220, 180,224, 174'>\n", + "Variable: tasValue: -0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='232, 174,232, 165,228, 165,228, 180,232, 174'>\n", + "Variable: tasValue: -0.211
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='240, 174,240, 165,236, 165,236, 180,240, 174'>\n", + "Variable: tasValue: 0.0191
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='248, 174,248, 165,244, 165,244, 180,248, 174'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='257, 174,257, 165,252, 165,252, 180,257, 174'>\n", + "Variable: tasValue: -0.0584
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='265, 174,265, 165,261, 165,261, 180,265, 174'>\n", + "Variable: tasValue: 0.0247
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='273, 174,273, 165,269, 165,269, 180,273, 174'>\n", + "Variable: tasValue: -0.00933
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='281, 174,281, 165,277, 165,277, 180,281, 174'>\n", + "Variable: tasValue: 0.172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='290, 174,290, 165,285, 165,285, 180,290, 174'>\n", + "Variable: tasValue: 0.308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='298, 174,298, 165,294, 165,294, 180,298, 174'>\n", + "Variable: tasValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='306, 174,306, 165,302, 165,302, 180,306, 174'>\n", + "Variable: tasValue: 0.121
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='314, 174,314, 165,310, 165,310, 180,314, 174'>\n", + "Variable: tasValue: 0.00608
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='322, 174,322, 165,318, 165,318, 180,322, 174'>\n", + "Variable: tasValue: -0.116
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='331, 174,331, 165,327, 165,327, 180,331, 174'>\n", + "Variable: tasValue: -0.341
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='339, 174,339, 165,335, 165,335, 180,339, 174'>\n", + "Variable: tasValue: 0.0324
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='347, 174,347, 165,343, 165,343, 180,347, 174'>\n", + "Variable: tasValue: -0.0657
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='355, 174,355, 165,351, 165,351, 180,355, 174'>\n", + "Variable: ua-200Value: 0.1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='224, 157,224, 148,220, 148,220, 162,224, 157'>\n", + "Variable: ua-200Value: -0.228
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='232, 157,232, 148,228, 148,228, 162,232, 157'>\n", + "Variable: ua-200Value: -0.0689
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='240, 157,240, 148,236, 148,236, 162,240, 157'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='248, 157,248, 148,244, 148,244, 162,248, 157'>\n", + "Variable: ua-200Value: -0.0147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='257, 157,257, 148,252, 148,252, 162,257, 157'>\n", + "Variable: ua-200Value: -0.262
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='265, 157,265, 148,261, 148,261, 162,265, 157'>\n", + "Variable: ua-200Value: -0.0658
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='273, 157,273, 148,269, 148,269, 162,273, 157'>\n", + "Variable: ua-200Value: 0.0264
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='281, 157,281, 148,277, 148,277, 162,281, 157'>\n", + "Variable: ua-200Value: 0.128
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='290, 157,290, 148,285, 148,285, 162,290, 157'>\n", + "Variable: ua-200Value: 0.164
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='298, 157,298, 148,294, 148,294, 162,298, 157'>\n", + "Variable: ua-200Value: 0.294
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='306, 157,306, 148,302, 148,302, 162,306, 157'>\n", + "Variable: ua-200Value: -0.122
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='314, 157,314, 148,310, 148,310, 162,314, 157'>\n", + "Variable: ua-200Value: -0.0825
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='322, 157,322, 148,318, 148,318, 162,322, 157'>\n", + "Variable: ua-200Value: -0.221
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='331, 157,331, 148,327, 148,327, 162,331, 157'>\n", + "Variable: ua-200Value: 0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='339, 157,339, 148,335, 148,335, 162,339, 157'>\n", + "Variable: ua-200Value: 0.0813
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='347, 157,347, 148,343, 148,343, 162,347, 157'>\n", + "Variable: ua-200Value: 0.164
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='355, 157,355, 148,351, 148,351, 162,355, 157'>\n", + "Variable: ua-850Value: -0.00425
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='224, 140,224, 131,220, 131,220, 145,224, 140'>\n", + "Variable: ua-850Value: -0.369
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='232, 140,232, 131,228, 131,228, 145,232, 140'>\n", + "Variable: ua-850Value: -0.222
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='240, 140,240, 131,236, 131,236, 145,240, 140'>\n", + "Variable: ua-850Value: 0.174
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='248, 140,248, 131,244, 131,244, 145,248, 140'>\n", + "Variable: ua-850Value: 0.142
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='257, 140,257, 131,252, 131,252, 145,257, 140'>\n", + "Variable: ua-850Value: -0.343
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='265, 140,265, 131,261, 131,261, 145,265, 140'>\n", + "Variable: ua-850Value: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='273, 140,273, 131,269, 131,269, 145,273, 140'>\n", + "Variable: ua-850Value: 0.062
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='281, 140,281, 131,277, 131,277, 145,281, 140'>\n", + "Variable: ua-850Value: -0.0711
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='290, 140,290, 131,285, 131,285, 145,290, 140'>\n", + "Variable: ua-850Value: 0.358
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='298, 140,298, 131,294, 131,294, 145,298, 140'>\n", + "Variable: ua-850Value: 0.0377
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='306, 140,306, 131,302, 131,302, 145,306, 140'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='314, 140,314, 131,310, 131,310, 145,314, 140'>\n", + "Variable: ua-850Value: -0.0225
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='322, 140,322, 131,318, 131,318, 145,322, 140'>\n", + "Variable: ua-850Value: -0.291
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='331, 140,331, 131,327, 131,327, 145,331, 140'>\n", + "Variable: ua-850Value: -0.0535
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='339, 140,339, 131,335, 131,335, 145,339, 140'>\n", + "Variable: ua-850Value: 0.257
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='347, 140,347, 131,343, 131,343, 145,347, 140'>\n", + "Variable: ua-850Value: 0.259
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='355, 140,355, 131,351, 131,351, 145,355, 140'>\n", + "Variable: va-200Value: -0.029
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='224, 122,224, 114,220, 114,220, 128,224, 122'>\n", + "Variable: va-200Value: -0.113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='232, 122,232, 114,228, 114,228, 128,232, 122'>\n", + "Variable: va-200Value: 0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='240, 122,240, 114,236, 114,236, 128,240, 122'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='248, 122,248, 114,244, 114,244, 128,248, 122'>\n", + "Variable: va-200Value: -0.0634
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='257, 122,257, 114,252, 114,252, 128,257, 122'>\n", + "Variable: va-200Value: -0.0917
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='265, 122,265, 114,261, 114,261, 128,265, 122'>\n", + "Variable: va-200Value: -0.0676
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='273, 122,273, 114,269, 114,269, 128,273, 122'>\n", + "Variable: va-200Value: 0.162
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='281, 122,281, 114,277, 114,277, 128,281, 122'>\n", + "Variable: va-200Value: 0.263
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='290, 122,290, 114,285, 114,285, 128,290, 122'>\n", + "Variable: va-200Value: 0.0748
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='298, 122,298, 114,294, 114,294, 128,298, 122'>\n", + "Variable: va-200Value: 0.0978
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='306, 122,306, 114,302, 114,302, 128,306, 122'>\n", + "Variable: va-200Value: -0.0272
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='314, 122,314, 114,310, 114,310, 128,314, 122'>\n", + "Variable: va-200Value: -0.0441
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='322, 122,322, 114,318, 114,318, 128,322, 122'>\n", + "Variable: va-200Value: -0.0712
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='331, 122,331, 114,327, 114,327, 128,331, 122'>\n", + "Variable: va-200Value: 0.0441
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='339, 122,339, 114,335, 114,335, 128,339, 122'>\n", + "Variable: va-200Value: 0.041
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='347, 122,347, 114,343, 114,343, 128,347, 122'>\n", + "Variable: va-200Value: 0.302
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='355, 122,355, 114,351, 114,351, 128,355, 122'>\n", + "Variable: va-850Value: -0.0126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='224, 105,224, 97,220, 97,220, 111,224, 105'>\n", + "Variable: va-850Value: -0.107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='232, 105,232, 97,228, 97,228, 111,232, 105'>\n", + "Variable: va-850Value: -0.044
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='240, 105,240, 97,236, 97,236, 111,240, 105'>\n", + "Variable: va-850Value: 0.034
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='248, 105,248, 97,244, 97,244, 111,248, 105'>\n", + "Variable: va-850Value: -0.0176
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='257, 105,257, 97,252, 97,252, 111,257, 105'>\n", + "Variable: va-850Value: -0.224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='265, 105,265, 97,261, 97,261, 111,265, 105'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='273, 105,273, 97,269, 97,269, 111,273, 105'>\n", + "Variable: va-850Value: -0.0113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='281, 105,281, 97,277, 97,277, 111,281, 105'>\n", + "Variable: va-850Value: 0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='290, 105,290, 97,285, 97,285, 111,290, 105'>\n", + "Variable: va-850Value: 0.137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='298, 105,298, 97,294, 97,294, 111,298, 105'>\n", + "Variable: va-850Value: 0.00755
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='306, 105,306, 97,302, 97,302, 111,306, 105'>\n", + "Variable: va-850Value: 0.0503
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='314, 105,314, 97,310, 97,310, 111,314, 105'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='322, 105,322, 97,318, 97,318, 111,322, 105'>\n", + "Variable: va-850Value: -0.0642
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='331, 105,331, 97,327, 97,327, 111,331, 105'>\n", + "Variable: va-850Value: -0.0616
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='339, 105,339, 97,335, 97,335, 111,339, 105'>\n", + "Variable: va-850Value: 0.39
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='347, 105,347, 97,343, 97,343, 111,347, 105'>\n", + "Variable: va-850Value: 0.395
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='355, 105,355, 97,351, 97,351, 111,355, 105'>\n", + "Variable: zg-500Value: 0.483
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='224, 88,224, 80,220, 80,220, 94,224, 88'>\n", + "Variable: zg-500Value: -0.0625
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='232, 88,232, 80,228, 80,228, 94,232, 88'>\n", + "Variable: zg-500Value: -0.466
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='240, 88,240, 80,236, 80,236, 94,240, 88'>\n", + "Variable: zg-500Value: -0.125
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='248, 88,248, 80,244, 80,244, 94,248, 88'>\n", + "Variable: zg-500Value: -0.149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='257, 88,257, 80,252, 80,252, 94,257, 88'>\n", + "Variable: zg-500Value: -0.304
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='265, 88,265, 80,261, 80,261, 94,265, 88'>\n", + "Variable: zg-500Value: -0.181
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='273, 88,273, 80,269, 80,269, 94,273, 88'>\n", + "Variable: zg-500Value: -0.0651
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='281, 88,281, 80,277, 80,277, 94,281, 88'>\n", + "Variable: zg-500Value: 0.0853
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='290, 88,290, 80,285, 80,285, 94,290, 88'>\n", + "Variable: zg-500Value: 0.85
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='298, 88,298, 80,294, 80,294, 94,298, 88'>\n", + "Variable: zg-500Value: 0.185
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='306, 88,306, 80,302, 80,302, 94,306, 88'>\n", + "Variable: zg-500Value: 1.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='314, 88,314, 80,310, 80,310, 94,314, 88'>\n", + "Variable: zg-500Value: 0.842
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='322, 88,322, 80,318, 80,318, 94,322, 88'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='331, 88,331, 80,327, 80,327, 94,331, 88'>\n", + "Variable: zg-500Value: -0.228
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='339, 88,339, 80,335, 80,335, 94,339, 88'>\n", + "Variable: zg-500Value: 0.444
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='347, 88,347, 80,343, 80,343, 94,347, 88'>\n", + "Variable: zg-500Value: 0.0625
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='355, 88,355, 80,351, 80,351, 94,355, 88'>\n", + "Variable: prValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='44, 311,40, 317,40, 320,48, 320,48, 317'>\n", + "Variable: prValue: 0.0884
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='52, 311,48, 317,48, 320,56, 320,56, 317'>\n", + "Variable: prValue: 0.0484
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='60, 311,56, 317,56, 320,64, 320,64, 317'>\n", + "Variable: prValue: -0.142
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='68, 311,64, 317,64, 320,72, 320,72, 317'>\n", + "Variable: prValue: -0.137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='77, 311,72, 317,72, 320,81, 320,81, 317'>\n", + "Variable: prValue: -0.135
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='85, 311,81, 317,81, 320,89, 320,89, 317'>\n", + "Variable: prValue: -0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='93, 311,89, 317,89, 320,97, 320,97, 317'>\n", + "Variable: prValue: -0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='101, 311,97, 317,97, 320,105, 320,105, 317'>\n", + "Variable: prValue: 0.389
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='110, 311,105, 317,105, 320,114, 320,114, 317'>\n", + "Variable: prValue: 0.0109
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='118, 311,114, 317,114, 320,122, 320,122, 317'>\n", + "Variable: prValue: -0.0706
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='126, 311,122, 317,122, 320,130, 320,130, 317'>\n", + "Variable: prValue: 0.0267
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='134, 311,130, 317,130, 320,138, 320,138, 317'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='142, 311,138, 317,138, 320,147, 320,147, 317'>\n", + "Variable: prValue: 0.0464
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='151, 311,147, 317,147, 320,155, 320,155, 317'>\n", + "Variable: prValue: 0.0202
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='159, 311,155, 317,155, 320,163, 320,163, 317'>\n", + "Variable: prValue: -0.0701
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='167, 311,163, 317,163, 320,171, 320,171, 317'>\n", + "Variable: prValue: 0.0676
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='175, 311,171, 317,171, 320,180, 320,180, 317'>\n", + "Variable: prwValue: -0.049
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='44, 294,40, 300,40, 302,48, 302,48, 300'>\n", + "Variable: prwValue: -0.0106
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='52, 294,48, 300,48, 302,56, 302,56, 300'>\n", + "Variable: prwValue: 0.0317
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='60, 294,56, 300,56, 302,64, 302,64, 300'>\n", + "Variable: prwValue: 0.0164
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='68, 294,64, 300,64, 302,72, 302,72, 300'>\n", + "Variable: prwValue: 0.0106
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='77, 294,72, 300,72, 302,81, 302,81, 300'>\n", + "Variable: prwValue: 0.0248
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='85, 294,81, 300,81, 302,89, 302,89, 300'>\n", + "Variable: prwValue: 0.0158
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='93, 294,89, 300,89, 302,97, 302,97, 300'>\n", + "Variable: prwValue: 0.0654
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='101, 294,97, 300,97, 302,105, 302,105, 300'>\n", + "Variable: prwValue: 0.0347
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='110, 294,105, 300,105, 302,114, 302,114, 300'>\n", + "Variable: prwValue: -0.0844
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='118, 294,114, 300,114, 302,122, 302,122, 300'>\n", + "Variable: prwValue: -0.0116
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='126, 294,122, 300,122, 302,130, 302,130, 300'>\n", + "Variable: prwValue: -0.0658
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='134, 294,130, 300,130, 302,138, 302,138, 300'>\n", + "Variable: prwValue: -0.0612
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='142, 294,138, 300,138, 302,147, 302,147, 300'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='151, 294,147, 300,147, 302,155, 302,155, 300'>\n", + "Variable: prwValue: 0.0549
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='159, 294,155, 300,155, 302,163, 302,163, 300'>\n", + "Variable: prwValue: -0.0659
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='167, 294,163, 300,163, 302,171, 302,171, 300'>\n", + "Variable: prwValue: -0.0531
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='175, 294,171, 300,171, 302,180, 302,180, 300'>\n", + "Variable: pslValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='44, 277,40, 282,40, 285,48, 285,48, 282'>\n", + "Variable: pslValue: -0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='52, 277,48, 282,48, 285,56, 285,56, 282'>\n", + "Variable: pslValue: -0.0865
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='60, 277,56, 282,56, 285,64, 285,64, 282'>\n", + "Variable: pslValue: 0.0342
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='68, 277,64, 282,64, 285,72, 285,72, 282'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='77, 277,72, 282,72, 285,81, 285,81, 282'>\n", + "Variable: pslValue: -0.314
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='85, 277,81, 282,81, 285,89, 285,89, 282'>\n", + "Variable: pslValue: 0.0322
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='93, 277,89, 282,89, 285,97, 285,97, 282'>\n", + "Variable: pslValue: 0.23
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='101, 277,97, 282,97, 285,105, 285,105, 282'>\n", + "Variable: pslValue: 0.143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='110, 277,105, 282,105, 285,114, 285,114, 282'>\n", + "Variable: pslValue: 0.0367
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='118, 277,114, 282,114, 285,122, 285,122, 282'>\n", + "Variable: pslValue: -0.225
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='126, 277,122, 282,122, 285,130, 285,130, 282'>\n", + "Variable: pslValue: -0.000594
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='134, 277,130, 282,130, 285,138, 285,138, 282'>\n", + "Variable: pslValue: 0.0126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='142, 277,138, 282,138, 285,147, 285,147, 282'>\n", + "Variable: pslValue: -0.0888
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='151, 277,147, 282,147, 285,155, 285,155, 282'>\n", + "Variable: pslValue: 0.0716
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='159, 277,155, 282,155, 285,163, 285,163, 282'>\n", + "Variable: pslValue: -0.13
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='167, 277,163, 282,163, 285,171, 285,171, 282'>\n", + "Variable: pslValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='175, 277,171, 282,171, 285,180, 285,180, 282'>\n", + "Variable: rltcreValue: -0.17
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='44, 260,40, 265,40, 268,48, 268,48, 265'>\n", + "Variable: rltcreValue: -0.162
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='52, 260,48, 265,48, 268,56, 268,56, 265'>\n", + "Variable: rltcreValue: -0.143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='60, 260,56, 265,56, 268,64, 268,64, 265'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='68, 260,64, 265,64, 268,72, 268,72, 265'>\n", + "Variable: rltcreValue: -0.00281
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='77, 260,72, 265,72, 268,81, 268,81, 265'>\n", + "Variable: rltcreValue: -0.00539
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='85, 260,81, 265,81, 268,89, 268,89, 265'>\n", + "Variable: rltcreValue: -0.0235
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='93, 260,89, 265,89, 268,97, 268,97, 265'>\n", + "Variable: rltcreValue: 0.367
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='101, 260,97, 265,97, 268,105, 268,105, 265'>\n", + "Variable: rltcreValue: 0.285
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='110, 260,105, 265,105, 268,114, 268,114, 265'>\n", + "Variable: rltcreValue: 0.1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='118, 260,114, 265,114, 268,122, 268,122, 265'>\n", + "Variable: rltcreValue: 0.226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='126, 260,122, 265,122, 268,130, 268,130, 265'>\n", + "Variable: rltcreValue: 0.0502
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='134, 260,130, 265,130, 268,138, 268,138, 265'>\n", + "Variable: rltcreValue: 0.0186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='142, 260,138, 265,138, 268,147, 268,147, 265'>\n", + "Variable: rltcreValue: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='151, 260,147, 265,147, 268,155, 268,155, 265'>\n", + "Variable: rltcreValue: 0.0924
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='159, 260,155, 265,155, 268,163, 268,163, 265'>\n", + "Variable: rltcreValue: -0.159
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='167, 260,163, 265,163, 268,171, 268,171, 265'>\n", + "Variable: rltcreValue: 0.461
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='175, 260,171, 265,171, 268,180, 268,180, 265'>\n", + "Variable: rlutValue: -0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='44, 242,40, 248,40, 251,48, 251,48, 248'>\n", + "Variable: rlutValue: -0.0214
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='52, 242,48, 248,48, 251,56, 251,56, 248'>\n", + "Variable: rlutValue: 0.135
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='60, 242,56, 248,56, 251,64, 251,64, 248'>\n", + "Variable: rlutValue: -0.111
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='68, 242,64, 248,64, 251,72, 251,72, 248'>\n", + "Variable: rlutValue: -0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='77, 242,72, 248,72, 251,81, 251,81, 248'>\n", + "Variable: rlutValue: -0.229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='85, 242,81, 248,81, 251,89, 251,89, 248'>\n", + "Variable: rlutValue: -0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='93, 242,89, 248,89, 251,97, 251,97, 248'>\n", + "Variable: rlutValue: 0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='101, 242,97, 248,97, 251,105, 251,105, 248'>\n", + "Variable: rlutValue: 0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='110, 242,105, 248,105, 251,114, 251,114, 248'>\n", + "Variable: rlutValue: 0.112
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='118, 242,114, 248,114, 251,122, 251,122, 248'>\n", + "Variable: rlutValue: 0.149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='126, 242,122, 248,122, 251,130, 251,130, 248'>\n", + "Variable: rlutValue: 0.0417
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='134, 242,130, 248,130, 251,138, 251,138, 248'>\n", + "Variable: rlutValue: 0.0419
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='142, 242,138, 248,138, 251,147, 251,147, 248'>\n", + "Variable: rlutValue: -0.109
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='151, 242,147, 248,147, 251,155, 251,155, 248'>\n", + "Variable: rlutValue: -0.0178
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='159, 242,155, 248,155, 251,163, 251,163, 248'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='167, 242,163, 248,163, 251,171, 251,171, 248'>\n", + "Variable: rlutValue: 0.247
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='175, 242,171, 248,171, 251,180, 251,180, 248'>\n", + "Variable: rstcreValue: -0.0382
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='44, 225,40, 231,40, 234,48, 234,48, 231'>\n", + "Variable: rstcreValue: -0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='52, 225,48, 231,48, 234,56, 234,56, 231'>\n", + "Variable: rstcreValue: -0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='60, 225,56, 231,56, 234,64, 234,64, 231'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='68, 225,64, 231,64, 234,72, 234,72, 231'>\n", + "Variable: rstcreValue: -0.00677
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='77, 225,72, 231,72, 234,81, 234,81, 231'>\n", + "Variable: rstcreValue: -0.0191
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='85, 225,81, 231,81, 234,89, 234,89, 231'>\n", + "Variable: rstcreValue: -0.0103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='93, 225,89, 231,89, 234,97, 234,97, 231'>\n", + "Variable: rstcreValue: 0.386
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='101, 225,97, 231,97, 234,105, 234,105, 231'>\n", + "Variable: rstcreValue: 0.308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='110, 225,105, 231,105, 234,114, 234,114, 231'>\n", + "Variable: rstcreValue: 0.033
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='118, 225,114, 231,114, 234,122, 234,122, 231'>\n", + "Variable: rstcreValue: -0.0922
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='126, 225,122, 231,122, 234,130, 234,130, 231'>\n", + "Variable: rstcreValue: 0.0456
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='134, 225,130, 231,130, 234,138, 234,138, 231'>\n", + "Variable: rstcreValue: 0.0446
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='142, 225,138, 231,138, 234,147, 234,147, 231'>\n", + "Variable: rstcreValue: -0.287
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='151, 225,147, 231,147, 234,155, 234,155, 231'>\n", + "Variable: rstcreValue: 0.135
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='159, 225,155, 231,155, 234,163, 234,163, 231'>\n", + "Variable: rstcreValue: 0.102
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='167, 225,163, 231,163, 234,171, 234,171, 231'>\n", + "Variable: rstcreValue: 0.161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='175, 225,171, 231,171, 234,180, 234,180, 231'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='44, 208,40, 214,40, 217,48, 217,48, 214'>\n", + "Variable: ta-200Value: -0.3
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='52, 208,48, 214,48, 217,56, 217,56, 214'>\n", + "Variable: ta-200Value: -0.492
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='60, 208,56, 214,56, 217,64, 217,64, 214'>\n", + "Variable: ta-200Value: 0.0514
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='68, 208,64, 214,64, 217,72, 217,72, 214'>\n", + "Variable: ta-200Value: 0.0535
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='77, 208,72, 214,72, 217,81, 217,81, 214'>\n", + "Variable: ta-200Value: 0.172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='85, 208,81, 214,81, 217,89, 217,89, 214'>\n", + "Variable: ta-200Value: 0.00963
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='93, 208,89, 214,89, 217,97, 217,97, 214'>\n", + "Variable: ta-200Value: 0.201
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='101, 208,97, 214,97, 217,105, 217,105, 214'>\n", + "Variable: ta-200Value: -0.2
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='110, 208,105, 214,105, 217,114, 217,114, 214'>\n", + "Variable: ta-200Value: 0.932
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='118, 208,114, 214,114, 217,122, 217,122, 214'>\n", + "Variable: ta-200Value: -0.507
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='126, 208,122, 214,122, 217,130, 217,130, 214'>\n", + "Variable: ta-200Value: -0.432
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='134, 208,130, 214,130, 217,138, 217,138, 214'>\n", + "Variable: ta-200Value: -0.476
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='142, 208,138, 214,138, 217,147, 217,147, 214'>\n", + "Variable: ta-200Value: -0.422
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='151, 208,147, 214,147, 217,155, 217,155, 214'>\n", + "Variable: ta-200Value: 0.185
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='159, 208,155, 214,155, 217,163, 217,163, 214'>\n", + "Variable: ta-200Value: 0.484
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='167, 208,163, 214,163, 217,171, 217,171, 214'>\n", + "Variable: ta-200Value: -0.0399
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='175, 208,171, 214,171, 217,180, 217,180, 214'>\n", + "Variable: ta-850Value: 0.382
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='44, 191,40, 197,40, 200,48, 200,48, 197'>\n", + "Variable: ta-850Value: -0.272
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='52, 191,48, 197,48, 200,56, 200,56, 197'>\n", + "Variable: ta-850Value: -0.328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='60, 191,56, 197,56, 200,64, 200,64, 197'>\n", + "Variable: ta-850Value: -0.0628
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='68, 191,64, 197,64, 200,72, 200,72, 197'>\n", + "Variable: ta-850Value: -0.105
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='77, 191,72, 197,72, 200,81, 200,81, 197'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='85, 191,81, 197,81, 200,89, 200,89, 197'>\n", + "Variable: ta-850Value: -0.0634
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='93, 191,89, 197,89, 200,97, 200,97, 197'>\n", + "Variable: ta-850Value: 0.0308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='101, 191,97, 197,97, 200,105, 200,105, 197'>\n", + "Variable: ta-850Value: 0.341
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='110, 191,105, 197,105, 200,114, 200,114, 197'>\n", + "Variable: ta-850Value: 0.241
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='118, 191,114, 197,114, 200,122, 200,122, 197'>\n", + "Variable: ta-850Value: -0.143
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='126, 191,122, 197,122, 200,130, 200,130, 197'>\n", + "Variable: ta-850Value: 0.346
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='134, 191,130, 197,130, 200,138, 200,138, 197'>\n", + "Variable: ta-850Value: 0.159
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='142, 191,138, 197,138, 200,147, 200,147, 197'>\n", + "Variable: ta-850Value: -0.343
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='151, 191,147, 197,147, 200,155, 200,155, 197'>\n", + "Variable: ta-850Value: -0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='159, 191,155, 197,155, 200,163, 200,163, 197'>\n", + "Variable: ta-850Value: 0.962
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='167, 191,163, 197,163, 200,171, 200,171, 197'>\n", + "Variable: ta-850Value: 0.715
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='175, 191,171, 197,171, 200,180, 200,180, 197'>\n", + "Variable: tasValue: -0.123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='44, 174,40, 180,40, 182,48, 182,48, 180'>\n", + "Variable: tasValue: -0.107
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='52, 174,48, 180,48, 182,56, 182,56, 180'>\n", + "Variable: tasValue: -0.133
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='60, 174,56, 180,56, 182,64, 182,64, 180'>\n", + "Variable: tasValue: 0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='68, 174,64, 180,64, 182,72, 182,72, 180'>\n", + "Variable: tasValue: 0.0987
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='77, 174,72, 180,72, 182,81, 182,81, 180'>\n", + "Variable: tasValue: 0.00933
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='85, 174,81, 180,81, 182,89, 182,89, 180'>\n", + "Variable: tasValue: 0.168
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='93, 174,89, 180,89, 182,97, 182,97, 180'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='101, 174,97, 180,97, 182,105, 182,105, 180'>\n", + "Variable: tasValue: 0.353
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='110, 174,105, 180,105, 182,114, 182,114, 180'>\n", + "Variable: tasValue: 0.374
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='118, 174,114, 180,114, 182,122, 182,122, 180'>\n", + "Variable: tasValue: -0.124
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='126, 174,122, 180,122, 182,130, 182,130, 180'>\n", + "Variable: tasValue: -0.0187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='134, 174,130, 180,130, 182,138, 182,138, 180'>\n", + "Variable: tasValue: -0.0231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='142, 174,138, 180,138, 182,147, 182,147, 180'>\n", + "Variable: tasValue: -0.128
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='151, 174,147, 180,147, 182,155, 182,155, 180'>\n", + "Variable: tasValue: -0.296
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='159, 174,155, 180,155, 182,163, 182,163, 180'>\n", + "Variable: tasValue: 0.214
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='167, 174,163, 180,163, 182,171, 182,171, 180'>\n", + "Variable: tasValue: 0.0893
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='175, 174,171, 180,171, 182,180, 182,180, 180'>\n", + "Variable: ua-200Value: -0.245
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='44, 157,40, 162,40, 165,48, 165,48, 162'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='52, 157,48, 162,48, 165,56, 165,56, 162'>\n", + "Variable: ua-200Value: 0.0884
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='60, 157,56, 162,56, 165,64, 165,64, 162'>\n", + "Variable: ua-200Value: -0.0964
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='68, 157,64, 162,64, 165,72, 165,72, 162'>\n", + "Variable: ua-200Value: -0.122
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='77, 157,72, 162,72, 165,81, 165,81, 162'>\n", + "Variable: ua-200Value: -0.316
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='85, 157,81, 162,81, 165,89, 165,89, 162'>\n", + "Variable: ua-200Value: -0.127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='93, 157,89, 162,89, 165,97, 165,97, 162'>\n", + "Variable: ua-200Value: 0.109
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='101, 157,97, 162,97, 165,105, 165,105, 162'>\n", + "Variable: ua-200Value: 0.0589
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='110, 157,105, 162,105, 165,114, 165,114, 162'>\n", + "Variable: ua-200Value: 0.0934
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='118, 157,114, 162,114, 165,122, 165,122, 162'>\n", + "Variable: ua-200Value: -0.0542
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='126, 157,122, 162,122, 165,130, 165,130, 162'>\n", + "Variable: ua-200Value: -0.21
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='134, 157,130, 162,130, 165,138, 165,138, 162'>\n", + "Variable: ua-200Value: -0.136
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='142, 157,138, 162,138, 165,147, 165,147, 162'>\n", + "Variable: ua-200Value: 0.00547
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='151, 157,147, 162,147, 165,155, 165,155, 162'>\n", + "Variable: ua-200Value: 0.217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='159, 157,155, 162,155, 165,163, 165,163, 162'>\n", + "Variable: ua-200Value: 0.0214
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='167, 157,163, 162,163, 165,171, 165,171, 162'>\n", + "Variable: ua-200Value: 0.58
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='175, 157,171, 162,171, 165,180, 165,180, 162'>\n", + "Variable: ua-850Value: -0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='44, 140,40, 145,40, 148,48, 148,48, 145'>\n", + "Variable: ua-850Value: -0.389
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='52, 140,48, 145,48, 148,56, 148,56, 145'>\n", + "Variable: ua-850Value: -0.29
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='60, 140,56, 145,56, 148,64, 148,64, 145'>\n", + "Variable: ua-850Value: 0.0656
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='68, 140,64, 145,64, 148,72, 148,72, 145'>\n", + "Variable: ua-850Value: 0.0427
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='77, 140,72, 145,72, 148,81, 148,81, 145'>\n", + "Variable: ua-850Value: -0.273
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='85, 140,81, 145,81, 148,89, 148,89, 145'>\n", + "Variable: ua-850Value: 0.0473
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='93, 140,89, 145,89, 148,97, 148,97, 145'>\n", + "Variable: ua-850Value: 0.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='101, 140,97, 145,97, 148,105, 148,105, 145'>\n", + "Variable: ua-850Value: 0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='110, 140,105, 145,105, 148,114, 148,114, 145'>\n", + "Variable: ua-850Value: 0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='118, 140,114, 145,114, 148,122, 148,122, 145'>\n", + "Variable: ua-850Value: -0.0982
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='126, 140,122, 145,122, 148,130, 148,130, 145'>\n", + "Variable: ua-850Value: -0.027
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='134, 140,130, 145,130, 148,138, 148,138, 145'>\n", + "Variable: ua-850Value: -0.0626
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='142, 140,138, 145,138, 148,147, 148,147, 145'>\n", + "Variable: ua-850Value: -0.27
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='151, 140,147, 145,147, 148,155, 148,155, 145'>\n", + "Variable: ua-850Value: 0.000509
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='159, 140,155, 145,155, 148,163, 148,163, 145'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='167, 140,163, 145,163, 148,171, 148,171, 145'>\n", + "Variable: ua-850Value: 0.25
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='175, 140,171, 145,171, 148,180, 148,180, 145'>\n", + "Variable: va-200Value: -0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='44, 122,40, 128,40, 131,48, 131,48, 128'>\n", + "Variable: va-200Value: 0.0138
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='52, 122,48, 128,48, 131,56, 131,56, 128'>\n", + "Variable: va-200Value: 0.14
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='60, 122,56, 128,56, 131,64, 131,64, 128'>\n", + "Variable: va-200Value: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='68, 122,64, 128,64, 131,72, 131,72, 128'>\n", + "Variable: va-200Value: -0.155
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='77, 122,72, 128,72, 131,81, 131,81, 128'>\n", + "Variable: va-200Value: -0.178
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='85, 122,81, 128,81, 131,89, 131,89, 128'>\n", + "Variable: va-200Value: -0.161
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='93, 122,89, 128,89, 131,97, 131,97, 128'>\n", + "Variable: va-200Value: 0.126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='101, 122,97, 128,97, 131,105, 131,105, 128'>\n", + "Variable: va-200Value: 0.067
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='110, 122,105, 128,105, 131,114, 131,114, 128'>\n", + "Variable: va-200Value: 0.0613
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='118, 122,114, 128,114, 131,122, 131,122, 128'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='126, 122,122, 128,122, 131,130, 131,130, 128'>\n", + "Variable: va-200Value: -0.0264
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='134, 122,130, 128,130, 131,138, 131,138, 128'>\n", + "Variable: va-200Value: -0.00287
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='142, 122,138, 128,138, 131,147, 131,147, 128'>\n", + "Variable: va-200Value: 0.00573
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='151, 122,147, 128,147, 131,155, 131,155, 128'>\n", + "Variable: va-200Value: 0.0126
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='159, 122,155, 128,155, 131,163, 131,163, 128'>\n", + "Variable: va-200Value: -0.0401
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='167, 122,163, 128,163, 131,171, 131,171, 128'>\n", + "Variable: va-200Value: 0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='175, 122,171, 128,171, 131,180, 131,180, 128'>\n", + "Variable: va-850Value: -0.0916
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='44, 105,40, 111,40, 114,48, 114,48, 111'>\n", + "Variable: va-850Value: -0.12
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='52, 105,48, 111,48, 114,56, 114,56, 111'>\n", + "Variable: va-850Value: 0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='60, 105,56, 111,56, 114,64, 114,64, 111'>\n", + "Variable: va-850Value: 0.0155
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='68, 105,64, 111,64, 114,72, 114,72, 111'>\n", + "Variable: va-850Value: -0.0309
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='77, 105,72, 111,72, 114,81, 114,81, 111'>\n", + "Variable: va-850Value: -0.219
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='85, 105,81, 111,81, 114,89, 114,89, 111'>\n", + "Variable: va-850Value: -0.00993
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='93, 105,89, 111,89, 114,97, 114,97, 111'>\n", + "Variable: va-850Value: 0.0839
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='101, 105,97, 111,97, 114,105, 114,105, 111'>\n", + "Variable: va-850Value: 0.26
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='110, 105,105, 111,105, 114,114, 114,114, 111'>\n", + "Variable: va-850Value: 0.189
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='118, 105,114, 111,114, 114,122, 114,122, 111'>\n", + "Variable: va-850Value: -0.0199
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='126, 105,122, 111,122, 114,130, 114,130, 111'>\n", + "Variable: va-850Value: 0.0298
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='134, 105,130, 111,130, 114,138, 114,138, 111'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='142, 105,138, 111,138, 114,147, 114,147, 111'>\n", + "Variable: va-850Value: -0.00221
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='151, 105,147, 111,147, 114,155, 114,155, 111'>\n", + "Variable: va-850Value: -0.0121
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='159, 105,155, 111,155, 114,163, 114,163, 111'>\n", + "Variable: va-850Value: 0.359
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='167, 105,163, 111,163, 114,171, 114,171, 111'>\n", + "Variable: va-850Value: 0.391
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='175, 105,171, 111,171, 114,180, 114,180, 111'>\n", + "Variable: zg-500Value: 0.224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='44, 88,40, 94,40, 97,48, 97,48, 94'>\n", + "Variable: zg-500Value: -0.112
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='52, 88,48, 94,48, 97,56, 97,56, 94'>\n", + "Variable: zg-500Value: -0.318
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='60, 88,56, 94,56, 97,64, 97,64, 94'>\n", + "Variable: zg-500Value: -0.0296
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='68, 88,64, 94,64, 97,72, 97,72, 94'>\n", + "Variable: zg-500Value: -0.0619
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='77, 88,72, 94,72, 97,81, 97,81, 94'>\n", + "Variable: zg-500Value: -0.323
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='85, 88,81, 94,81, 97,89, 97,89, 94'>\n", + "Variable: zg-500Value: -0.00497
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='93, 88,89, 94,89, 97,97, 97,97, 94'>\n", + "Variable: zg-500Value: 0.0908
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='101, 88,97, 94,97, 97,105, 97,105, 94'>\n", + "Variable: zg-500Value: 0.00497
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='110, 88,105, 94,105, 97,114, 97,114, 94'>\n", + "Variable: zg-500Value: 0.664
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='118, 88,114, 94,114, 97,122, 97,122, 94'>\n", + "Variable: zg-500Value: 0.0606
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='126, 88,122, 94,122, 97,130, 97,130, 94'>\n", + "Variable: zg-500Value: 1
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='134, 88,130, 94,130, 97,138, 97,138, 94'>\n", + "Variable: zg-500Value: 0.78
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='142, 88,138, 94,138, 97,147, 97,147, 94'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='151, 88,147, 94,147, 97,155, 97,155, 94'>\n", + "Variable: zg-500Value: -0.113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='159, 88,155, 94,155, 97,163, 97,163, 94'>\n", + "Variable: zg-500Value: 0.357
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='167, 88,163, 94,163, 97,171, 97,171, 94'>\n", + "Variable: zg-500Value: -0.0115
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='175, 88,171, 94,171, 97,180, 97,180, 94'>\n", + "Variable: prValue: -0.00842
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='224, 311,220, 317,220, 320,228, 320,228, 317'>\n", + "Variable: prValue: 0.177
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='232, 311,228, 317,228, 320,236, 320,236, 317'>\n", + "Variable: prValue: 0.271
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='240, 311,236, 317,236, 320,244, 320,244, 317'>\n", + "Variable: prValue: -0.0728
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='248, 311,244, 317,244, 320,252, 320,252, 317'>\n", + "Variable: prValue: -0.0872
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='257, 311,252, 317,252, 320,261, 320,261, 317'>\n", + "Variable: prValue: -0.0608
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='265, 311,261, 317,261, 320,269, 320,269, 317'>\n", + "Variable: prValue: -0.105
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='273, 311,269, 317,269, 320,277, 320,277, 317'>\n", + "Variable: prValue: -0.135
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='281, 311,277, 317,277, 320,285, 320,285, 317'>\n", + "Variable: prValue: 0.433
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='290, 311,285, 317,285, 320,294, 320,294, 317'>\n", + "Variable: prValue: -0.0686
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='298, 311,294, 317,294, 320,302, 320,302, 317'>\n", + "Variable: prValue: 0.0909
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='306, 311,302, 317,302, 320,310, 320,310, 317'>\n", + "Variable: prValue: 0.193
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='314, 311,310, 317,310, 320,318, 320,318, 317'>\n", + "Variable: prValue: 0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='322, 311,318, 317,318, 320,327, 320,327, 317'>\n", + "Variable: prValue: 0.2
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='331, 311,327, 317,327, 320,335, 320,335, 317'>\n", + "Variable: prValue: 0.00602
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='339, 311,335, 317,335, 320,343, 320,343, 317'>\n", + "Variable: prValue: -0.00421
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='347, 311,343, 317,343, 320,351, 320,351, 317'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='355, 311,351, 317,351, 320,360, 320,360, 317'>\n", + "Variable: prwValue: -0.0301
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='224, 294,220, 300,220, 302,228, 302,228, 300'>\n", + "Variable: prwValue: -0.0267
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='232, 294,228, 300,228, 302,236, 302,236, 300'>\n", + "Variable: prwValue: 0.0329
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='240, 294,236, 300,236, 302,244, 302,244, 300'>\n", + "Variable: prwValue: 0.0214
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='248, 294,244, 300,244, 302,252, 302,252, 300'>\n", + "Variable: prwValue: 0.0217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='257, 294,252, 300,252, 302,261, 302,261, 300'>\n", + "Variable: prwValue: 0.0249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='265, 294,261, 300,261, 302,269, 302,269, 300'>\n", + "Variable: prwValue: 0.0281
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='273, 294,269, 300,269, 302,277, 302,277, 300'>\n", + "Variable: prwValue: 0.0746
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='281, 294,277, 300,277, 302,285, 302,285, 300'>\n", + "Variable: prwValue: 0.0137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='290, 294,285, 300,285, 302,294, 302,294, 300'>\n", + "Variable: prwValue: -0.0529
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='298, 294,294, 300,294, 302,302, 302,302, 300'>\n", + "Variable: prwValue: -0.0137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='306, 294,302, 300,302, 302,310, 302,310, 300'>\n", + "Variable: prwValue: -0.0859
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='314, 294,310, 300,310, 302,318, 302,318, 300'>\n", + "Variable: prwValue: -0.0771
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='322, 294,318, 300,318, 302,327, 302,327, 300'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='331, 294,327, 300,327, 302,335, 302,335, 300'>\n", + "Variable: prwValue: 0.033
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='339, 294,335, 300,335, 302,343, 302,343, 300'>\n", + "Variable: prwValue: -0.0381
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='347, 294,343, 300,343, 302,351, 302,351, 300'>\n", + "Variable: prwValue: -0.0313
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='355, 294,351, 300,351, 302,360, 302,360, 300'>\n", + "Variable: pslValue: 0.165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='224, 277,220, 282,220, 285,228, 285,228, 282'>\n", + "Variable: pslValue: -0.197
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='232, 277,228, 282,228, 285,236, 285,236, 282'>\n", + "Variable: pslValue: -0.154
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='240, 277,236, 282,236, 285,244, 285,244, 282'>\n", + "Variable: pslValue: -0.0898
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='248, 277,244, 282,244, 285,252, 285,252, 282'>\n", + "Variable: pslValue: -0.0548
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='257, 277,252, 282,252, 285,261, 285,261, 282'>\n", + "Variable: pslValue: -0.377
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='265, 277,261, 282,261, 285,269, 285,269, 282'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='273, 277,269, 282,269, 285,277, 285,277, 282'>\n", + "Variable: pslValue: 0.258
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='281, 277,277, 282,277, 285,285, 285,285, 282'>\n", + "Variable: pslValue: 0.094
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='290, 277,285, 282,285, 285,294, 285,294, 282'>\n", + "Variable: pslValue: 0.315
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='298, 277,294, 282,294, 285,302, 285,302, 282'>\n", + "Variable: pslValue: -0.108
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='306, 277,302, 282,302, 285,310, 285,310, 282'>\n", + "Variable: pslValue: 0.0457
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='314, 277,310, 282,310, 285,318, 285,318, 282'>\n", + "Variable: pslValue: 0.00317
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='322, 277,318, 282,318, 285,327, 285,327, 282'>\n", + "Variable: pslValue: -0.247
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='331, 277,327, 282,327, 285,335, 285,335, 282'>\n", + "Variable: pslValue: 0.16
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='339, 277,335, 282,335, 285,343, 285,343, 282'>\n", + "Variable: pslValue: -0.162
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='347, 277,343, 282,343, 285,351, 285,351, 282'>\n", + "Variable: pslValue: 0.248
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='355, 277,351, 282,351, 285,360, 285,360, 282'>\n", + "Variable: rltcreValue: -0.159
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='224, 260,220, 265,220, 268,228, 268,228, 265'>\n", + "Variable: rltcreValue: -0.231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='232, 260,228, 265,228, 268,236, 268,236, 265'>\n", + "Variable: rltcreValue: -0.159
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='240, 260,236, 265,236, 268,244, 268,244, 265'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='248, 260,244, 265,244, 268,252, 268,252, 265'>\n", + "Variable: rltcreValue: -0.0234
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='257, 260,252, 265,252, 268,261, 268,261, 265'>\n", + "Variable: rltcreValue: 0.0356
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='265, 260,261, 265,261, 268,269, 268,269, 265'>\n", + "Variable: rltcreValue: -0.027
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='273, 260,269, 265,269, 268,277, 268,277, 265'>\n", + "Variable: rltcreValue: 0.162
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='281, 260,277, 265,277, 268,285, 268,285, 265'>\n", + "Variable: rltcreValue: 0.173
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='290, 260,285, 265,285, 268,294, 268,294, 265'>\n", + "Variable: rltcreValue: 0.0242
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='298, 260,294, 265,294, 268,302, 268,302, 265'>\n", + "Variable: rltcreValue: 0.243
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='306, 260,302, 265,302, 268,310, 268,310, 265'>\n", + "Variable: rltcreValue: 0.0365
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='314, 260,310, 265,310, 268,318, 268,318, 265'>\n", + "Variable: rltcreValue: -0.0193
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='322, 260,318, 265,318, 268,327, 268,327, 265'>\n", + "Variable: rltcreValue: -0.185
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='331, 260,327, 265,327, 268,335, 268,335, 265'>\n", + "Variable: rltcreValue: 0.0658
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='339, 260,335, 265,335, 268,343, 268,343, 265'>\n", + "Variable: rltcreValue: -0.151
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='347, 260,343, 265,343, 268,351, 268,351, 265'>\n", + "Variable: rltcreValue: 0.434
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='355, 260,351, 265,351, 268,360, 268,360, 265'>\n", + "Variable: rlutValue: -0.2
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='224, 242,220, 248,220, 251,228, 251,228, 248'>\n", + "Variable: rlutValue: -0.0834
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='232, 242,228, 248,228, 251,236, 251,236, 248'>\n", + "Variable: rlutValue: 0.0314
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='240, 242,236, 248,236, 251,244, 251,244, 248'>\n", + "Variable: rlutValue: -0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='248, 242,244, 248,244, 251,252, 251,252, 248'>\n", + "Variable: rlutValue: -0.149
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='257, 242,252, 248,252, 251,261, 251,261, 248'>\n", + "Variable: rlutValue: -0.287
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='265, 242,261, 248,261, 251,269, 251,269, 248'>\n", + "Variable: rlutValue: -0.138
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='273, 242,269, 248,269, 251,277, 251,277, 248'>\n", + "Variable: rlutValue: 0.00495
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='281, 242,277, 248,277, 251,285, 251,285, 248'>\n", + "Variable: rlutValue: 0.0534
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='290, 242,285, 248,285, 251,294, 251,294, 248'>\n", + "Variable: rlutValue: 0.0774
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='298, 242,294, 248,294, 251,302, 251,302, 248'>\n", + "Variable: rlutValue: 0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='306, 242,302, 248,302, 251,310, 251,310, 248'>\n", + "Variable: rlutValue: 0.0719
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='314, 242,310, 248,310, 251,318, 251,318, 248'>\n", + "Variable: rlutValue: 0.0165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='322, 242,318, 248,318, 251,327, 251,327, 248'>\n", + "Variable: rlutValue: -0.0424
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='331, 242,327, 248,327, 251,335, 251,335, 248'>\n", + "Variable: rlutValue: -0.0618
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='339, 242,335, 248,335, 251,343, 251,343, 248'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='347, 242,343, 248,343, 251,351, 251,351, 248'>\n", + "Variable: rlutValue: 0.17
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='355, 242,351, 248,351, 251,360, 251,360, 248'>\n", + "Variable: rstcreValue: -0.153
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='224, 225,220, 231,220, 234,228, 234,228, 231'>\n", + "Variable: rstcreValue: -0.208
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='232, 225,228, 231,228, 234,236, 234,236, 231'>\n", + "Variable: rstcreValue: -0.0286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='240, 225,236, 231,236, 234,244, 234,244, 231'>\n", + "Variable: rstcreValue: 0.175
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='248, 225,244, 231,244, 234,252, 234,252, 231'>\n", + "Variable: rstcreValue: 0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='257, 225,252, 231,252, 234,261, 234,261, 231'>\n", + "Variable: rstcreValue: 0.0877
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='265, 225,261, 231,261, 234,269, 234,269, 231'>\n", + "Variable: rstcreValue: 0.175
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='273, 225,269, 231,269, 234,277, 234,277, 231'>\n", + "Variable: rstcreValue: 0.262
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='281, 225,277, 231,277, 234,285, 234,285, 231'>\n", + "Variable: rstcreValue: 0.35
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='290, 225,285, 231,285, 234,294, 234,294, 231'>\n", + "Variable: rstcreValue: 0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='298, 225,294, 231,294, 234,302, 234,302, 231'>\n", + "Variable: rstcreValue: -0.0725
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='306, 225,302, 231,302, 234,310, 234,310, 231'>\n", + "Variable: rstcreValue: -0.0315
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='314, 225,310, 231,310, 234,318, 234,318, 231'>\n", + "Variable: rstcreValue: -0.035
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='322, 225,318, 231,318, 234,327, 234,327, 231'>\n", + "Variable: rstcreValue: -0.183
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='331, 225,327, 231,327, 234,335, 234,335, 231'>\n", + "Variable: rstcreValue: -0.0493
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='339, 225,335, 231,335, 234,343, 234,343, 231'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='347, 225,343, 231,343, 234,351, 234,351, 231'>\n", + "Variable: rstcreValue: 0.112
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='355, 225,351, 231,351, 234,360, 234,360, 231'>\n", + "Variable: ta-200Value: 0.0329
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='224, 208,220, 214,220, 217,228, 217,228, 214'>\n", + "Variable: ta-200Value: -0.137
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='232, 208,228, 214,228, 217,236, 217,236, 214'>\n", + "Variable: ta-200Value: -0.275
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='240, 208,236, 214,236, 217,244, 217,244, 214'>\n", + "Variable: ta-200Value: 0.0365
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='248, 208,244, 214,244, 217,252, 217,252, 214'>\n", + "Variable: ta-200Value: 0.0323
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='257, 208,252, 214,252, 217,261, 217,261, 214'>\n", + "Variable: ta-200Value: 0.25
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='265, 208,261, 214,261, 217,269, 217,269, 214'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='273, 208,269, 214,269, 217,277, 217,277, 214'>\n", + "Variable: ta-200Value: 0.462
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='281, 208,277, 214,277, 217,285, 217,285, 214'>\n", + "Variable: ta-200Value: -0.0163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='290, 208,285, 214,285, 217,294, 217,294, 214'>\n", + "Variable: ta-200Value: 1.18
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='298, 208,294, 214,294, 217,302, 217,302, 214'>\n", + "Variable: ta-200Value: -0.6
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='306, 208,302, 214,302, 217,310, 217,310, 214'>\n", + "Variable: ta-200Value: -0.319
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='314, 208,310, 214,310, 217,318, 217,318, 214'>\n", + "Variable: ta-200Value: -0.37
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='322, 208,318, 214,318, 217,327, 217,327, 214'>\n", + "Variable: ta-200Value: -0.243
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='331, 208,327, 214,327, 217,335, 217,335, 214'>\n", + "Variable: ta-200Value: 0.296
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='339, 208,335, 214,335, 217,343, 217,343, 214'>\n", + "Variable: ta-200Value: 0.696
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='347, 208,343, 214,343, 217,351, 217,351, 214'>\n", + "Variable: ta-200Value: -0.0238
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='355, 208,351, 214,351, 217,360, 217,360, 214'>\n", + "Variable: ta-850Value: 0.477
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='224, 191,220, 197,220, 200,228, 200,228, 197'>\n", + "Variable: ta-850Value: -0.213
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='232, 191,228, 197,228, 200,236, 200,236, 197'>\n", + "Variable: ta-850Value: -0.202
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='240, 191,236, 197,236, 200,244, 200,244, 197'>\n", + "Variable: ta-850Value: -0.101
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='248, 191,244, 197,244, 200,252, 200,252, 197'>\n", + "Variable: ta-850Value: -0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='257, 191,252, 197,252, 200,261, 200,261, 197'>\n", + "Variable: ta-850Value: 0.0989
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='265, 191,261, 197,261, 200,269, 200,269, 197'>\n", + "Variable: ta-850Value: -0.0932
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='273, 191,269, 197,269, 200,277, 200,277, 197'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='281, 191,277, 197,277, 200,285, 200,285, 197'>\n", + "Variable: ta-850Value: 0.519
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='290, 191,285, 197,285, 200,294, 200,294, 197'>\n", + "Variable: ta-850Value: 0.412
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='298, 191,294, 197,294, 200,302, 200,302, 197'>\n", + "Variable: ta-850Value: -0.0814
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='306, 191,302, 197,302, 200,310, 200,310, 197'>\n", + "Variable: ta-850Value: 0.625
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='314, 191,310, 197,310, 200,318, 200,318, 197'>\n", + "Variable: ta-850Value: 0.379
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='322, 191,318, 197,318, 200,327, 200,327, 197'>\n", + "Variable: ta-850Value: -0.323
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='331, 191,327, 197,327, 200,335, 200,335, 197'>\n", + "Variable: ta-850Value: -0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='339, 191,335, 197,335, 200,343, 200,343, 197'>\n", + "Variable: ta-850Value: 1.04
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='347, 191,343, 197,343, 200,351, 200,351, 197'>\n", + "Variable: ta-850Value: 0.863
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='355, 191,351, 197,351, 200,360, 200,360, 197'>\n", + "Variable: tasValue: -0.0882
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='224, 174,220, 180,220, 182,228, 182,228, 180'>\n", + "Variable: tasValue: -0.183
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='232, 174,228, 180,228, 182,236, 182,236, 180'>\n", + "Variable: tasValue: -0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='240, 174,236, 180,236, 182,244, 182,244, 180'>\n", + "Variable: tasValue: 0.0244
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='248, 174,244, 180,244, 182,252, 182,252, 180'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='257, 174,252, 180,252, 182,261, 182,261, 180'>\n", + "Variable: tasValue: 0.0692
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='265, 174,261, 180,261, 182,269, 182,269, 180'>\n", + "Variable: tasValue: 0.0661
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='273, 174,269, 180,269, 182,277, 182,277, 180'>\n", + "Variable: tasValue: 0.0923
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='281, 174,277, 180,277, 182,285, 182,285, 180'>\n", + "Variable: tasValue: 0.433
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='290, 174,285, 180,285, 182,294, 182,294, 180'>\n", + "Variable: tasValue: 0.519
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='298, 174,294, 180,294, 182,302, 182,302, 180'>\n", + "Variable: tasValue: -0.2
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='306, 174,302, 180,302, 182,310, 182,310, 180'>\n", + "Variable: tasValue: 0.174
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='314, 174,310, 180,310, 182,318, 182,318, 180'>\n", + "Variable: tasValue: -0.0335
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='322, 174,318, 180,318, 182,327, 182,327, 180'>\n", + "Variable: tasValue: -0.221
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='331, 174,327, 180,327, 182,335, 182,335, 180'>\n", + "Variable: tasValue: -0.348
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='339, 174,335, 180,335, 182,343, 182,343, 180'>\n", + "Variable: tasValue: 0.117
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='347, 174,343, 180,343, 182,351, 182,351, 180'>\n", + "Variable: tasValue: -0.0538
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='355, 174,351, 180,351, 182,360, 182,360, 180'>\n", + "Variable: ua-200Value: -0.146
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='224, 157,220, 162,220, 165,228, 165,228, 162'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='232, 157,228, 162,228, 165,236, 165,236, 162'>\n", + "Variable: ua-200Value: 0.383
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='240, 157,236, 162,236, 165,244, 165,244, 162'>\n", + "Variable: ua-200Value: -0.166
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='248, 157,244, 162,244, 165,252, 165,252, 162'>\n", + "Variable: ua-200Value: -0.196
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='257, 157,252, 162,252, 165,261, 165,261, 162'>\n", + "Variable: ua-200Value: -0.236
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='265, 157,261, 162,261, 165,269, 165,269, 162'>\n", + "Variable: ua-200Value: -0.213
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='273, 157,269, 162,269, 165,277, 165,277, 162'>\n", + "Variable: ua-200Value: 0.0215
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='281, 157,277, 162,277, 165,285, 165,285, 162'>\n", + "Variable: ua-200Value: 0.379
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='290, 157,285, 162,285, 165,294, 165,294, 162'>\n", + "Variable: ua-200Value: 0.413
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='298, 157,294, 162,294, 165,302, 165,302, 162'>\n", + "Variable: ua-200Value: 0.0403
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='306, 157,302, 162,302, 165,310, 165,310, 162'>\n", + "Variable: ua-200Value: -0.0636
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='314, 157,310, 162,310, 165,318, 165,318, 162'>\n", + "Variable: ua-200Value: -0.027
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='322, 157,318, 162,318, 165,327, 165,327, 162'>\n", + "Variable: ua-200Value: -0.0667
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='331, 157,327, 162,327, 165,335, 165,335, 162'>\n", + "Variable: ua-200Value: 0.454
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='339, 157,335, 162,335, 165,343, 165,343, 162'>\n", + "Variable: ua-200Value: 0.118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='347, 157,343, 162,343, 165,351, 165,351, 162'>\n", + "Variable: ua-200Value: 0.483
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='355, 157,351, 162,351, 165,360, 165,360, 162'>\n", + "Variable: ua-850Value: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='224, 140,220, 145,220, 148,228, 148,228, 145'>\n", + "Variable: ua-850Value: -0.355
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='232, 140,228, 145,228, 148,236, 148,236, 145'>\n", + "Variable: ua-850Value: -0.155
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='240, 140,236, 145,236, 148,244, 148,244, 145'>\n", + "Variable: ua-850Value: 0.0193
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='248, 140,244, 145,244, 148,252, 148,252, 145'>\n", + "Variable: ua-850Value: -0.00233
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='257, 140,252, 145,252, 148,261, 148,261, 145'>\n", + "Variable: ua-850Value: -0.314
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='265, 140,261, 145,261, 148,269, 148,269, 145'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='273, 140,269, 145,269, 148,277, 148,277, 145'>\n", + "Variable: ua-850Value: -0.007
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='281, 140,277, 145,277, 148,285, 148,285, 145'>\n", + "Variable: ua-850Value: 0.0204
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='290, 140,285, 145,285, 148,294, 148,294, 145'>\n", + "Variable: ua-850Value: 0.487
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='298, 140,294, 145,294, 148,302, 148,302, 145'>\n", + "Variable: ua-850Value: 0.0158
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='306, 140,302, 145,302, 148,310, 148,310, 145'>\n", + "Variable: ua-850Value: 0.0648
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='314, 140,310, 145,310, 148,318, 148,318, 145'>\n", + "Variable: ua-850Value: -0.0665
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='322, 140,318, 145,318, 148,327, 148,327, 145'>\n", + "Variable: ua-850Value: -0.303
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='331, 140,327, 145,327, 148,335, 148,335, 145'>\n", + "Variable: ua-850Value: 0.0998
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='339, 140,335, 145,335, 148,343, 148,343, 145'>\n", + "Variable: ua-850Value: 0.0992
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='347, 140,343, 145,343, 148,351, 148,351, 145'>\n", + "Variable: ua-850Value: 0.231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='355, 140,351, 145,351, 148,360, 148,360, 145'>\n", + "Variable: va-200Value: -0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='224, 122,220, 128,220, 131,228, 131,228, 128'>\n", + "Variable: va-200Value: -0.0882
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='232, 122,228, 128,228, 131,236, 131,236, 128'>\n", + "Variable: va-200Value: 0.112
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='240, 122,236, 128,236, 131,244, 131,244, 128'>\n", + "Variable: va-200Value: 0.017
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='248, 122,244, 128,244, 131,252, 131,252, 128'>\n", + "Variable: va-200Value: -0.0479
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='257, 122,252, 128,252, 131,261, 131,261, 128'>\n", + "Variable: va-200Value: -0.127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='265, 122,261, 128,261, 131,269, 131,269, 128'>\n", + "Variable: va-200Value: -0.0895
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='273, 122,269, 128,269, 131,277, 131,277, 128'>\n", + "Variable: va-200Value: 0.109
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='281, 122,277, 128,277, 131,285, 131,285, 128'>\n", + "Variable: va-200Value: -0.0328
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='290, 122,285, 128,285, 131,294, 131,294, 128'>\n", + "Variable: va-200Value: -0.0403
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='298, 122,294, 128,294, 131,302, 131,302, 128'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='306, 122,302, 128,302, 131,310, 131,310, 128'>\n", + "Variable: va-200Value: 0.0907
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='314, 122,310, 128,310, 131,318, 131,318, 128'>\n", + "Variable: va-200Value: 0.0794
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='322, 122,318, 128,318, 131,327, 131,327, 128'>\n", + "Variable: va-200Value: -0.0951
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='331, 122,327, 128,327, 131,335, 131,335, 128'>\n", + "Variable: va-200Value: 0.0744
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='339, 122,335, 128,335, 131,343, 131,343, 128'>\n", + "Variable: va-200Value: 0.00189
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='347, 122,343, 128,343, 131,351, 131,351, 128'>\n", + "Variable: va-200Value: 0.255
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='355, 122,351, 128,351, 131,360, 131,360, 128'>\n", + "Variable: va-850Value: -0.0652
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='224, 105,220, 111,220, 114,228, 114,228, 111'>\n", + "Variable: va-850Value: -0.0689
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='232, 105,228, 111,228, 114,236, 114,236, 111'>\n", + "Variable: va-850Value: 0.0504
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='240, 105,236, 111,236, 114,244, 114,244, 111'>\n", + "Variable: va-850Value: 0.0308
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='248, 105,244, 111,244, 114,252, 114,252, 111'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='257, 105,252, 111,252, 114,261, 114,261, 111'>\n", + "Variable: va-850Value: -0.219
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='265, 105,261, 111,261, 114,269, 114,269, 111'>\n", + "Variable: va-850Value: -0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='273, 105,269, 111,269, 114,277, 114,277, 111'>\n", + "Variable: va-850Value: -0.00615
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='281, 105,277, 111,277, 114,285, 114,285, 111'>\n", + "Variable: va-850Value: 0.166
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='290, 105,285, 111,285, 114,294, 114,294, 111'>\n", + "Variable: va-850Value: 0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='298, 105,294, 111,294, 114,302, 114,302, 111'>\n", + "Variable: va-850Value: 0.0283
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='306, 105,302, 111,302, 114,310, 114,310, 111'>\n", + "Variable: va-850Value: 0.0246
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='314, 105,310, 111,310, 114,318, 114,318, 111'>\n", + "Variable: va-850Value: -0.016
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='322, 105,318, 111,318, 114,327, 114,327, 111'>\n", + "Variable: va-850Value: -0.0652
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='331, 105,327, 111,327, 114,335, 114,335, 111'>\n", + "Variable: va-850Value: -0.0172
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='339, 105,335, 111,335, 114,343, 114,343, 111'>\n", + "Variable: va-850Value: 0.384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='347, 105,343, 111,343, 114,351, 114,351, 111'>\n", + "Variable: va-850Value: 0.427
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='355, 105,351, 111,351, 114,360, 114,360, 111'>\n", + "Variable: zg-500Value: 0.17
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='224, 88,220, 94,220, 97,228, 97,228, 94'>\n", + "Variable: zg-500Value: -0.052
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='232, 88,228, 94,228, 97,236, 97,236, 94'>\n", + "Variable: zg-500Value: -0.33
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='240, 88,236, 94,236, 97,244, 97,244, 94'>\n", + "Variable: zg-500Value: -0.226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='248, 88,244, 94,244, 97,252, 97,252, 94'>\n", + "Variable: zg-500Value: -0.227
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='257, 88,252, 94,252, 97,261, 97,261, 94'>\n", + "Variable: zg-500Value: -0.249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='265, 88,261, 94,261, 97,269, 97,269, 94'>\n", + "Variable: zg-500Value: -0.121
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='273, 88,269, 94,269, 97,277, 97,277, 94'>\n", + "Variable: zg-500Value: -0.0529
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='281, 88,277, 94,277, 97,285, 97,285, 94'>\n", + "Variable: zg-500Value: 0.052
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='290, 88,285, 94,285, 97,294, 97,294, 94'>\n", + "Variable: zg-500Value: 0.976
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='298, 88,294, 94,294, 97,302, 97,302, 94'>\n", + "Variable: zg-500Value: 0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='306, 88,302, 94,302, 97,310, 97,310, 94'>\n", + "Variable: zg-500Value: 1.22
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='314, 88,310, 94,310, 97,318, 97,318, 94'>\n", + "Variable: zg-500Value: 0.983
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='322, 88,318, 94,318, 97,327, 97,327, 94'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='331, 88,327, 94,327, 97,335, 97,335, 94'>\n", + "Variable: zg-500Value: -0.179
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='339, 88,335, 94,335, 97,343, 97,343, 94'>\n", + "Variable: zg-500Value: 0.529
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='347, 88,343, 94,343, 97,351, 97,351, 94'>\n", + "Variable: zg-500Value: 0.118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='355, 88,351, 94,351, 97,360, 97,360, 94'>\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P1 = pcmdi_metrics.graphics.portraits.Portrait()\n", + "P1.decorate(rms_xy, variables, yax)\n", + "P2 = pcmdi_metrics.graphics.portraits.Portrait()\n", + "P2.decorate(rms_xy, variables, yax)\n", + "x.clear()\n", + "\n", + "SET1 = P1.PLOT_SETTINGS\n", + "# Viewport on the Canvas\n", + "SET1.x1 = .1\n", + "SET1.x2 = .45\n", + "SET1.y1 = .2\n", + "SET1.y2 = .8\n", + "\n", + "SET1.legend.x1 = .91\n", + "SET1.legend.x2 = .99\n", + "SET1.legend.y1 = .1\n", + "SET1.legend.y2 = .45\n", + "\n", + "SET2 = P2.PLOT_SETTINGS\n", + "# Viewport on the Canvas\n", + "SET2.x1 = .55\n", + "SET2.x2 = .9\n", + "SET2.y1 = .2\n", + "SET2.y2 = .8\n", + "\n", + "SET2.legend.x1 = .91\n", + "SET2.legend.x2 = .99\n", + "SET2.legend.y1 = .55\n", + "SET2.legend.y2 = .9\n", + "\n", + "for i in range(2):\n", + " multi=i+1.3\n", + " mesh, template, meshfill = P1.plot(rms_xy[...,i+1],x=x,multiple=multi)\n", + " x.png(\"clickable4.png\")\n", + " click_areas1 = vcs.utils.meshToPngCoords(mesh,template,[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable3.png\")\n", + " targets1, tooltips1, extras1 = createTargets(rms_xy[...,i+1],targets_template)\n", + " if i==0:\n", + " click_areas = click_areas1\n", + " targets = targets1\n", + " tooltips = tooltips1\n", + " extras = extras1\n", + " else:\n", + " targets = numpy.concatenate((targets,targets1))\n", + " tooltips = numpy.concatenate((tooltips,tooltips1))\n", + " extras = numpy.concatenate((extras,extras1))\n", + " click_areas = numpy.concatenate((click_areas,click_areas1))\n", + " \n", + " mesh, template, meshfill = P2.plot(rms_xy[...,i+3],x=x,multiple=multi)\n", + " x.png(\"clickable4.png\")\n", + " click_areas1 = vcs.utils.meshToPngCoords(mesh,template,[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable3.png\")\n", + " targets1, tooltips1, extras1 = createTargets(rms_xy[...,i+3],targets_template)\n", + " targets = numpy.concatenate((targets,targets1))\n", + " tooltips = numpy.concatenate((tooltips,tooltips1))\n", + " extras = numpy.concatenate((extras,extras1))\n", + " click_areas = numpy.concatenate((click_areas,click_areas1))\n", + "\n", + "geo = x.geometry()\n", + "# create the html map element\n", + "map_element = vcs.utils.mapPng(\"clickable4.png\",click_areas,targets,tooltips,extras=extras,width=geo[\"width\"],height=geo[\"height\"])\n", + "\n", + "# Geenrate html file\n", + "write_html(\"clickable_portrait_4.html\", map_element)\n", + "viz(\"clickable_portrait_4.html\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Clicking on ticks" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/1Tb/miniconda3/envs/nightly/lib/python3.6/site-packages/ipykernel_launcher.py:24: UserWarning: Warning: converting a masked element to nan.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(238, 2, 4)\n", + "(17, 2, 4)\n", + "[[ 58.63058824 58.63058824 55.03058824 55.03058824]\n", + " [356.5 331.5 331.5 356.5 ]]\n" + ] + }, + { + "data": { + "text/html": [ + "

Clickable Portraits Plots

\n", + "Variable: prValue: -0.0392
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_0071-0100.html' mycustom_attribute='0' shape='poly' coords='48, 332,64, 332,64, 314,48, 314'>\n", + "Variable: prValue: 0.138
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-0.html' mycustom_attribute='1' shape='poly' coords='64, 332,81, 332,81, 314,64, 314'>\n", + "Variable: prValue: 0.163
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_ACCESS1-3.html' mycustom_attribute='2' shape='poly' coords='81, 332,98, 332,98, 314,81, 314'>\n", + "Variable: prValue: -0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CCSM4.html' mycustom_attribute='3' shape='poly' coords='98, 332,115, 332,115, 314,98, 314'>\n", + "Variable: prValue: -0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-BGC.html' mycustom_attribute='4' shape='poly' coords='115, 332,132, 332,132, 314,115, 314'>\n", + "Variable: prValue: -0.0743
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-CAM5.html' mycustom_attribute='5' shape='poly' coords='132, 332,149, 332,149, 314,132, 314'>\n", + "Variable: prValue: -0.125
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-FASTCHEM.html' mycustom_attribute='6' shape='poly' coords='149, 332,166, 332,166, 314,149, 314'>\n", + "Variable: prValue: -0.082
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CESM1-WACCM.html' mycustom_attribute='7' shape='poly' coords='166, 332,183, 332,183, 314,166, 314'>\n", + "Variable: prValue: 0.463
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_CSIRO-Mk3-6-0.html' mycustom_attribute='8' shape='poly' coords='183, 332,200, 332,200, 314,183, 314'>\n", + "Variable: prValue: -0.075
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_FGOALS-g2.html' mycustom_attribute='9' shape='poly' coords='200, 332,217, 332,217, 314,200, 314'>\n", + "Variable: prValue: 0.0512
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-CM3.html' mycustom_attribute='10' shape='poly' coords='217, 332,234, 332,234, 314,217, 314'>\n", + "Variable: prValue: 0.175
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2G.html' mycustom_attribute='11' shape='poly' coords='234, 332,251, 332,251, 314,234, 314'>\n", + "Variable: prValue: 0.0624
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_GFDL-ESM2M.html' mycustom_attribute='12' shape='poly' coords='251, 332,268, 332,268, 314,251, 314'>\n", + "Variable: prValue: 0.0238
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_HadGEM2-AO.html' mycustom_attribute='13' shape='poly' coords='268, 332,285, 332,285, 314,268, 314'>\n", + "Variable: prValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_MIROC4h.html' mycustom_attribute='14' shape='poly' coords='285, 332,302, 332,302, 314,285, 314'>\n", + "Variable: prValue: -0.0021
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1.html' mycustom_attribute='15' shape='poly' coords='302, 332,319, 332,319, 314,302, 314'>\n", + "Variable: prValue: 0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='pr_bcc-csm1-1-m.html' mycustom_attribute='16' shape='poly' coords='319, 332,336, 332,336, 314,319, 314'>\n", + "Variable: prwValue: -0.0418
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_0071-0100.html' mycustom_attribute='17' shape='poly' coords='48, 314,64, 314,64, 296,48, 296'>\n", + "Variable: prwValue: -0.0187
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-0.html' mycustom_attribute='18' shape='poly' coords='64, 314,81, 314,81, 296,64, 296'>\n", + "Variable: prwValue: 0.0332
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_ACCESS1-3.html' mycustom_attribute='19' shape='poly' coords='81, 314,98, 314,98, 296,81, 296'>\n", + "Variable: prwValue: 0.0196
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CCSM4.html' mycustom_attribute='20' shape='poly' coords='98, 314,115, 314,115, 296,98, 296'>\n", + "Variable: prwValue: 0.0217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-BGC.html' mycustom_attribute='21' shape='poly' coords='115, 314,132, 314,132, 296,115, 296'>\n", + "Variable: prwValue: 0.0224
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-CAM5.html' mycustom_attribute='22' shape='poly' coords='132, 314,149, 314,149, 296,132, 296'>\n", + "Variable: prwValue: 0.0213
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-FASTCHEM.html' mycustom_attribute='23' shape='poly' coords='149, 314,166, 314,166, 296,149, 296'>\n", + "Variable: prwValue: 0.0586
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CESM1-WACCM.html' mycustom_attribute='24' shape='poly' coords='166, 314,183, 314,183, 296,166, 296'>\n", + "Variable: prwValue: 0.0123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_CSIRO-Mk3-6-0.html' mycustom_attribute='25' shape='poly' coords='183, 314,200, 314,200, 296,183, 296'>\n", + "Variable: prwValue: -0.0608
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_FGOALS-g2.html' mycustom_attribute='26' shape='poly' coords='200, 314,217, 314,217, 296,200, 296'>\n", + "Variable: prwValue: -0.0123
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-CM3.html' mycustom_attribute='27' shape='poly' coords='217, 314,234, 314,234, 296,217, 296'>\n", + "Variable: prwValue: -0.0759
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2G.html' mycustom_attribute='28' shape='poly' coords='234, 314,251, 314,251, 296,234, 296'>\n", + "Variable: prwValue: -0.0721
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_GFDL-ESM2M.html' mycustom_attribute='29' shape='poly' coords='251, 314,268, 314,268, 296,251, 296'>\n", + "Variable: prwValue: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_HadGEM2-AO.html' mycustom_attribute='30' shape='poly' coords='268, 314,285, 314,285, 296,268, 296'>\n", + "Variable: prwValue: 0.0382
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_MIROC4h.html' mycustom_attribute='31' shape='poly' coords='285, 314,302, 314,302, 296,285, 296'>\n", + "Variable: prwValue: -0.0349
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1.html' mycustom_attribute='32' shape='poly' coords='302, 314,319, 314,319, 296,302, 296'>\n", + "Variable: prwValue: -0.0226
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='prw_bcc-csm1-1-m.html' mycustom_attribute='33' shape='poly' coords='319, 314,336, 314,336, 296,319, 296'>\n", + "Variable: pslValue: -0.0275
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_0071-0100.html' mycustom_attribute='34' shape='poly' coords='48, 296,64, 296,64, 278,48, 278'>\n", + "Variable: pslValue: -0.196
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-0.html' mycustom_attribute='35' shape='poly' coords='64, 296,81, 296,81, 278,64, 278'>\n", + "Variable: pslValue: -0.171
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_ACCESS1-3.html' mycustom_attribute='36' shape='poly' coords='81, 296,98, 296,98, 278,81, 278'>\n", + "Variable: pslValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CCSM4.html' mycustom_attribute='37' shape='poly' coords='98, 296,115, 296,115, 278,98, 278'>\n", + "Variable: pslValue: -0.0153
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-BGC.html' mycustom_attribute='38' shape='poly' coords='115, 296,132, 296,132, 278,115, 278'>\n", + "Variable: pslValue: -0.407
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-CAM5.html' mycustom_attribute='39' shape='poly' coords='132, 296,149, 296,149, 278,132, 278'>\n", + "Variable: pslValue: 0.0323
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-FASTCHEM.html' mycustom_attribute='40' shape='poly' coords='149, 296,166, 296,166, 278,149, 278'>\n", + "Variable: pslValue: 0.239
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CESM1-WACCM.html' mycustom_attribute='41' shape='poly' coords='166, 296,183, 296,183, 278,166, 278'>\n", + "Variable: pslValue: 0.167
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_CSIRO-Mk3-6-0.html' mycustom_attribute='42' shape='poly' coords='183, 296,200, 296,200, 278,183, 278'>\n", + "Variable: pslValue: 0.363
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_FGOALS-g2.html' mycustom_attribute='43' shape='poly' coords='200, 296,217, 296,217, 278,200, 278'>\n", + "Variable: pslValue: -0.277
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-CM3.html' mycustom_attribute='44' shape='poly' coords='217, 296,234, 296,234, 278,217, 278'>\n", + "Variable: pslValue: 0.111
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2G.html' mycustom_attribute='45' shape='poly' coords='234, 296,251, 296,251, 278,234, 278'>\n", + "Variable: pslValue: 0.078
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_GFDL-ESM2M.html' mycustom_attribute='46' shape='poly' coords='251, 296,268, 296,268, 278,251, 278'>\n", + "Variable: pslValue: -0.231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_HadGEM2-AO.html' mycustom_attribute='47' shape='poly' coords='268, 296,285, 296,285, 278,268, 278'>\n", + "Variable: pslValue: 0.209
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_MIROC4h.html' mycustom_attribute='48' shape='poly' coords='285, 296,302, 296,302, 278,285, 278'>\n", + "Variable: pslValue: -0.101
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1.html' mycustom_attribute='49' shape='poly' coords='302, 296,319, 296,319, 278,302, 278'>\n", + "Variable: pslValue: 0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='psl_bcc-csm1-1-m.html' mycustom_attribute='50' shape='poly' coords='319, 296,336, 296,336, 278,319, 278'>\n", + "Variable: rltcreValue: -0.121
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_0071-0100.html' mycustom_attribute='51' shape='poly' coords='48, 278,64, 278,64, 260,48, 260'>\n", + "Variable: rltcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-0.html' mycustom_attribute='52' shape='poly' coords='64, 278,81, 278,81, 260,64, 260'>\n", + "Variable: rltcreValue: -0.171
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_ACCESS1-3.html' mycustom_attribute='53' shape='poly' coords='81, 278,98, 278,98, 260,81, 260'>\n", + "Variable: rltcreValue: 0.0127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CCSM4.html' mycustom_attribute='54' shape='poly' coords='98, 278,115, 278,115, 260,98, 260'>\n", + "Variable: rltcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-BGC.html' mycustom_attribute='55' shape='poly' coords='115, 278,132, 278,132, 260,115, 260'>\n", + "Variable: rltcreValue: 0.069
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-CAM5.html' mycustom_attribute='56' shape='poly' coords='132, 278,149, 278,149, 260,132, 260'>\n", + "Variable: rltcreValue: -0.00485
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-FASTCHEM.html' mycustom_attribute='57' shape='poly' coords='149, 278,166, 278,166, 260,149, 260'>\n", + "Variable: rltcreValue: 0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CESM1-WACCM.html' mycustom_attribute='58' shape='poly' coords='166, 278,183, 278,183, 260,166, 260'>\n", + "Variable: rltcreValue: 0.283
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_CSIRO-Mk3-6-0.html' mycustom_attribute='59' shape='poly' coords='183, 278,200, 278,200, 260,183, 260'>\n", + "Variable: rltcreValue: 0.0575
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_FGOALS-g2.html' mycustom_attribute='60' shape='poly' coords='200, 278,217, 278,217, 260,200, 260'>\n", + "Variable: rltcreValue: 0.0901
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-CM3.html' mycustom_attribute='61' shape='poly' coords='217, 278,234, 278,234, 260,217, 260'>\n", + "Variable: rltcreValue: -0.00442
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2G.html' mycustom_attribute='62' shape='poly' coords='234, 278,251, 278,251, 260,234, 260'>\n", + "Variable: rltcreValue: -0.0807
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_GFDL-ESM2M.html' mycustom_attribute='63' shape='poly' coords='251, 278,268, 278,268, 260,251, 260'>\n", + "Variable: rltcreValue: -0.235
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_HadGEM2-AO.html' mycustom_attribute='64' shape='poly' coords='268, 278,285, 278,285, 260,268, 260'>\n", + "Variable: rltcreValue: 0.00371
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_MIROC4h.html' mycustom_attribute='65' shape='poly' coords='285, 278,302, 278,302, 260,285, 260'>\n", + "Variable: rltcreValue: -0.146
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1.html' mycustom_attribute='66' shape='poly' coords='302, 278,319, 278,319, 260,302, 260'>\n", + "Variable: rltcreValue: 0.545
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rltcre_bcc-csm1-1-m.html' mycustom_attribute='67' shape='poly' coords='319, 278,336, 278,336, 260,319, 260'>\n", + "Variable: rlutValue: -0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_0071-0100.html' mycustom_attribute='68' shape='poly' coords='48, 260,64, 260,64, 242,48, 242'>\n", + "Variable: rlutValue: 0.0063
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-0.html' mycustom_attribute='69' shape='poly' coords='64, 260,81, 260,81, 242,64, 242'>\n", + "Variable: rlutValue: 0.0937
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_ACCESS1-3.html' mycustom_attribute='70' shape='poly' coords='81, 260,98, 260,98, 242,81, 242'>\n", + "Variable: rlutValue: -0.106
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CCSM4.html' mycustom_attribute='71' shape='poly' coords='98, 260,115, 260,115, 242,98, 242'>\n", + "Variable: rlutValue: -0.113
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-BGC.html' mycustom_attribute='72' shape='poly' coords='115, 260,132, 260,132, 242,115, 242'>\n", + "Variable: rlutValue: -0.317
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-CAM5.html' mycustom_attribute='73' shape='poly' coords='132, 260,149, 260,149, 242,132, 242'>\n", + "Variable: rlutValue: -0.104
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-FASTCHEM.html' mycustom_attribute='74' shape='poly' coords='149, 260,166, 260,166, 242,149, 242'>\n", + "Variable: rlutValue: 0.0969
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CESM1-WACCM.html' mycustom_attribute='75' shape='poly' coords='166, 260,183, 260,183, 242,166, 242'>\n", + "Variable: rlutValue: 0.16
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_CSIRO-Mk3-6-0.html' mycustom_attribute='76' shape='poly' coords='183, 260,200, 260,200, 242,183, 242'>\n", + "Variable: rlutValue: 0.129
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_FGOALS-g2.html' mycustom_attribute='77' shape='poly' coords='200, 260,217, 260,217, 242,200, 242'>\n", + "Variable: rlutValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-CM3.html' mycustom_attribute='78' shape='poly' coords='217, 260,234, 260,234, 242,217, 242'>\n", + "Variable: rlutValue: 0.0241
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2G.html' mycustom_attribute='79' shape='poly' coords='234, 260,251, 260,251, 242,234, 242'>\n", + "Variable: rlutValue: -0.0505
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_GFDL-ESM2M.html' mycustom_attribute='80' shape='poly' coords='251, 260,268, 260,268, 242,251, 242'>\n", + "Variable: rlutValue: -0.0498
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_HadGEM2-AO.html' mycustom_attribute='81' shape='poly' coords='268, 260,285, 260,285, 242,268, 242'>\n", + "Variable: rlutValue: -0.0822
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_MIROC4h.html' mycustom_attribute='82' shape='poly' coords='285, 260,302, 260,302, 242,285, 242'>\n", + "Variable: rlutValue: 0.0231
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1.html' mycustom_attribute='83' shape='poly' coords='302, 260,319, 260,319, 242,302, 242'>\n", + "Variable: rlutValue: 0.271
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rlut_bcc-csm1-1-m.html' mycustom_attribute='84' shape='poly' coords='319, 260,336, 260,336, 242,319, 242'>\n", + "Variable: rstcreValue: -0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_0071-0100.html' mycustom_attribute='85' shape='poly' coords='48, 242,64, 242,64, 224,48, 224'>\n", + "Variable: rstcreValue: -0.286
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-0.html' mycustom_attribute='86' shape='poly' coords='64, 242,81, 242,81, 224,64, 224'>\n", + "Variable: rstcreValue: -0.148
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_ACCESS1-3.html' mycustom_attribute='87' shape='poly' coords='81, 242,98, 242,98, 224,81, 224'>\n", + "Variable: rstcreValue: 0.0432
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CCSM4.html' mycustom_attribute='88' shape='poly' coords='98, 242,115, 242,115, 224,98, 224'>\n", + "Variable: rstcreValue: 0.0311
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-BGC.html' mycustom_attribute='89' shape='poly' coords='115, 242,132, 242,132, 224,115, 224'>\n", + "Variable: rstcreValue: 0.000745
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-CAM5.html' mycustom_attribute='90' shape='poly' coords='132, 242,149, 242,149, 224,132, 224'>\n", + "Variable: rstcreValue: 0.0384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-FASTCHEM.html' mycustom_attribute='91' shape='poly' coords='149, 242,166, 242,166, 224,149, 224'>\n", + "Variable: rstcreValue: 0.31
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CESM1-WACCM.html' mycustom_attribute='92' shape='poly' coords='166, 242,183, 242,183, 224,166, 224'>\n", + "Variable: rstcreValue: 0.195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_CSIRO-Mk3-6-0.html' mycustom_attribute='93' shape='poly' coords='183, 242,200, 242,200, 224,183, 224'>\n", + "Variable: rstcreValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_FGOALS-g2.html' mycustom_attribute='94' shape='poly' coords='200, 242,217, 242,217, 224,200, 224'>\n", + "Variable: rstcreValue: -0.205
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-CM3.html' mycustom_attribute='95' shape='poly' coords='217, 242,234, 242,234, 224,217, 224'>\n", + "Variable: rstcreValue: -0.0949
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2G.html' mycustom_attribute='96' shape='poly' coords='234, 242,251, 242,251, 224,234, 224'>\n", + "Variable: rstcreValue: -0.119
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_GFDL-ESM2M.html' mycustom_attribute='97' shape='poly' coords='251, 242,268, 242,268, 224,251, 224'>\n", + "Variable: rstcreValue: -0.307
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_HadGEM2-AO.html' mycustom_attribute='98' shape='poly' coords='268, 242,285, 242,285, 224,268, 224'>\n", + "Variable: rstcreValue: 0.0118
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_MIROC4h.html' mycustom_attribute='99' shape='poly' coords='285, 242,302, 242,302, 224,285, 224'>\n", + "Variable: rstcreValue: -0.015
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1.html' mycustom_attribute='100' shape='poly' coords='302, 242,319, 242,319, 224,302, 224'>\n", + "Variable: rstcreValue: 0.114
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='rstcre_bcc-csm1-1-m.html' mycustom_attribute='101' shape='poly' coords='319, 242,336, 242,336, 224,319, 224'>\n", + "Variable: ta-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_0071-0100.html' mycustom_attribute='102' shape='poly' coords='48, 224,64, 224,64, 206,48, 206'>\n", + "Variable: ta-200Value: -0.256
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-0.html' mycustom_attribute='103' shape='poly' coords='64, 224,81, 224,81, 206,64, 206'>\n", + "Variable: ta-200Value: -0.469
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_ACCESS1-3.html' mycustom_attribute='104' shape='poly' coords='81, 224,98, 224,98, 206,81, 206'>\n", + "Variable: ta-200Value: 0.0237
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CCSM4.html' mycustom_attribute='105' shape='poly' coords='98, 224,115, 224,115, 206,98, 206'>\n", + "Variable: ta-200Value: 0.0117
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-BGC.html' mycustom_attribute='106' shape='poly' coords='115, 224,132, 224,132, 206,115, 206'>\n", + "Variable: ta-200Value: 0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-CAM5.html' mycustom_attribute='107' shape='poly' coords='132, 224,149, 224,149, 206,132, 206'>\n", + "Variable: ta-200Value: 0.00643
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-FASTCHEM.html' mycustom_attribute='108' shape='poly' coords='149, 224,166, 224,166, 206,149, 206'>\n", + "Variable: ta-200Value: 0.394
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CESM1-WACCM.html' mycustom_attribute='109' shape='poly' coords='166, 224,183, 224,183, 206,166, 206'>\n", + "Variable: ta-200Value: -0.185
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_CSIRO-Mk3-6-0.html' mycustom_attribute='110' shape='poly' coords='183, 224,200, 224,200, 206,183, 206'>\n", + "Variable: ta-200Value: 1.14
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_FGOALS-g2.html' mycustom_attribute='111' shape='poly' coords='200, 224,217, 224,217, 206,200, 206'>\n", + "Variable: ta-200Value: -0.641
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-CM3.html' mycustom_attribute='112' shape='poly' coords='217, 224,234, 224,234, 206,217, 206'>\n", + "Variable: ta-200Value: -0.326
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2G.html' mycustom_attribute='113' shape='poly' coords='234, 224,251, 224,251, 206,234, 206'>\n", + "Variable: ta-200Value: -0.393
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_GFDL-ESM2M.html' mycustom_attribute='114' shape='poly' coords='251, 224,268, 224,268, 206,251, 206'>\n", + "Variable: ta-200Value: -0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_HadGEM2-AO.html' mycustom_attribute='115' shape='poly' coords='268, 224,285, 224,285, 206,268, 206'>\n", + "Variable: ta-200Value: 0.28
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_MIROC4h.html' mycustom_attribute='116' shape='poly' coords='285, 224,302, 224,302, 206,285, 206'>\n", + "Variable: ta-200Value: 0.633
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1.html' mycustom_attribute='117' shape='poly' coords='302, 224,319, 224,319, 206,302, 206'>\n", + "Variable: ta-200Value: -0.00877
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-200_bcc-csm1-1-m.html' mycustom_attribute='118' shape='poly' coords='319, 224,336, 224,336, 206,319, 206'>\n", + "Variable: ta-850Value: 0.615
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_0071-0100.html' mycustom_attribute='119' shape='poly' coords='48, 206,64, 206,64, 188,48, 188'>\n", + "Variable: ta-850Value: -0.14
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-0.html' mycustom_attribute='120' shape='poly' coords='64, 206,81, 206,81, 188,64, 188'>\n", + "Variable: ta-850Value: -0.302
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_ACCESS1-3.html' mycustom_attribute='121' shape='poly' coords='81, 206,98, 206,98, 188,81, 188'>\n", + "Variable: ta-850Value: -0.0519
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CCSM4.html' mycustom_attribute='122' shape='poly' coords='98, 206,115, 206,115, 188,98, 188'>\n", + "Variable: ta-850Value: -0.085
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-BGC.html' mycustom_attribute='123' shape='poly' coords='115, 206,132, 206,132, 188,115, 188'>\n", + "Variable: ta-850Value: 0.132
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-CAM5.html' mycustom_attribute='124' shape='poly' coords='132, 206,149, 206,149, 188,132, 188'>\n", + "Variable: ta-850Value: -0.0577
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-FASTCHEM.html' mycustom_attribute='125' shape='poly' coords='149, 206,166, 206,166, 188,149, 188'>\n", + "Variable: ta-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CESM1-WACCM.html' mycustom_attribute='126' shape='poly' coords='166, 206,183, 206,183, 188,166, 188'>\n", + "Variable: ta-850Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_CSIRO-Mk3-6-0.html' mycustom_attribute='127' shape='poly' coords='183, 206,200, 206,200, 188,183, 188'>\n", + "Variable: ta-850Value: 0.42
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_FGOALS-g2.html' mycustom_attribute='128' shape='poly' coords='200, 206,217, 206,217, 188,200, 188'>\n", + "Variable: ta-850Value: -0.0765
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-CM3.html' mycustom_attribute='129' shape='poly' coords='217, 206,234, 206,234, 188,217, 188'>\n", + "Variable: ta-850Value: 0.688
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2G.html' mycustom_attribute='130' shape='poly' coords='234, 206,251, 206,251, 188,234, 188'>\n", + "Variable: ta-850Value: 0.385
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_GFDL-ESM2M.html' mycustom_attribute='131' shape='poly' coords='251, 206,268, 206,268, 188,251, 188'>\n", + "Variable: ta-850Value: -0.209
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_HadGEM2-AO.html' mycustom_attribute='132' shape='poly' coords='268, 206,285, 206,285, 188,268, 188'>\n", + "Variable: ta-850Value: -0.168
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_MIROC4h.html' mycustom_attribute='133' shape='poly' coords='285, 206,302, 206,302, 188,285, 188'>\n", + "Variable: ta-850Value: 1.07
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1.html' mycustom_attribute='134' shape='poly' coords='302, 206,319, 206,319, 188,302, 188'>\n", + "Variable: ta-850Value: 0.887
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ta-850_bcc-csm1-1-m.html' mycustom_attribute='135' shape='poly' coords='319, 206,336, 206,336, 188,319, 188'>\n", + "Variable: tasValue: -0.0626
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_0071-0100.html' mycustom_attribute='136' shape='poly' coords='48, 188,64, 188,64, 170,48, 170'>\n", + "Variable: tasValue: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-0.html' mycustom_attribute='137' shape='poly' coords='64, 188,81, 188,81, 170,64, 170'>\n", + "Variable: tasValue: -0.183
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_ACCESS1-3.html' mycustom_attribute='138' shape='poly' coords='81, 188,98, 188,98, 170,81, 170'>\n", + "Variable: tasValue: 0.0229
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CCSM4.html' mycustom_attribute='139' shape='poly' coords='98, 188,115, 188,115, 170,98, 170'>\n", + "Variable: tasValue: -0.0014
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-BGC.html' mycustom_attribute='140' shape='poly' coords='115, 188,132, 188,132, 170,115, 170'>\n", + "Variable: tasValue: 0.0276
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-CAM5.html' mycustom_attribute='141' shape='poly' coords='132, 188,149, 188,149, 170,132, 170'>\n", + "Variable: tasValue: 0.0463
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-FASTCHEM.html' mycustom_attribute='142' shape='poly' coords='149, 188,166, 188,166, 170,149, 170'>\n", + "Variable: tasValue: 0.0327
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CESM1-WACCM.html' mycustom_attribute='143' shape='poly' coords='166, 188,183, 188,183, 170,166, 170'>\n", + "Variable: tasValue: 0.365
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_CSIRO-Mk3-6-0.html' mycustom_attribute='144' shape='poly' coords='183, 188,200, 188,200, 170,183, 170'>\n", + "Variable: tasValue: 0.477
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_FGOALS-g2.html' mycustom_attribute='145' shape='poly' coords='200, 188,217, 188,217, 170,200, 170'>\n", + "Variable: tasValue: -0.212
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-CM3.html' mycustom_attribute='146' shape='poly' coords='217, 188,234, 188,234, 170,217, 170'>\n", + "Variable: tasValue: 0.165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2G.html' mycustom_attribute='147' shape='poly' coords='234, 188,251, 188,251, 170,234, 170'>\n", + "Variable: tasValue: -0.022
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_GFDL-ESM2M.html' mycustom_attribute='148' shape='poly' coords='251, 188,268, 188,268, 170,251, 170'>\n", + "Variable: tasValue: -0.147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_HadGEM2-AO.html' mycustom_attribute='149' shape='poly' coords='268, 188,285, 188,285, 170,268, 170'>\n", + "Variable: tasValue: -0.372
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_MIROC4h.html' mycustom_attribute='150' shape='poly' coords='285, 188,302, 188,302, 170,285, 170'>\n", + "Variable: tasValue: 0.147
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1.html' mycustom_attribute='151' shape='poly' coords='302, 188,319, 188,319, 170,302, 170'>\n", + "Variable: tasValue: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='tas_bcc-csm1-1-m.html' mycustom_attribute='152' shape='poly' coords='319, 188,336, 188,336, 170,319, 170'>\n", + "Variable: ua-200Value: -0.0273
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_0071-0100.html' mycustom_attribute='153' shape='poly' coords='48, 170,64, 170,64, 152,48, 152'>\n", + "Variable: ua-200Value: -0.0924
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-0.html' mycustom_attribute='154' shape='poly' coords='64, 170,81, 170,81, 152,64, 152'>\n", + "Variable: ua-200Value: 0.217
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_ACCESS1-3.html' mycustom_attribute='155' shape='poly' coords='81, 170,98, 170,98, 152,81, 152'>\n", + "Variable: ua-200Value: -0.0341
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CCSM4.html' mycustom_attribute='156' shape='poly' coords='98, 170,115, 170,115, 152,98, 152'>\n", + "Variable: ua-200Value: -0.0598
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-BGC.html' mycustom_attribute='157' shape='poly' coords='115, 170,132, 170,132, 152,115, 152'>\n", + "Variable: ua-200Value: -0.256
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-CAM5.html' mycustom_attribute='158' shape='poly' coords='132, 170,149, 170,149, 152,132, 152'>\n", + "Variable: ua-200Value: -0.064
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-FASTCHEM.html' mycustom_attribute='159' shape='poly' coords='149, 170,166, 170,166, 152,149, 152'>\n", + "Variable: ua-200Value: 0.139
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CESM1-WACCM.html' mycustom_attribute='160' shape='poly' coords='166, 170,183, 170,183, 152,166, 152'>\n", + "Variable: ua-200Value: 0.384
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_CSIRO-Mk3-6-0.html' mycustom_attribute='161' shape='poly' coords='183, 170,200, 170,200, 152,183, 152'>\n", + "Variable: ua-200Value: 0.422
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_FGOALS-g2.html' mycustom_attribute='162' shape='poly' coords='200, 170,217, 170,217, 152,200, 152'>\n", + "Variable: ua-200Value: 0.134
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-CM3.html' mycustom_attribute='163' shape='poly' coords='217, 170,234, 170,234, 152,217, 152'>\n", + "Variable: ua-200Value: -0.033
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2G.html' mycustom_attribute='164' shape='poly' coords='234, 170,251, 170,251, 152,234, 152'>\n", + "Variable: ua-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_GFDL-ESM2M.html' mycustom_attribute='165' shape='poly' coords='251, 170,268, 170,268, 152,251, 152'>\n", + "Variable: ua-200Value: -0.24
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_HadGEM2-AO.html' mycustom_attribute='166' shape='poly' coords='268, 170,285, 170,285, 152,268, 152'>\n", + "Variable: ua-200Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_MIROC4h.html' mycustom_attribute='167' shape='poly' coords='285, 170,302, 170,302, 152,285, 152'>\n", + "Variable: ua-200Value: 0.207
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1.html' mycustom_attribute='168' shape='poly' coords='302, 170,319, 170,319, 152,302, 152'>\n", + "Variable: ua-200Value: 0.567
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-200_bcc-csm1-1-m.html' mycustom_attribute='169' shape='poly' coords='319, 170,336, 170,336, 152,319, 152'>\n", + "Variable: ua-850Value: -0.184
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_0071-0100.html' mycustom_attribute='170' shape='poly' coords='48, 152,64, 152,64, 134,48, 134'>\n", + "Variable: ua-850Value: -0.4
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-0.html' mycustom_attribute='171' shape='poly' coords='64, 152,81, 152,81, 134,64, 134'>\n", + "Variable: ua-850Value: -0.223
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_ACCESS1-3.html' mycustom_attribute='172' shape='poly' coords='81, 152,98, 152,98, 134,81, 134'>\n", + "Variable: ua-850Value: 0.103
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CCSM4.html' mycustom_attribute='173' shape='poly' coords='98, 152,115, 152,115, 134,98, 134'>\n", + "Variable: ua-850Value: 0.0698
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-BGC.html' mycustom_attribute='174' shape='poly' coords='115, 152,132, 152,132, 134,115, 134'>\n", + "Variable: ua-850Value: -0.349
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-CAM5.html' mycustom_attribute='175' shape='poly' coords='132, 152,149, 152,149, 134,132, 134'>\n", + "Variable: ua-850Value: 0.0862
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-FASTCHEM.html' mycustom_attribute='176' shape='poly' coords='149, 152,166, 152,166, 134,149, 134'>\n", + "Variable: ua-850Value: 0.0869
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CESM1-WACCM.html' mycustom_attribute='177' shape='poly' coords='166, 152,183, 152,183, 134,166, 134'>\n", + "Variable: ua-850Value: -0.0165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_CSIRO-Mk3-6-0.html' mycustom_attribute='178' shape='poly' coords='183, 152,200, 152,200, 134,183, 134'>\n", + "Variable: ua-850Value: 0.517
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_FGOALS-g2.html' mycustom_attribute='179' shape='poly' coords='200, 152,217, 152,217, 134,200, 134'>\n", + "Variable: ua-850Value: -0.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-CM3.html' mycustom_attribute='180' shape='poly' coords='217, 152,234, 152,234, 134,217, 134'>\n", + "Variable: ua-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2G.html' mycustom_attribute='181' shape='poly' coords='234, 152,251, 152,251, 134,234, 134'>\n", + "Variable: ua-850Value: -0.0658
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_GFDL-ESM2M.html' mycustom_attribute='182' shape='poly' coords='251, 152,268, 152,268, 134,251, 134'>\n", + "Variable: ua-850Value: -0.387
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_HadGEM2-AO.html' mycustom_attribute='183' shape='poly' coords='268, 152,285, 152,285, 134,268, 134'>\n", + "Variable: ua-850Value: 0.00197
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_MIROC4h.html' mycustom_attribute='184' shape='poly' coords='285, 152,302, 152,302, 134,285, 134'>\n", + "Variable: ua-850Value: 0.152
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1.html' mycustom_attribute='185' shape='poly' coords='302, 152,319, 152,319, 134,302, 134'>\n", + "Variable: ua-850Value: 0.219
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='ua-850_bcc-csm1-1-m.html' mycustom_attribute='186' shape='poly' coords='319, 152,336, 152,336, 134,319, 134'>\n", + "Variable: va-200Value: -0.0667
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_0071-0100.html' mycustom_attribute='187' shape='poly' coords='48, 134,64, 134,64, 116,48, 116'>\n", + "Variable: va-200Value: -0.165
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-0.html' mycustom_attribute='188' shape='poly' coords='64, 134,81, 134,81, 116,64, 116'>\n", + "Variable: va-200Value: 0.0304
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_ACCESS1-3.html' mycustom_attribute='189' shape='poly' coords='81, 134,98, 134,98, 116,81, 116'>\n", + "Variable: va-200Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CCSM4.html' mycustom_attribute='190' shape='poly' coords='98, 134,115, 134,115, 116,98, 116'>\n", + "Variable: va-200Value: -0.0515
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-BGC.html' mycustom_attribute='191' shape='poly' coords='115, 134,132, 134,132, 116,115, 116'>\n", + "Variable: va-200Value: -0.108
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-CAM5.html' mycustom_attribute='192' shape='poly' coords='132, 134,149, 134,149, 116,132, 116'>\n", + "Variable: va-200Value: -0.0312
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-FASTCHEM.html' mycustom_attribute='193' shape='poly' coords='149, 134,166, 134,166, 116,149, 116'>\n", + "Variable: va-200Value: 0.192
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CESM1-WACCM.html' mycustom_attribute='194' shape='poly' coords='166, 134,183, 134,183, 116,166, 116'>\n", + "Variable: va-200Value: 0.285
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_CSIRO-Mk3-6-0.html' mycustom_attribute='195' shape='poly' coords='183, 134,200, 134,200, 116,183, 116'>\n", + "Variable: va-200Value: 0.117
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_FGOALS-g2.html' mycustom_attribute='196' shape='poly' coords='200, 134,217, 134,217, 116,200, 116'>\n", + "Variable: va-200Value: -0.0127
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-CM3.html' mycustom_attribute='197' shape='poly' coords='217, 134,234, 134,234, 116,217, 116'>\n", + "Variable: va-200Value: 0.0987
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2G.html' mycustom_attribute='198' shape='poly' coords='234, 134,251, 134,251, 116,234, 116'>\n", + "Variable: va-200Value: 0.0346
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_GFDL-ESM2M.html' mycustom_attribute='199' shape='poly' coords='251, 134,268, 134,268, 116,251, 116'>\n", + "Variable: va-200Value: -0.186
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_HadGEM2-AO.html' mycustom_attribute='200' shape='poly' coords='268, 134,285, 134,285, 116,268, 116'>\n", + "Variable: va-200Value: -0.00591
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_MIROC4h.html' mycustom_attribute='201' shape='poly' coords='285, 134,302, 134,302, 116,285, 116'>\n", + "Variable: va-200Value: 0.0641
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1.html' mycustom_attribute='202' shape='poly' coords='302, 134,319, 134,319, 116,302, 116'>\n", + "Variable: va-200Value: 0.511
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-200_bcc-csm1-1-m.html' mycustom_attribute='203' shape='poly' coords='319, 134,336, 134,336, 116,319, 116'>\n", + "Variable: va-850Value: -0.0767
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_0071-0100.html' mycustom_attribute='204' shape='poly' coords='48, 116,64, 116,64, 98,48, 98'>\n", + "Variable: va-850Value: -0.136
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-0.html' mycustom_attribute='205' shape='poly' coords='64, 116,81, 116,81, 98,64, 98'>\n", + "Variable: va-850Value: -0.0203
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_ACCESS1-3.html' mycustom_attribute='206' shape='poly' coords='81, 116,98, 116,98, 98,81, 98'>\n", + "Variable: va-850Value: 0.0753
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CCSM4.html' mycustom_attribute='207' shape='poly' coords='98, 116,115, 116,115, 98,98, 98'>\n", + "Variable: va-850Value: 0.0347
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-BGC.html' mycustom_attribute='208' shape='poly' coords='115, 116,132, 116,132, 98,115, 98'>\n", + "Variable: va-850Value: -0.252
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-CAM5.html' mycustom_attribute='209' shape='poly' coords='132, 116,149, 116,149, 98,132, 98'>\n", + "Variable: va-850Value: 0.0521
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-FASTCHEM.html' mycustom_attribute='210' shape='poly' coords='149, 116,166, 116,166, 98,149, 98'>\n", + "Variable: va-850Value: 0
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CESM1-WACCM.html' mycustom_attribute='211' shape='poly' coords='166, 116,183, 116,183, 98,166, 98'>\n", + "Variable: va-850Value: 0.227
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_CSIRO-Mk3-6-0.html' mycustom_attribute='212' shape='poly' coords='183, 116,200, 116,200, 98,183, 98'>\n", + "Variable: va-850Value: 0.169
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_FGOALS-g2.html' mycustom_attribute='213' shape='poly' coords='200, 116,217, 116,217, 98,200, 98'>\n", + "Variable: va-850Value: -0.0854
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-CM3.html' mycustom_attribute='214' shape='poly' coords='217, 116,234, 116,234, 98,217, 98'>\n", + "Variable: va-850Value: 0.013
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2G.html' mycustom_attribute='215' shape='poly' coords='234, 116,251, 116,251, 98,234, 98'>\n", + "Variable: va-850Value: -0.0564
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_GFDL-ESM2M.html' mycustom_attribute='216' shape='poly' coords='251, 116,268, 116,268, 98,251, 98'>\n", + "Variable: va-850Value: -0.151
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_HadGEM2-AO.html' mycustom_attribute='217' shape='poly' coords='268, 116,285, 116,285, 98,268, 98'>\n", + "Variable: va-850Value: -0.0724
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_MIROC4h.html' mycustom_attribute='218' shape='poly' coords='285, 116,302, 116,302, 98,285, 98'>\n", + "Variable: va-850Value: 0.411
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1.html' mycustom_attribute='219' shape='poly' coords='302, 116,319, 116,319, 98,302, 98'>\n", + "Variable: va-850Value: 0.479
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='va-850_bcc-csm1-1-m.html' mycustom_attribute='220' shape='poly' coords='319, 116,336, 116,336, 98,319, 98'>\n", + "Variable: zg-500Value: 0.353
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_0071-0100.html' mycustom_attribute='221' shape='poly' coords='48, 98,64, 98,64, 80,48, 80'>\n", + "Variable: zg-500Value: -0.0292
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-0.html' mycustom_attribute='222' shape='poly' coords='64, 98,81, 98,81, 80,64, 80'>\n", + "Variable: zg-500Value: -0.45
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_ACCESS1-3.html' mycustom_attribute='223' shape='poly' coords='81, 98,98, 98,98, 80,81, 80'>\n", + "Variable: zg-500Value: -0.213
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CCSM4.html' mycustom_attribute='224' shape='poly' coords='98, 98,115, 98,115, 80,98, 80'>\n", + "Variable: zg-500Value: -0.236
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-BGC.html' mycustom_attribute='225' shape='poly' coords='115, 98,132, 98,132, 80,115, 80'>\n", + "Variable: zg-500Value: -0.299
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-CAM5.html' mycustom_attribute='226' shape='poly' coords='132, 98,149, 98,149, 80,132, 80'>\n", + "Variable: zg-500Value: -0.195
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-FASTCHEM.html' mycustom_attribute='227' shape='poly' coords='149, 98,166, 98,166, 80,149, 80'>\n", + "Variable: zg-500Value: -0.0451
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CESM1-WACCM.html' mycustom_attribute='228' shape='poly' coords='166, 98,183, 98,183, 80,166, 80'>\n", + "Variable: zg-500Value: 0.0837
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_CSIRO-Mk3-6-0.html' mycustom_attribute='229' shape='poly' coords='183, 98,200, 98,200, 80,183, 80'>\n", + "Variable: zg-500Value: 1.05
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_FGOALS-g2.html' mycustom_attribute='230' shape='poly' coords='200, 98,217, 98,217, 80,200, 80'>\n", + "Variable: zg-500Value: 0.11
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-CM3.html' mycustom_attribute='231' shape='poly' coords='217, 98,234, 98,234, 80,217, 80'>\n", + "Variable: zg-500Value: 1.34
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2G.html' mycustom_attribute='232' shape='poly' coords='234, 98,251, 98,251, 80,234, 80'>\n", + "Variable: zg-500Value: 1.04
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_GFDL-ESM2M.html' mycustom_attribute='233' shape='poly' coords='251, 98,268, 98,268, 80,251, 80'>\n", + "Variable: zg-500Value: nan
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_HadGEM2-AO.html' mycustom_attribute='234' shape='poly' coords='268, 98,285, 98,285, 80,268, 80'>\n", + "Variable: zg-500Value: -0.249
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_MIROC4h.html' mycustom_attribute='235' shape='poly' coords='285, 98,302, 98,302, 80,285, 80'>\n", + "Variable: zg-500Value: 0.539
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1.html' mycustom_attribute='236' shape='poly' coords='302, 98,319, 98,319, 80,302, 80'>\n", + "Variable: zg-500Value: 0.0292
\" onmouseover=\"cvi_tip._show(event);\" onmouseout=\"cvi_tip._hide(event);\" onmousemove=\"cvi_tip._move(event);\" href='zg-500_bcc-csm1-1-m.html' mycustom_attribute='237' shape='poly' coords='319, 98,336, 98,336, 80,319, 80'>\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P = pcmdi_metrics.graphics.portraits.Portrait()\n", + "P.decorate(rms_xy, variables, yax)\n", + "\n", + "x.clear()\n", + "mesh, template, meshfill = P.plot(rms_xy[...,0],x=x)\n", + "x.png(\"clickable5.png\")\n", + "# function to create list of target files for each clickable cell\n", + "# adapt this to your needs, html files here will not exist\n", + "targets, tips, extras = createTargets(rms_xy[...,0],targets_template)\n", + "\n", + "# Creates clickable polygons numpy arrays\n", + "click_areas = vcs.utils.meshToPngCoords(mesh,template,[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable5.png\")\n", + "\n", + "print(click_areas.shape)\n", + "\n", + "click_labels_x = vcs.utils.axisToPngCoords([],meshfill,template,'x1',[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable5.png\")\n", + "\n", + "print(click_labels_x.shape)\n", + "print(click_labels_x[0])\n", + "click_labels_y = vcs.utils.axisToPngCoords([],meshfill,template,'y1',[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable5.png\")\n", + "\n", + "targets_lbls_x = extras_lbls_x = tips_lbls_x = [meshfill.xticlabels1[k] for k in sorted(meshfill.xticlabels1.keys())]\n", + "targets_lbls_y = extras_lbls_y = tips_lbls_y = [meshfill.xticlabels1[k] for k in sorted(meshfill.xticlabels1.keys())]\n", + "\n", + "clicks = numpy.concatenate((click_areas,click_labels_x,click_labels_y))\n", + "targets = numpy.concatenate((targets,targets_lbls_x,targets_lbls_y))\n", + "tips = numpy.concatenate((tips,tips_lbls_x,tips_lbls_y))\n", + "extras = numpy.concatenate((extras,extras_lbls_x, extras_lbls_y))\n", + "\n", + "#clicks = click_labels\n", + "#targets = targets\n", + "\n", + "geo = x.geometry()\n", + "# create the html map element\n", + "map_element = vcs.utils.mapPng(\"clickable5.png\",clicks,targets,tips,extras=extras,width=geo[\"width\"],height=geo[\"height\"])\n", + "\n", + "# Geenrate html file\n", + "write_html(\"clickable_portrait_5.html\", map_element)\n", + "viz(\"clickable_portrait_5.html\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Adding a modal" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(238, 2, 4)\n", + "(17, 2, 4)\n", + "[[ 58.63058824 58.63058824 55.03058824 55.03058824]\n", + " [356.5 331.5 331.5 356.5 ]]\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'prin' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 94\u001b[0;31m \u001b[0mwrite_modal_html\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"clickable_portrait_6.html\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmap_element\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mwrite_modal_html\u001b[0;34m(html_file, map_element)\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;31m# Geenrate html file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mwrite_modal_html\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml_file\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmap_element\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 77\u001b[0;31m \u001b[0mprin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"TIPS AND MAPPER:\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mshare_pth\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"/mapper.js\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 78\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhtml_file\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"w\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'prin' is not defined" + ] + } + ], + "source": [ + "def createModalTargets(data,targets_template, season=\"\"):\n", + " # Season is optional. If used, we expect a single string value that indicates the season\n", + " # Axes have been \"decorated\" via P.decorate()\n", + " outs = [] # list of target html files\n", + " tips = [] # list of tooltips\n", + " extras = [] # list of extra attributes for \"area\" tags\n", + " flt = data.ravel()\n", + " indx = 0\n", + " # Y axis\n", + "\n", + " variable_list = data.getAxis(0).id.split(\"___\")\n", + " model_list = data.getAxis(-1).id.split(\"___\")\n", + " for variable_index, variable in enumerate(variable_list):\n", + " targets_template.variable = variable\n", + " # X axis\n", + " for model_index, model in enumerate(model_list):\n", + " targets_template.model = model\n", + " fnm = targets_template()\n", + " # Here we test if \n", + " outs.append(fnm)\n", + " image = outs[-1].replace(\"html\",\"png\")\n", + " value = flt[0]\n", + " # Each area must know which areas are next to it so the modal can traverse them\n", + " # We assign an id of the form \"model-variable-season\" to each area\n", + " # We then save neightbor ids in \"data-\" tags that the javascript will use to traverse by model/variable/etc...\n", + " model_left = model_list[model_index-1]+\"-\"+variable+\"-\"+season if model_index != 0 else \"\"\n", + " model_right = model_list[model_index+1]+\"-\"+variable+\"-\"+season if model_index+1 < len(model_list) else \"\"\n", + " variable_left = model+\"-\"+variable_list[variable_index-1]+\"-\"+season if variable_index != 0 else \"\"\n", + " variable_right = model+\"-\"+variable_list[variable_index+1]+\"-\"+season if variable_index+1 < len(variable_list) else \"\"\n", + " tips.append(\"Model: %s
Variable: %sValue: %.3g
\" % (model,variable,value,image))\n", + " html_id = \"{}-{}-{}\".format(model, variable, season)\n", + " extras.append(\"id='{}' data-value='{}' data-image='{}'\"\n", + " \"data-model='{}' data-modelLeft='{}' data-modelRight='{}'\"\n", + " \"data-variable='{}' data-variableLeft='{}' data-variableRight='{}'\"\n", + " \"data-season='{}'\" #data-seasonLeft='{}' data-seasonRight='{}'\"\n", + " .format(html_id, value, image, model, model_left, model_right, variable, variable_left, variable_right, season ))\n", + " indx += 1\n", + " return outs, tips, extras\n", + "P = pcmdi_metrics.graphics.portraits.Portrait()\n", + "P.decorate(rms_xy, variables, yax)\n", + "\n", + "x.clear()\n", + "mesh, template, meshfill = P.plot(rms_xy[...,0],x=x)\n", + "x.png(\"clickable6.png\")\n", + "# function to create list of target files for each clickable cell\n", + "# adapt this to your needs, html files here will not exist\n", + "targets, tips, extras = createModalTargets(rms_xy[...,0],targets_template)\n", + "\n", + "# Creates clickable polygons numpy arrays\n", + "click_areas = vcs.utils.meshToPngCoords(mesh,template,[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable5.png\")\n", + "\n", + "print(click_areas.shape)\n", + "\n", + "click_labels_x = vcs.utils.axisToPngCoords([],meshfill,template,'x1',[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable5.png\")\n", + "\n", + "print(click_labels_x.shape)\n", + "print(click_labels_x[0])\n", + "click_labels_y = vcs.utils.axisToPngCoords([],meshfill,template,'y1',[meshfill.datawc_x1,meshfill.datawc_x2,meshfill.datawc_y1,meshfill.datawc_y2],png=\"clickable5.png\")\n", + "\n", + "targets_lbls_x = extras_lbls_x = tips_lbls_x = [meshfill.xticlabels1[k] for k in sorted(meshfill.xticlabels1.keys())]\n", + "targets_lbls_y = extras_lbls_y = tips_lbls_y = [meshfill.xticlabels1[k] for k in sorted(meshfill.xticlabels1.keys())]\n", + "\n", + "clicks = numpy.concatenate((click_areas,click_labels_x,click_labels_y))\n", + "targets = numpy.concatenate((targets,targets_lbls_x,targets_lbls_y))\n", + "tips = numpy.concatenate((tips,tips_lbls_x,tips_lbls_y))\n", + "extras = numpy.concatenate((extras,extras_lbls_x, extras_lbls_y))\n", + "\n", + "#clicks = click_labels\n", + "#targets = targets\n", + "\n", + "geo = x.geometry()\n", + "# create the html map element\n", + "map_element = vcs.utils.mapPng(\"clickable6.png\",clicks,targets,tips,extras=extras,width=geo[\"width\"],height=geo[\"height\"])\n", + "\n", + "# Geenrate html file\n", + "def write_modal_html(html_file, map_element):\n", + " prin(\"TIPS AND MAPPER:\",share_pth+\"/mapper.js\")\n", + " with open(html_file,\"w\") as f:\n", + " f.write(\"\")\n", + " f.write('')\n", + " f.write('')\n", + " f.write('')\n", + " f.write('')\n", + " f.write('' % share_pth)\n", + " f.write(\"\" % share_pth)\n", + " f.write(\"\" % share_pth)\n", + " f.write('' % share_pth)\n", + " f.write(\"\")\n", + " f.write(\"

Clickable Portraits Plots

\")\n", + " f.write(map_element)\n", + " #f.write(\"$('area').hover(function(){$(this).css('border','5px');},function(){$(this).css('border','0px');});\")\n", + " f.write(\"\") \n", + " \n", + "write_modal_html(\"clickable_portrait_6.html\", map_element)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/jupyter/ReusablePortraitPlot.ipynb b/doc/jupyter/ReusablePortraitPlot.ipynb new file mode 100644 index 000000000..42208251c --- /dev/null +++ b/doc/jupyter/ReusablePortraitPlot.ipynb @@ -0,0 +1,710 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Reusable User-Frendly Function for Portrait Plots\n", + "\n", + "Notebook written by *Jiwoo Lee* (Feb. 2019)\n", + "\n", + "***\n", + "\n", + "- **OBJECTIVE**: Provide user-frendly and reusable function to generate portrait plot from given 2D array in type of CDMS Transisent Variable.\n", + "- **ADVENTAGE**: Users can adjust image size, colormap, font size, margin, etc., without knowing details of portrait plot generation.\n", + "- **USAGE**: Feed CDMS MV2 2-D array with customizing options to the [function](#function) to generate a portrait plot. See [below](#options) for details." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from __future__ import print_function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare the Notebook\n", + "Below is for embedded VCS image plotting in the Jupyter Notebook (Courtesy of *C. Doutriaux*). " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#\n", + "# Prepare the Notebook\n", + "#\n", + "import tempfile\n", + "import base64\n", + "import pcmdi_metrics.graphics.portraits\n", + "class PortraitNotebook(pcmdi_metrics.graphics.portraits.Portrait):\n", + " def __init__(self,x,*args, **kargs):\n", + " super(PortraitNotebook, self).__init__(*args, **kargs)\n", + " self.x = x\n", + " def _repr_png_(self):\n", + " tmp = tempfile.mktemp() + \".png\"\n", + " self.x.png(tmp)\n", + " f = open(tmp, \"rb\")\n", + " st = f.read()\n", + " return st" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## User-friendly reuseable function to generate a portrait plot as static image\n", + "\n", + "User provides cdms MV2 2D array to the function with custom options if needed. Below code is basically a wrapper of existing portrait plot generation, but help users easily customize their plots, using various options listed below. Users can adjust image size, colormap, font size, margin, etc., without learning details of portrait plot generation.\n", + "\n", + "### Input\n", + "\n", + "- **stat_xy**: *cdms2 MV2 2D array* with proper axes decorated, values to visualize.\n", + "- **imgName**: *string*, file name for PNG image file (e.g., `'YOUR_PLOT.png'` or `'YOUR_PLOT'`. If `.png` is not included, it will be added, so no worry).\n", + "- **plotTilte**: *string*, text to show above plot as its title (optional)\n", + "- **img_length**: *integer*, pixels for image file length. default=800.\n", + "- **img_height**: *integer*, pixels for image file height. default=600.\n", + "- **colormap**: *string* or actual *VCS colormap*. Default is 'viridis' that is default in VCS.\n", + "- **clevels**: *list* of numbers (int or float). Colorbar levels. If not given automatically generated.\n", + "- **ccolors**: *list* of colors. If not given automatically generate.\n", + "- **xtic_textsize**: *int*, size of text for x-axis tic. If not given automatically generated.\n", + "- **ytic_textsize**: *int*, size of text for y-axis tic. If not given automatically generated.\n", + "- **parea**: *list* or *tuple* of float numbers between 0 to 1. Plotting area: (x1, x2, y1, y2). If not given automatically placed.\n", + "- **missing_color**: *string* or *color code* (tuple or list of R, G, B, alpha). Color for missing data box. Default is 'black'\n", + "- **Annotate**: *bool*, default=False. If Annotate, show numbers in individual boxes.\n", + "- **stat_xy_annotate**: *cdms2 MV2 2D array* with proper axes decorated. Only needed when number to show as value annotated is not corresponding to the colormap. Not even bother when Annotate=False. For example, color for values those normalized by median, while annotate actual value for metrics.\n", + "- **num_box_partitioning**: *integer*. It defines how many partitioning in a box. e.g., 4 indicates 4 triangles in each box. Default=1, should be less equal than 4.\n", + "- **stat_xy_2**: *cdms2 MV2 2D array*. Stat for 2nd triangle in box. Default=None\n", + "- **stat_xy_3**: *cdms2 MV2 2D array*. Stat for 3rd triangle in box. Default=None\n", + "- **stat_xy_4**: *cdms2 MV2 2D array*. Stat for 4th triangle in box. Default=None\n", + "- **logo**: *bool*, default=True. If False, CDAT logo turned off \n", + "- **GridMeshLine**: *bool*, default=True. If False, no lines for boundary of individual boxes\n", + "\n", + "### Output\n", + "\n", + "- **PNG image file**" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import pcmdi_metrics.graphics.portraits\n", + "import vcs\n", + "import sys\n", + "\n", + "def plot_portrait(\n", + " stat_xy, # array to visualize\n", + " imgName='portrait_plot', # file name\n", + " plotTitle=None, # title string on top\n", + " img_length=800, img_height=600, # image size in pixel\n", + " colormap='viridis', clevels=None, ccolors=None, # colormap and levels\n", + " xtic_textsize=None, ytic_textsize=None, # font size for axes tic labels\n", + " parea=None, # plotting area in ratio, in purpose of margin control\n", + " missing_color='black', # color for missing data box\n", + " Annotate=False, stat_xy_annotate=None, # annotation (showing value number in each box)\n", + " num_box_partitioning=1, stat_xy_2=None, stat_xy_3=None, stat_xy_4=None, # additional triangle\n", + " logo=True, GridMeshLine=True, # miscellaneous\n", + " ):\n", + " \"\"\" \n", + " NOTE:\n", + " Input\n", + " - stat_xy: cdms2 MV2 2D array with proper axes decorated, values to visualize.\n", + " - imgName: string, file name for PNG image file (e.g., 'YOUR_PLOT.png' or 'YOUR_PLOT'. If .png is not included, it will be added, so no worry).\n", + " - plotTilte: string\n", + " - img_length: integer, pixels for image file length. default=800.\n", + " - img_height: integer, pixels for image file height. default=600.\n", + " - colormap: string or actual VCS colormap. Default is 'viridis' that is default in VCS.\n", + " - clevels: list of numbers (int or float). Colorbar levels. If not given automatically generated.\n", + " - ccolors: list of colors. If not given automatically generate.\n", + " - xtic_textsize: int, size of text for x-axis tic. If not given automatically generated.\n", + " - ytic_textsize: int, size of text for y-axis tic. If not given automatically generated.\n", + " - parea: list or tuple of float numbers between 0 to 1. Plotting area: (x1, x2, y1, y2). If not given automatically placed.\n", + " - missing_color: string or color code (tuple or list of R, G, B, alpha). Color for missing data box. Default is 'black'\n", + " - Annotate: bool, default=False. If Annotate, show numbers in individual boxes.\n", + " - stat_xy_annotate: cdms2 MV2 2D array with proper axes decorated. Only needed when number to show as value annotated is not corresponding to the colormap. Not even bother when Annotate=False. For example, color for values those normalized by median, while annotate actual value for metrics.\n", + " - num_box_partitioning: integer. How many partitioning in a box? e.g., 4: 4 triangles in each box. Default=1, should be less equal than 4.\n", + " - stat_xy_2: cdms2 MV2 2D array. Stat for 2nd triangle in box. Default=None\n", + " - stat_xy_3: cdms2 MV2 2D array. Stat for 3rd triangle in box. Default=None\n", + " - stat_xy_4: cdms2 MV2 2D array. Stat for 4th triangle in box. Default=None\n", + " - logo: bool, default=True. If False, CDAT logo turned off \n", + " - GridMeshLine: bool, default=True. If False, no lines for boundary of individual boxes\n", + " Output\n", + " - PNG image file\n", + " \"\"\"\n", + " \n", + " # VCS Canvas\n", + " x = vcs.init(bg=True,geometry=(img_length, img_height))\n", + " \n", + " # CDAT logo control\n", + " if not logo:\n", + " x.drawlogooff()\n", + " \n", + " # Set up Portrait Plot\n", + " \"\"\"\n", + " If you are NOT using JUPYTER NOTEBOOK,\n", + " it is okay to DEACTIVATE below line and ACTIVATE second below line,\n", + " and skip the \"Prepare the Notebook\" part above.\n", + " \"\"\"\n", + " P = PortraitNotebook(x)\n", + " #P = pcmdi_metrics.graphics.portraits.Portrait()\n", + " \n", + " #\n", + " # Preprocessing step to \"decorate\" the axis\n", + " #\n", + " axes = stat_xy.getAxisList()\n", + " xax = [t+' ' for t in list(axes[1][:])]\n", + " yax = [t+' ' for t in list(axes[0][:])]\n", + " P.decorate(stat_xy, yax, xax)\n", + " #\n", + " # Customize\n", + " #\n", + " SET = P.PLOT_SETTINGS\n", + " \n", + " # Viewport on the Canvas\n", + " if parea is not None:\n", + " SET.x1, SET.x2, SET.y1, SET.y2 = parea\n", + " \n", + " # Both X (horizontal) and y (VERTICAL) ticks\n", + " # Text table\n", + " SET.tictable = vcs.createtexttable()\n", + " SET.tictable.color = \"black\"\n", + " # X (bottom) ticks\n", + " # Text Orientation\n", + " SET.xticorientation = vcs.createtextorientation()\n", + " SET.xticorientation.angle = -90\n", + " SET.xticorientation.halign = \"right\"\n", + " if xtic_textsize:\n", + " SET.xticorientation.height = xtic_textsize \n", + " # Y (vertical) ticks\n", + " SET.yticorientation = vcs.createtextorientation()\n", + " SET.yticorientation.angle = 0\n", + " SET.yticorientation.halign = \"right\"\n", + " if ytic_textsize:\n", + " SET.yticorientation.height = ytic_textsize\n", + " # We can turn off the \"grid\" if needed\n", + " if GridMeshLine:\n", + " SET.draw_mesh = \"y\"\n", + " else:\n", + " SET.draw_mesh = \"n\"\n", + " # Color for missing data\n", + " SET.missing_color = missing_color\n", + " # Timestamp\n", + " SET.time_stamp = None\n", + " # Colormap\n", + " SET.colormap = colormap\n", + " if clevels:\n", + " SET.levels = clevels \n", + " if ccolors:\n", + " SET.fillareacolors = ccolors\n", + " # Annotated Plot (i.e. show value number in boxes)\n", + " if Annotate:\n", + " SET.values.show = True\n", + " if stat_xy_annotate is None:\n", + " SET.values.array = stat_xy\n", + " else:\n", + " SET.values.array = stat_xy_annotate\n", + " # Check before plotting\n", + " if num_box_partitioning > 4:\n", + " sys.exit('ERROR: num_box_partitioning should be less equal than 4')\n", + " #\n", + " # Plot\n", + " #\n", + " P.plot(stat_xy, multiple=pp_multiple(1, num_box_partitioning), x=x)\n", + " # Add triangles if needed\n", + " # Decorate additional arrays with empty string axes to avoid overwriting same information (if not, font will look ugly)\n", + " xax_empty = [' ' for t in stat_xy.getAxis(1)[:]]\n", + " yax_empty = [' ' for t in stat_xy.getAxis(0)[:]]\n", + " if stat_xy_2 is not None:\n", + " P.decorate(stat_xy_2, yax_empty, xax_empty)\n", + " P.plot(stat_xy_2, x=x, multiple=pp_multiple(2, num_box_partitioning))\n", + " if stat_xy_3 is not None:\n", + " P.decorate(stat_xy_3, yax_empty, xax_empty)\n", + " P.plot(stat_xy_3, x=x, multiple=pp_multiple(3, num_box_partitioning))\n", + " if stat_xy_4 is not None:\n", + " P.decorate(stat_xy_4, yax_empty, xax_empty)\n", + " P.plot(stat_xy_4, x=x, multiple=pp_multiple(4, num_box_partitioning))\n", + " # Plot title\n", + " if plotTitle:\n", + " plot_title = vcs.createtext()\n", + " plot_title.x = .5\n", + " plot_title.y = (SET.y2 + 1) / 2.\n", + " plot_title.height = 30\n", + " plot_title.halign = 'center'\n", + " plot_title.valign = 'half'\n", + " plot_title.color = 'black'\n", + " plot_title.string = plotTitle\n", + " x.plot(plot_title)\n", + " # Save\n", + " if imgName.split('.')[-1] not in ['PNG', 'png']:\n", + " imgName = imgName+'.png'\n", + " x.png(imgName)\n", + " # Preserve original axes\n", + " stat_xy.setAxisList(axes)\n", + " return P\n", + "\n", + "\n", + "def pp_multiple(a, b):\n", + " \"\"\"\n", + " Note a, b to a.b\n", + " Input\n", + " - a, b: integer\n", + " Output\n", + " - c: float, a.b\n", + " \"\"\"\n", + " c = float(str(a)+'.'+str(b))\n", + " return c" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***\n", + "## Let's testing it with dummy data\n", + "Below we create a dummy array to visualize." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import cdms2\n", + "import genutil\n", + "import MV2\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def normalize_by_median(stat_xy):\n", + " \"\"\" \n", + " NOTE:\n", + " Input\n", + " - stat_xy: cdms2 MV2 2D array with proper axes decorated, values to visualize.\n", + " Output\n", + " - stat_xy: stat_xy after normalized by median of each row\n", + " \"\"\" \n", + " # Get median\n", + " median = genutil.statistics.median(stat_xy, axis=1)[0]\n", + " # Match shapes\n", + " stat_xy, median = genutil.grower(stat_xy, median)\n", + " # Normalize by median value\n", + " median = np.array(median)\n", + " stat_xy_normalized = MV2.divide(MV2.subtract(stat_xy,median), median)\n", + " # Decorate axes\n", + " stat_xy_normalized.setAxisList(stat_xy.getAxisList())\n", + " stat_xy_normalized.id = stat_xy.id\n", + " stat_xy = stat_xy_normalized\n", + " return stat_xy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dummy data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3169: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " dout = self.data[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/genutil/statistics.py:1712: VisibleDeprecationWarning: `rank` is deprecated; use the `ndim` attribute or function instead. To find the rank of a matrix see `numpy.linalg.matrix_rank`.\n", + " if numpy.rank(ii) > 0:\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3201: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " mout = _mask[indx]\n" + ] + } + ], + "source": [ + "# Prepare dummy data -- create random array for testing\n", + "random_array = np.random.rand(10,30)\n", + "X = cdms2.createAxis(['model_ '+str(r) for r in list(range(0,30))])\n", + "Y = cdms2.createAxis(['metric_ '+str(r) for r in list(range(0,10))])\n", + "stat_xy = MV2.array(random_array, axes=(Y,X), id='statistics')\n", + "\n", + "# Plant missing value\n", + "stat_xy[5][5] = -1.e20\n", + "stat_xy = MV2.masked_where(MV2.equal(stat_xy, -1.e20), stat_xy)\n", + "\n", + "# Normalize rows by its median\n", + "Normalize = True\n", + "if Normalize:\n", + " # Normalize by median value\n", + " stat_xy = normalize_by_median(stat_xy)\n", + "\n", + "# Additional dummy data for annotate test\n", + "stat_xy_annotate = MV2.multiply(stat_xy, 2)\n", + "\n", + "# Additional dummy data for additional triangles\n", + "stat_xy_2 = normalize_by_median(MV2.add(stat_xy, 2))\n", + "stat_xy_3 = normalize_by_median(MV2.add(stat_xy, 3))\n", + "stat_xy_4 = normalize_by_median(MV2.add(stat_xy, 4))\n", + "axes = stat_xy.getAxisList()\n", + "stat_xy_2.setAxisList(axes)\n", + "stat_xy_3.setAxisList(axes)\n", + "stat_xy_4.setAxisList(axes)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Portrait plot generation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exampe 1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3169: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " dout = self.data[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3201: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " mout = _mask[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/vtk/util/numpy_support.py:135: FutureWarning: Conversion of the second argument of issubdtype from `complex` to `np.complexfloating` is deprecated. In future, it will be treated as `np.complex128 == np.dtype(complex).type`.\n", + " assert not numpy.issubdtype(z.dtype, complex), \\\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NPARAM: 3\n" + ] + }, + { + "data": { + "image/png": "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qvL29q6rqxMEoaWlJSwsjBlu3749NTU1KSnJ09PT19f3ww8/FHOmzZs3x8fHV1RUTJ48+c033xQEoaWlZcyYMeXl5YbDTZs26Y6BEydOODg4DBgw4LPPPjNciXD8GIbjxzAcP4bh+IEeBWewuqalpaXj2WZLS0uB9d8uDQ0Nf/rTn451YLgiopaWFhcXFyKysrLav39/dXX1ggULmF+OiGpra319fUePHr148eLIyEgisrCwcHV1ra9nvGXRgw8+eP78+fDw8Keffvr777/38vKytbXt/CsC58+fLy4u7tWrl+4HZWlp2dLSYrh65pln6uvr/fz8VCpVr169iEilUllYWDBDIrKxsVm+fPmVK1fefvvtHTt2uLu7d+aFb0EQ7OzsbG1tra2tbWxsiEilUllZWTU1NRkOW1paLC1b329MEIQpU6bs3bt35cqVhisRjh8mHD8G4PhhwvEDPYj03gV65OTk9O/fPy4ubvPmzZs3b05MTJw5c2ZwcDCrEy5cuHD9+nXWlISff/7Zyclp6dKlzc3NgiDU1taGh4dbWFiwOiEvL2/QoEF/+ctfxD9evnx5xowZnflWddLT0318fJ588slZs2axZlsdPXp0+PDh4mUEf/vb365duzZr1qywsDBW1+rzzz93cXF57LHHkpOTZ86cOW7cOFbR+t+sbZ85ceLE1KlT9c3rFBYWurm59e7de9y4cc7Ozs8///wTTzzRmW/18uXL/fv3f+utt959911nZ+dPP/1UEAStVsvqBAHHDwuOH8Nw/BiG4wd6FCxYXZaRkREdHR0REREREREZGfn6668zT+oqdPbs2eXLl+v+WF1d/eKLLxqY16mvr9edkD979uyqVauYZ7zbqa2tXbly5bJly1iDv1NXV5eRkVFYWPj999/HxcVVVFSwit/cunVr9erVkyZNWrlyZWfCq1evFhUVsaak1dbWZmdnNzU1Xb58ec2aNQkJCdXV1axIEAQhIyNj+vTpERERMs7M4/hhwvFjAI4fJhw/0EPgndwBAO4ZGo3mwIEDrq6ukZGRql/v6XvyySdZHRchKWh5CMHUWBsYAAD0CPn5+QMGDJgwYYKHh8f06dPFdyXozCXnPISCgpaHEEwPF7kbx7Vr14qKilhTEngISUF7n4V79uxxkGK44iQkBS0PIRF9+umnr7766jfffPPTTz81NjZGRUU1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\n", + "text/plain": [ + "<__main__.PortraitNotebook at 0x122631358>" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Colormap to be used \n", + "clevels = [-1.e20, -.5, -.4, -.3, -.2, -.1, 0, .1, .2, .3, .4, .5, 1.e20]\n", + "ccolors = vcs.getcolors(clevels, split=0, colors=range(16,240))\n", + "# Generate plot\n", + "plot_portrait(stat_xy, imgName='pp_example1.png',\n", + " plotTitle='Example 1',\n", + " clevels=clevels, ccolors=ccolors\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2\n", + "- Add title\n", + "- Adjust margin\n", + "- Change missing box color to white\n", + "- Add number annotation" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3169: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " dout = self.data[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3201: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " mout = _mask[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/vtk/util/numpy_support.py:135: FutureWarning: Conversion of the second argument of issubdtype from `complex` to `np.complexfloating` is deprecated. In future, it will be treated as `np.complex128 == np.dtype(complex).type`.\n", + " assert not numpy.issubdtype(z.dtype, complex), \\\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NPARAM: 3\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<__main__.PortraitNotebook at 0x122776710>" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_portrait(stat_xy, imgName='pp_example2.png', \n", + " plotTitle='Example 2',\n", + " clevels=clevels, ccolors=ccolors,\n", + " xtic_textsize=15, ytic_textsize=15,\n", + " parea=(.05, .88, .25, .9),\n", + " missing_color='white',\n", + " Annotate=True,\n", + " GridMeshLine=True,\n", + " stat_xy_annotate=stat_xy_annotate)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 3\n", + "- Add triangels" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3169: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " dout = self.data[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3201: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " mout = _mask[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/vtk/util/numpy_support.py:135: FutureWarning: Conversion of the second argument of issubdtype from `complex` to `np.complexfloating` is deprecated. In future, it will be treated as `np.complex128 == np.dtype(complex).type`.\n", + " assert not numpy.issubdtype(z.dtype, complex), \\\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NPARAM: 3\n" + ] + }, + { + "data": { + "image/png": "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Qvzf//2fEOKee+6RJiF1QVpkdz2RkZGSaupg0qRJ0hdDhw7t/Lr0Yx0OR2VlZefXg4KCZDeduv/++2+//XYhRFZW1vXfFUJIyTItLS0xMbHLt0JCQiTrlpeXZzabZQ7+TwYMGPD73/9+165dZWVl9913X2Nj46pVq7766iu14wghtzJcRUgIEUKIX/7yl6rbNLzxxhuff/65FHG2bt06fPhw6fWrV69Ku3fOnDlT9sBp06b16dPn2rVrXV7v06dPl1eCgoKkL7osA+zbt6/0RXNzc+fXR40a1SWidTB79uxvvvlGdkFfY2PjpUuXhBDvvPPO/v37ry+QVke2t7eXlJR090ddT9++ff/6178mJiZWV1dv3rz5b3/7m9oRhJBbFgYsQsiNUltba7FYpK/Pnz/f8XpHGJK2YLgeHx8ff3//6wMWQHt7e+d/dsx8uh7pPyNb0PFDJkyYMGXKlOsLOpBmnl1PW1ubzWZrbm7u169f5786NDR00aJFu3fv/vTTT2UPJIT0EhiwCCE3RGtra3p6usPh8Pf3b2lp2bJly9KlSyW7ExYWNnDgwKqqqpMnT8oee/bsWYfDIfstjZSUlDQ2NnZ4r85I/5kOzdaZ4ODgQYMGVVZWJicnZ2RkXF+gyueff37nnXcKIf7xj3902VNUWvMoOTBCSK+Fc7AIITfEli1b8vPzhRBZWVnJycltbW3p6el2u1367r333iuE+PDDD8+dO3f9sZs3b77+RZfgcDh27tx5/euff/659L/t7kmL9913nxDinXfeqa6u7vKt1tbW1NTU2NjYhQsXyh0qhBBjxoyR3NixY8e6fOvo0aNCiOTkZJnDCCG9BgYsQog6Z8+e/c1vfiOEWLVq1ZIlS3bv3u3v719aWtoxe/25554LCwtrbm5euHBhl4z1+9//fu/evTI/1EWsW7cuOzu78yunTp2SctXIkSN/+tOfyh61cePGfv361dXVLV68uHPGunbt2k9/+tOcnJzKykpppaEsAwYMWLx4sRDiD3/4w6lTpzpez8jIKCoqEkI88sgj3R1LCOkN8BYhIUQIId566y1pX6jOpKamTp06taWlJT09vampafDgwa+++qoQYsqUKU8//fRLL730+uuvL1269K677hoxYsT/+3//77777jt//vykSZMefvjh1NTUmpqa3bt3//Of/5T7hS6jubl56dKl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\n", + "text/plain": [ + "<__main__.PortraitNotebook at 0x127747160>" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_portrait(stat_xy, imgName='pp_example3.png',\n", + " plotTitle='Example 3',\n", + " clevels=clevels, ccolors=ccolors,\n", + " num_box_partitioning=2,\n", + " stat_xy_2=stat_xy_2,\n", + " GridMeshLine=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 4\n", + "- Add more triangles\n", + "- Change (increase, in this case) image size\n", + "- Change font size for axes tic labels\n", + "- Hide grid lines" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3169: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " dout = self.data[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3201: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " mout = _mask[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/vtk/util/numpy_support.py:135: FutureWarning: Conversion of the second argument of issubdtype from `complex` to `np.complexfloating` is deprecated. In future, it will be treated as `np.complex128 == np.dtype(complex).type`.\n", + " assert not numpy.issubdtype(z.dtype, complex), \\\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NPARAM: 3\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACWAAAASwCAIAAADwxubWAAAgAElEQVR4XuzdeZxcZZkv8NN7OkmTPYFOgEBYZA0CEXQU8CoCAsIVGBkRNSwzgMhy0eGCY6ARcRlkiAoywkCQGBFGGAcDXMUQxohGED6ySACBABIIIWunO71W3T9Ky0pXd+3LqZzv9y/q9Fudtuzu0/X+3ud56uLxeAAAAAAAAABEQ322BQAAAAAAAMC2Q0AIAAAAAAAAESIgBAAAAAAAgAgREAIAAAAAAECECAgBAAAAAAAgQgSEAAAAAAAAECECQgAAAAAAAIgQASEAAAAAAABEiIAQAAAAAAAAIkRACAAAAAAAABEiIAQAAAAAAIAIERACAAAAAABAhAgIAQAAAAAAIEIEhAAAAAAAABAhAkIAAAAAAACIEAEhAAAAAAAARIiAEAAAAAAAACJEQAgAAAAAAAARIiAEAAAAAACACBEQAgAAAAAAQIQICAEAAAAAACBCBIQAAAAAAAAQIQJCAAAAAAAAiBABIQAAAAAAAESIgBAAAAAAAAAiREAIAAAAAAAAESIgBAAAAAAAgAgREAIAAAAAAECECAgBAAAAAAAgQgSEAAAAAAAAECECQgAAAAAAAIgQASEAAAAAAABEiIAQAAAAAAAAIkRACAAAAAAAABEiIAQAAAAAAIAIERACAAAAAABAhAgIAQAAAAAAIEIEhAAAAAAAABAhAkIAAAAAAACIEAEhAAAAAAAARIiAEAAAAAAAACJEQAgAAAAAAAARIiAEAAAAAACACBEQAgAAAAAAQIQICAEAAAAAACBCBIQAAAAAAAAQIQJCAAAAAAAAiBABIQAAAAAAAESIgBAAAAAAAAAiREAIAAAAAAAAESIgBAAAAAAAgAgREAIAAAAAAECECAgBAAAAAAAgQgSEAAAAAAAAECECQgAAAAAAAIgQASEAAAAAAABEiIAQAAAAAAAAIkRACAAAAAAAABEiIAQAAAAAAIAIERACAAAAAABAhAgIAQAAAAAAIEIEhAAAAAAAABAhAkIAAAAAAACIEAEhAAAAAAAARIiAEAAAAAAAACJEQAgAAAAAAAARIiAEAAAAAACACBEQAgAAAAAAQIQICAEAAAAAACBCBIQAAAAAAAAQIQJCAAAAAAAAiBABIQAAAAAAAESIgBAAAAAAAAAiREAIAAAAAAAAESIgBAAAAAAAgAgREAIAAAAAAECECAgBAAAAAAAgQgSEAAAAAAAAECECQgAAAAAAAIgQASEAAAAAAABEiIAQAAAAAAAAIkRACAAAAAAAABEiIAQAAAAAAIAIERACAAAAAABAhAgIAQAAAAAAIEIEhAAAAAAAABAhAkIAAAAAAACIEAEhAAAAAAAARIiAEAAAAAAAACJEQAgAAAAAAAARIiAEAAAAAACACBEQAgAAAAAAQIQICAEAAAAAACBCBIQAAAAAAAAQIQJCAAAAAAAAiBABIQAAAAAAAESIgBAAAAAAAAAipDHbAgAAgKp58cUX33jjjWyrhrfHHnu0t7dnW0UVdHV1PfbYY8mH9fX1hx12WIb14ffGG2+8+OKLqVdmzpw5c+bMEZYDAABUWV08Hs+2BgAAoDrOP//8G264Iduq4X3ve98755xzsq2iCp555pn99tsv+bClpaWnpyfD+pDr6+s7+OCDn3766dSLV1xxxZVXXjnCMwAAAKpMi1EAAAAo3Fe+8pUh6SAAAEDIaTEKAADUjOnTp+fetnGHHXbItgSK9cQTT3z961/PtgoAACBcBIQAAEDNOPXUU6+99tpsq6BC+vr6PvvZzw4MDGRbCAAAEC5ajAIAAEAhNBcFAABqlIAQAAAA8qa5KAAAULsEhAAAAJAfzUUBAICaZgYhAABAKfX19W3ZsiUej48ePbq5uTnb8jzE4/HNmzcPDg42NDSMHTu2rq4u2zOCWCzW2dkZj8ebmppGjx6dy1Nyt3nz5oGBgfr6+jFjxjQ0NGRbXmLd3d19fX25vxSlNaS56OjRow866KBf/epXGZ4CAAAQHgJCAABgG/fLX/7yRz/6UeqViy66aN999x1pfTwev/zyy9esWZO8Mn369I6OjpHWDwwMPPDAA4sXL16+fPmLL77Y1dWV/NDUqVP333//D33oQ6eccsqsWbOCIHjqqae+/e1vJxfMnj3785//fOpnW7Vq1bx585IPZ82aNXfu3O9///v33HPPH//4x/7+/sT1xsbGvfba66ijjjrttNMOOOCAYGuPPPLIokWLHn744VdeeSVZ5TZ27NhDDz30tNNO+8QnPtHa2hqMLP1ruOyyy4Ig2LJly7333rt48eInnnji1Vdf3bJlS2JBXV1de3v7e97znqOOOurkk0+eNGnS8J+3OBs2bLjrrrsefPDBp556avXq1Zs3b05cr6+v33HHHWfPnn3cccf9/d///bhx4zJ/nuKlNxf92te+9sQTTwgIAQCAWlEXj8ezrQEAAKiO888//4Ybbkg+vOSSS6699toM64fV09Nz4IEHPvfcc8krs2fP/t3vfjdSed/1119/8cUXJx/W1dU9+OCDH/nIR9JXxuPx22+//YorrnjttdfSP5qqrq7uuOOOu/baa1944YXjjz8+ef3YY4/92c9+lrrymWee2W+//ZIPJ02a1NfX19nZGYzs+OOPv/HGG2fMmBEEwdNPP33eeectW7Ysw/oZM2bMnz//4x//+EgLhnwNhxxyyNKlS6+77rrrrrtu7dq1Iz0robm5+ayzzrrqqqsyxIRDPn9LS0tPT89Ii4Mg6O7u/upXv/rtb387GQqOZMyYMRdeeOHll18+ZsyYzCsL1tfXd/DBB6eWD77//e9/5JFHzjjjjNtvvz158YorrrjyyiuHeT4AAEAImEEIAABs40aNGrVw4cKmpqbklT/84Q8jhTcrVqy4/PLLU698/vOfHzYdXL169Yc//OG5c+dmTQeDIIjH4/fdd98BBxzw05/+NNvaraxduzZzOhgEwX333Td79uxly5b95Cc/mTNnTuZ0MAiCP//5zyeddNJFF100ODiYeWXCW2+9dcABB3zpS1/Kmg4GQdDX13fjjTfus88+999/f7a1OVm5cuWcOXOuueaarOlgEARdXV3XXHPNAQcc8Nhjj2VbW6AhzUVbW1tvvfXW+npvrgEAgFqixSgAALDtO/DAA6+88sovfelLySvf/OY3jz/++Pe+972pywYGBj796U8nO2cGQbD33nt/4xvfCNI8//zzRx555Ouvv556sb6+/sMf/vAxxxxz0EEHdXd3P/300w888MDDDz+cbNyyZcuWW265Jf2z5Wjfffc944wzZs+e/dxzz/3whz/8zW9+k/zQunXrjj766L6+vmQP0iAIGhoaTjjhhBNPPHHSpElLly69/fbb33777eRH58+fv2rVqh/96EdZxwe++uqrQ65MmjTppJNO+tCHPjRz5sw333zzN7/5zd133/3yyy8nF6xevTpRMfl//s//CYrwxBNPfPSjH129enXqxVGjRp100klHH330Hnvs8dZbbz300EMLFy5cv359csGf/vSnI4444u677/7oRz+a9imLkt5c9Ctf+cruu+8+0noAAICQigMAAITV5z73udT3L5dcckm2Z4xoYGDg7/7u71I/22677bZ58+bUNUPKCpubm5988sn0T/XGG29Mnz492Npxxx337LPPpi/+3e9+d8ghhwQjOPbYY4esT61OS2psbPzud78bi8VSVy5YsGD06NHpixN22223xx9/PHX9xo0bP/nJTw5ZdsEFF8TTDPs1JIwePfrrX/96Z2fnkKcMDAx8//vfnzJlypD13/jGN7J+/paWlvQ18Xj8tddemzZtWurK+vr6Cy+88O233x6ysrOz86qrrkotEk182qVLlw77mQvT29ub2hk1CIJDDz10cHAw8dHPfOYzqR+64oorMn4yAACAatIFBQAAiISGhoYf/OAHY8eOTV7505/+9MUvfjH58Pe///3VV1+d+pSrrrrqgAMOCLY2MDBw8sknv/HGG8krdXV1V1999X333bf33nsHaebMmfM///M/Q9KjfN1xxx2f+9zn6urqUi9+5jOfuf/++4edpDhz5sxly5YddNBBqRe32267hQsXfvrTn069+J3vfCf3bpy77LLLb37zm0svvTT1ZUxoaGg4++yzly9fvtdee6Vev/TSS++8884gf729vSeccEJq7WBbW9svf/nL66+/Pj2GHDt27Je//OVly5ZNnjw59TN88pOfTK0sLNJVV12VGm22tLTcdtttmosCAAC1SItRAACgZrz22msPPfRQtlVBEAQtLS0f+MAHhlzcddddr7/++rPOOit55Xvf+96JJ574kY98pKen5/TTTx8YGEh+6AMf+EBqfJh0/fXXp/b2DILgX//1Xy+55JL0lUnNzc0LFizo7e0tLCo75ZRTTj311GE/dPjhh8+bN+9f/uVfhlz/wQ9+MKT2LqGuru7f//3flyxZ8uc//zlxJR6Pf//7358zZ0764iG23377JUuWzJw5M8OaXXbZ5ZFHHjnkkENeeeWV5MULLrjgmGOOGTduXIYnprvhhhuefPLJ5MNRo0Y9+OCD73vf+zI85T3vec+SJUsOO+ywDRs2JK6sWrXqsssuu+mmmzI8K0dPPPHEkGazHR0d73rXu0ZaDwAAEGYCQgAAoGbcfffdd999d7ZVQRAE06ZNe+utt9Kvn3nmmffdd99Pf/rT5JUzzjjj6aefvuqqq5577rnkxe222+4HP/hBenHY5s2bv/a1r6Ve+eQnP5k5HUy69dZbn3zyyeeffz7bwqHOOeecDB89//zzOzo6UkcP7rrrrunhaNKoUaP+6Z/+6ctf/nLyytKlS0danOquu+7KnA4mTJky5b777nv3u9+d/JLWrFkzf/78efPmZX5iqk2bNl1zzTWpV6677rrM6WDCfvvtd8stt5x88snJK7fccsull166yy67ZHhWVn19fZ/97GdT8+ODDz74C1/4QoanAAAAhJleKAAAQLTcfPPNU6dOTT584403jj322Pnz56eu+e53vztsGHbXXXetW7cu+bC1tfWb3/xm+rJhtba2XnHFFdlWDSO9zWmqcePGHXjggalXhnQWTXf00UenPnz55Zf7+vpGWpxw0kknZQgdh9hnn33OPPPM1Cu33nrrSIuHdc8996xduzb5cL/99suckqY66aSTPvzhDycfDg4OLly4MMP6XAxpLtrc3Hzbbbc1NDRkeAoAAECYqSAEAABqxowZM2bNmpVtVRAEwcSJE0f60JQpU2655ZaPfexjyStDWoaecsopp59+etrzgiAI7r333tSHp5566vTp04ddOaxPfOITF198cepcvVxkbc65++67L1++PPkwdQ7fsHbbbbfUh7FY7O23354xY8ZI64MgOPfcczN8NN3FF1+c2tjz1VdfffbZZ/fZZ58MT0m1ePHi1IcXXHDBkPmLmV1yySWprWgfeuih1IrJfKU3F503b96+++470noAAIDwExACAAA14xOf+MS1116bbVV2xx9//Nlnn33zzTenf6i9vT3DyLpf//rXqQ9TU8Zc1NfXH3PMMQsWLMi28G9aWlqyVqoNSRCbm5tHWpkwfvz40aNHd3d3J690dXVlWN/W1nb44YdnWJBujz322GOPPV544YXkld/+9re5B4TLli1LfbjnnnuuXLlyhLXD2G233caMGZP8H/XUU09lXp9BenPRd7/73ZdeemmGpwAAAISfgBAAAIiif/u3f1uyZMlLL72UerGurm7BggUjVR9u3Lhx/fr1qVf233//YVdmkLlfaGEaG/N+ZzekIC81AEu30047FfBPzJ49OzUgzD3hS1Q0pl457LDDRlqciw0bNmzYsGH8+PHZFg5jSHPRpqam2267rYBXAwAAIFTMIAQAAKJozJgx//f//t8hFw8//PAjjzxy2PVBEKSW3CWkzjLM0Q477JBtSRXE4/EMH83as3RYQ/6Xbty4caSVQ6xbty4Wi2VblZ/XXnst25JhpDcXvfzyy2fPnj3SegAAgFrh2CMAABBF3d3dX//614dcfOSRRx566KEPf/jDwz6lvn7oCcv+/v5hV2aQuVYvnHp6erItGUZvb2/qw/RXbyQtLS1DruQ16HFYuceTSenNRffff/8vfelLGZ4CAABQKwSEAABAFP3zP//zkP6iQRDE4/EzzjjjmWee2W677dKfMnHixPr6+tTittWrV0+YMCF9ZQarVq3KtiR0Cvua33rrrdSHuZchtrW1jRo1KjWVfOyxxypfeTmkuWhjY+Ntt93W1NSU4SkAAAC1ItcjnAAAANuMhx9++MYbbxz2Q6+//vrFF1887Ieampp23XXX1Cu//vWvh12Zwa9+9atsS0Ln9ddfX7NmTbZVW4nH48uXL0+9su+++460ON3OO++c+vD5558faWWZpDcXPeuss9rb298a2ZYtW1LXb968OXF98+bNAQAAQMgICAEAgGjZvHnzGWeckTp1b++9905dcOutty5evDjteUEQBEcccUTqw5/85CfDLhvJxo0bf/GLX2RbFUY//elPsy3Zyu9+97vUCsKWlpaRGrcOa8gkyP/+7/8eaWVmsVhsYGCggImGS5YsGdIM9qabbtoho7vuuit1/be+9a3E9fROtgAAAFUnIAQAAKLlC1/4wsqVK5MPx48f/4tf/OJTn/pU6pqzzz573bp1Q58ZBMcdd1zqwwceeCCvIsJvfOMbQ+rMasWNN96YV8zW0dGR+vDII48cO3bsSIvTHXvssakPFy5cuGHDhpEWD9HT07P33nu3tbU1Nzc3NDQ0NTX98Ic/zPYkAACAaBEQAgAAEfKLX/zi3//931Ov/Nu//Vt7e/u3v/3t7bffPnnxzTff/PznP5/27ODYY4/daaedUq+cc845mzZtSl+Z7ve///3111+fbVVIPfnkk1/96lezrfqLO++884EHHki9cumll460eFgf+chHZs+enXy4Zs2aSy65JMP6VF/96lefe+65zZs39/f3B0EwefLkv//7v8/2pKFGjx49KU8tLS2pn6G1tTVxfcyYMSP9KwAAANUiIAQAAKJi06ZNZ555ZuqVo48++rOf/WwQBBMmTPje976X+qFFixbdc889wdYaGxvnzZuXeuWZZ5458cQTu7u7g4xeeeWVj33sYzVaPphwxRVX/Md//Ee2VcEjjzySeEmTTj311Pe///0jLB9efX39kBGAt95665VXXjnC8r+56667rrnmmtQrX/va14ZEd7k477zz3snTqaeemvoZ/vmf/zlx/bLLLhvpXwEAAKgWASEAABAVF1988euvv558uN12233/+99PPjzxxBOHZDznnHPOmjVrgq2deeaZp512WuqVhx9++JBDDnnhhReCEfz6178+5JBDVq1aNdKCmhCPx88+++yvfOUrg4ODI6259dZbjzrqqN7e3uSVXXfddf78+SOtz+Coo44677zzUq90dHT84z/+Y09Pz7DrBwcHv/KVr/zDP/xDaivUY489dkgkDAAAQCAgBAAAakg8Hh/IWTweT33uAw88cOutt6Ze+da3vrXjjjumXvnud787derU5MM1a9acc845QZoFCxacdNJJqVeeeeaZ/fff/6KLLkoNIIMgeP755z/zmc8cdthh6UFjLYrH4/PmzTvwwAPvvffeRAPPhFgstmTJkiOOOOLMM89MTQcnT5784IMPpr6keZk/f/6RRx6ZeuXmm2+ePXv2D3/4w9R/vbe3d+HChfvtt9+8efNS08FDDz30xz/+cV1dXQAAAMDWBIQAAEDNuO6665pyljprcMOGDWeddVbqpzryyCOHXAmCYNKkSTfccEPqlXvuuWfRokVDljU2Nt51111f+MIXUi/29vbOnz9/p512mj179umnn37aaae9613vete73vWDH/wgNbVqbm4OatxTTz318Y9/fOrUqf/7f//v008//bjjjtt+++0/9KEPPfLII6nL9ttvv2XLlu2+++4jfZ6sGhsb77333mOOOSb14gsvvPCpT31q6tSpxx9//Lnnnpv4108//fTnnnsuddkJJ5zwi1/8wvw/AACAYQkIAQCAbd8FF1yQ2uGzra3t5ptvHnblySeffMopp6ReOf/88998880hy+rr6//1X//1/vvv32WXXYZ86Kmnnlq4cOGiRYuef/75IR864ogjhkw6rAktLS133HHH+PHjUy9u2LDhv/7rvxYuXLh48eIh9ZGNjY3nnnvu8uXL99xzz6A4Y8aM+dnPfvbNb35zu+22S72+YcOGn/3sZzfddNPixYs3bNiQ+qG2trbrrrvu3nvvHTt2bAAAAMBwBIQAAMA27r777rvjjjtSr3zzm9/ceeedR1p/ww03TJ48Oflw/fr1Z5999rArjznmmBUr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8/b9bBs2Q17dzv3otQ51AVROR4IgiDRoU5ohVgCVSmXHjh3btm3btWvX7t273/ve977hDW/43Oc+d9lll915551/8Ad/sHXr1j/6oz/y1zebzTvuuOOKK6646667du/efd11123fvv3w4cMA8PnPf/7Tn/40APzgBz+4/fbbn3zySfbNr7zyyh07dnzhC19gf/3MZz7DvpXrup/97Gc3btz48Y9//G//9m9vuummyy677PHHH+/0Y4azuLj4pS99aceOHb/8y78ctpYbHc//2JrZfWpWvlK/SMNo2tlTp8Knt8vHzRuLl7QX0fSKHkTVuujT0Zln9yMtAHnZDj8YKqdjK165vy2MUK/oQYRaCyOYN4OzAAQAi3bhmamr2j6IJHowSDCMUK/oQbTDD4NBPtjsF5rSsdSOsB8LLoyVa6sII2xrYFTcvqAPA+0bQSM6qto471jo1ECGblqDngQnJDcGMzhvg1m7FPzFv/fwzah8Yz7NiUF79CIRCJshz6djGCHaN8KRpfUHahe5xNDuYTqGEeLJSmjDzXUII4wSTyifjs686coANnWQ0XEsKiqnI0EQRBpIICRkk8/n//M//3P//v0/+tGPpqen77vvvve9733Hjx//2c9+9olPfOKP//iPH374Ybbyd37ndx588MH777//xIkTzz///I9+9KOZmZl3vetds7Oz3/jGN5566ikA+PVf//WDBw/6TsFGo/HYY4/9+Mc/bvtH77rrrj/90z/9vd/7vVdfffW55547ceLE1q1bP/jBD/7bv/0bxOcf/uEf5ubmusUfiqPt/I+zmd2nZuUb9nLF6uwZjEV2RlsYoXbRg9haF33aZknZ/RgNeT52CVrjMBA6HZe5OIyQogd50RZG6AyYeKIHg5y21rSGET53ZitOdRA6hRHqFT2I9o6FQJAPQvuFprSV2meuMZ0Cxn4sAHCKZut8abRtDYw2HwZa9V07rEGjNYwAbQchBDaHOKc16Ag7J7bOm8GpDjLawggPVTbgVAcZzYnB1jBChIY8n7YwQuRvhCPW+snm8okG8x6mLYwQW1ZCG21hhHiiB4O0OfOQG/ImFwcnF5f7nBA6HQmCIBJDAiEhmxtvvPGXfumXAOCaa655//vfDwB33XVXLpczDOMP//APAWDv3r0AcPLkyb//+7//zd/8zbvvvtswDAD4pV/6pa9+9aun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LImz0A0ApooDFTeHOCsIhYpyAaRlDQAA4MT1zJrzPv8RDhXwVMybQVtBSI5/GSGS1YN+S3biubnzxja8kRlCmB0U/IN8cWbfodrOPDyrB/2yVjydO++7PXZshV3EeGMgnmrLv4L5jWWMsUZxgpCpFo/Hf/WrX+3du/fFF1+cmZnZvn37TTfddPTo0UOHDn3qU5/66le/+vDDD4uTn//85x966KH7779/cnLy+eeff/HFF2dnZ6+77rq5ubnHHnvsySefBIAPfvCD+/bt8zoFC4XCD3/4w5deeqniP3rHHXfcd999X/jCF958883du3dPTk5u2LDhlltuefrpp6Fud99997Fjx9asWXPixIn77rtv06ZNP/vZz4Je1Lley416xaH4n/rKlxHibL/wlIfa8b+x5Z15mFMC4MthYBt+WKE81I68r8V1tPKZNtjm21QobxdAOPywXEW7ANo4hVBeLoA5+w6+QaM7j7zrdAHve1u+jNAaS85djTXlBpWdeZiz7wAAhu6VC2BOCZBTvoywlNBmNyPNXpDjxk1r3bnAOrYh+RXKbw4xVxACVJYL4C1rAAAAazDuTRfAOVTAUzFoFG0FITliGaHlnvloRbV60O+E1eeNbUC1erCq8kG+C5uSaLPvcP7OPMylmULWihfsM28mqtWDfhXLCCvyhYwxRhonCJlq733ve6+88koA2Lx588033wwAd9xxRywW03X9K1/5CgDs2rULAN54441vfetbt95665133qnrOgBceeWVjzzyyIkTJ775zW8u95dv3bpV/J3ljh49umPHjg984APbt2+Px+MAMD4+/sQTT/z0pz8dHKz3+fnFF1/87ne/e9111/3ud7975JFHfvvb31544YV/+qd/OjMzE/TSzuUVh+J/6islzdNbVgHWiUwVDuZXHrRWAoU31su6IU8JCF4OA+fww/OcDbWT6GspFXVRX0liSYN4Y0mkBLx2AcxdAh4REcZf1gBlOUKEqwf9vGWE81h73885O8gXefZdcHu73WQXoE8JkGP167kVOgAsbMTYIkCXk+oSywiRF7pB2TJCElcE74MLe1kDAJydLoB5qIDHyxEiryAkx3LNI/YQAOyavxRzdlB4eXG1GNuAbfWgn1eZVxg0s+PYM0PezjzkpZkAUHL0+aVuQLl60M97Y610l3+UK2OM0YU9nMTaT2/vuV3E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ZW2vVCrt27fv6NGjzzzzzM6dO3/5y18Wi0UAOHny5I9//OPvf//7k5OT/le9/vrr//zP//z444/v3bvXdV3xxd/+9revvPIKAExPT+/bt29qakr85a+//vq+ffu+//3vd3d3f+c73/nzP//z8r9qZmbmX/7lX3bu3Plv//ZvhULB/9+q7eWXXwaAK664Iuhgp1uuzwlnTWhxor9qqB3hjL7lcoQYVg/6LbeM8PSWiTr30LCqlhvki+1xGmouI8Qw/LDCcg1keNovPDVC7agi1+TUCLXjaSH1pEtdVQMr2LLvwnKdeVa6q84FP8os1y7g2EadSwpVylrxqssIjx1bEe3qQb/lxjbgLGtYrg4DT6ejZ7kmeGxlDUJ+VcpaVaW5GeEbyySpMTMfzxgMJhutcIFtmY5d5bvCM1TAs1yOEFVDnme5mfnYCt1A5AirVb26OhRrzXhijDEycF3PWHtLp9NbtmzZuHHjtm3bHnzwwT/4gz+45JJLvvzlL19wwQW33377l770pQ0bNvz1X/+1d75YLH7605++8MIL77jjjgcffPDd73735Zdf/uqrrwLA3/zN3/zlX/4lADz77LO33XbbE088If7yiy++eMuWLX/7t38r/vGv/uqvxF/lOM4Xv/jFVatW/dmf/dk//MM/3HDDDRdccMGPfvSjat/mskQH4S9/+csvf/nLO3bsmJqaCnpF57L6df92AZxPfVVD7WjjFFWXEaJYPegnlhEa5/0YFIeSnB1snT+wgvNxGpZ5TMUz/LCCv4EMW/uFp2qoHWFZAzlVe0kRJomFfdl1B63zvlucASBYpjMPyepBv6rtAqg6HT1VlxHmcgls2UGh6oRknGUNVZcRYut09FT94EJY1iBk1w9VLCNE+8YySaomh/BMlWRqUAoXOJr/HgDbUAFP1WWEqBryPFVn5uMsdINllhEuMyuHMcbowXhJY+0tHo//6le/2rt374svvjgzM7N9+/abbrrp6NGjhw4d+tSnPvXVr3714YcfFic///nPP/TQQ/fff//k5OTzzz//4osvzs7OXnfddXNzc4899tiTTz4JAB/84Af37dvndQoWCoUf/vCHL730UsV/9I477rjvvvu+8IUvvPnmm7t3756cnNywYcMtt9zy9NNPQ91EgvChhx6ampq677773va2t4nvgVVVsV0Az+pBv4pQO/I4RcUy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d0eMxyd3pN7o6/Zgsbm2dgsjxBA9GKVbGAG2DkKGYZjVQHyoFcPIol6v79mzp1QqFQqFH//xH//BD36wbdu297///X/4h384NjbW19d38uTJO++88/d///fFesdxbr311j//8z/funXr+Pj497///V27dn3ta197/etf/5nPfOa5554DgO9973svv/zyRz7ykf/wH/7Dnj17qtWqbdtvetOb3vWud+3Zs+eWW2554IEHAMD3/U9+8pN/9Ed/NDIysnPnziNHjqxdu/aee+75hV/4hR4/cBuf/OQnxR983/+bv/kbAHjDG97Q8ytkEviF5ly1OrTQ+kG0rpLBYH/BdqDptH4wScKTfkSQT+3ZydYPzl81hPNmzbWtQjEo15Y9WITHaUYdIiGpPAMFf+mDSPKQovjlQmN9sTbV8rOiiR6Mcmj62p21c+uspWhbVOaHyygVg5GhwsVlObvYxi9CglpfW0VAN+m4iFez6rs2DB9ZVhGQRA9GmfIGhgoLa4p26wcRSgIAUPf6HpzZ/f+uPdz6wa9O/gQ2dVCwsGWofKFRPbXs9wuhSAwAQcWyJ9a17WGwTTr2Bo/5YSu0Sq1oF9hSutT6QTzmh234I0PF8xfBW3qyODsIYdFd4AMblvWDImxrEEQrAk71HRZbHisDy7p10Z5qCT1YkZm3cWSm9YPT00PYRKweJIn/1E/HB9toVHE+WK8PCh5Y88s+iCJ6MEqp6I8MFc9Ot34MYQchwzDMagDjJoxZ2VQqle9///uHDx9+6qmnpqam9u/f/+53v/vEiRMvvvjir/3ar33qU5/64he/KFbeeuut991332c/+9mTJ08++eSTTz311Pnz59/xjndMT0/ff//93/rWtwDgve9979GjR8NJwWaz+bWvfe3pp59u+0tvu+22P/iDP/id3/mdV1999bHHHjt58uTVV199yy23PPLII5CSW2+9dfv27f/jf/yPD3zgA29/u9YGUs8pttpIIneVbAsjvLRn3OuZ62OQtiAfe2Nt+m0Y7ykEbc48dr0P53GaUUdbQlJQBGdN99WmaYyV7OGll2h9G5bowSjRcQFU5odttE3mOaM1nOogQIcwQpx3wQJntNYaRognejBK1F0QrSQAAHWv77uz14T/+Vx981cR/361hRFiHshr28PgnHTsBjaPvlZoldpT7nBrGCHmBxsdgsfZQSg4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w4YNc3uqdzL8uOqNN94444wzHMdJ+WiunHTSSSLSvn17ERk4cKDjOGPGjJk+ffq9997brVs3Xx01NGTIkL59+7700ktbtmyZP3/+UUcdFQgEli9fHn10zZo1mZ/uMe5fNnD/8gD3Lxu4f9nA/csS7l82cP/yAPcvG7h/2cD9CwD8w0evwACk9O9//7tXr16SSvfu3d977z23T4DUYl/YX/7yl/HXN23adMghh4if3qAaY6qrq2+55Zbf/OY38Rfvvvtu//9rEPtVVh++QTXGrF+/fs6cObfffvu555578MEHX3fddcaY22+/XUQOPPDAjz76yO0T5MDOnTujR6HE9OnTZ9WqVW7P847r77PH/1TID6qqqq6//voTTjhh3Lhx69atmzZtWjgcjn5tDz744NWrV7t9Au8sW7asZ8+esf/Xh0KhP/7xj25PyhnuX5Zw//IG96+s4/6Vddy/LOH+ZQn3L29w/8o67l9Zx/0LAPzDMcYIAH/74osvZs+e/dlnnzU0NESvFBQU9O/f/9xzz43+riVapqam5rXXXuvbt290542Y9evXT58+fcqUKeme6BOLFy9evnz5ueee26lTJ7exuVRfX3/HHXe88sorixcvdhvrC//85z8//vjjSy+9NPorjf60dOnS5557rrKyctCgQePHj/fbt4Kampq2bdu6jfKvzZs3z58/v3PnzieeeGJBQYHbcE/t3LlzxowZK1eu7Nmz58UXXzxo0CC3Z+QS9y9LuH95g/uXDdy/rOL+lS3cvyzh/uUN7l82cP+yivsXAOQKE4QAAAAAAABf2bx5865duwYOHBgIBOKvr1mzpqSkJM2TckNRqlBrjaJUUVWrKFWotUZRKgA019e+rwEAAAAAAOSt7du3n3nmmb179z700EP79+//r3/9K/7R/v37p3ui9xSlCrXWKEoVVbWKUoVaaxSlAkDLsIIQAAAAAABARGT06NFvv/32eeedd8ABBzz77LM7dux4+umnzzvvvOijjuOjn6IoShVqrVGUKqpqFaUKtdYoSgWAluEbGQAAALKssrLyiCOOyDxmy5YtmQd4Q1GqUGuNolRRVasoVai1RlGqiHz88ceHHXbYc889F/3577Zt284+++zFixf/9a9/PeOMM8RPPw5WlCrUWqMoVVTVKkoVaq1RlAoALcY3MmB/UFFR0a1bN7dRvqAoVai1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\n", + "text/plain": [ + "<__main__.PortraitNotebook at 0x12775b748>" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_portrait(\n", + " stat_xy,\n", + " imgName='pp_example4.png',\n", + " plotTitle='Example 4',\n", + " img_length=2400, img_height=1200,\n", + " clevels=clevels, ccolors=ccolors,\n", + " xtic_textsize=10, ytic_textsize=10,\n", + " num_box_partitioning=4,\n", + " stat_xy_2=stat_xy_2,\n", + " stat_xy_3=stat_xy_3,\n", + " stat_xy_4=stat_xy_4,\n", + " GridMeshLine=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 5\n", + "- Change colormap\n", + "- Missing box as grey\n", + "- Turn off CDAT logo" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3169: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " dout = self.data[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/numpy/ma/core.py:3201: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " mout = _mask[indx]\n", + "/Users/lee1043/anaconda2/envs/pmp_nightly_20180830/lib/python3.6/site-packages/vtk/util/numpy_support.py:135: FutureWarning: Conversion of the second argument of issubdtype from `complex` to `np.complexfloating` is deprecated. In future, it will be treated as `np.complex128 == np.dtype(complex).type`.\n", + " assert not numpy.issubdtype(z.dtype, complex), \\\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NPARAM: 3\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAgAElEQVR4XuydeXxU5b3/v8lMMktmMhmyTvZM2AIhEDZNoAQRK1wEEayXRQGRW5cKLqhUrm3ltr+uUrRcpSpWaH/3/m57qbXqr15/6BWx19YqrTtFdlliEjQLZE+Y3x/f5GRytmeZM5OEfN+vvuxk8j0kOfOc5/k873POc+JCoRAQBEEQBEEQ1hHPKiAIgiAIgiDEoIBFEARBEARhMRSwCIIgCIIgLIYCFkEQBEEQhMVQwCIIgiAIgrAYClgEQRAEQRAWQwGLIAiCIAjCYihgEQRBEARBWAwFLIIgCIIgCIuhgEUQBEEQBGExFLAIgiAIgiAshgIWQRAEQRCExVDAIgiCIAiCsBgKWARBEARBEBZDAYsgCIIgCMJiKGARBEEQBEFYDAUsgiAIgiAIi6GARRAEQRAEYTEUsAiCIAiCICyGAhZBEARBEITFUMAiCIIgCIKwGApYBEEQBEEQFkMBiyAIgiAIwmIoYBEEQRAEQVgMBSyCIAiCIAiLoYBFEARBEARhMRSwCIIgCIIgLIYCFkEQBEEQhMVQwCIIgiAIgrAYClgEQRAEQRAWQwGLIAiCIAjCYihgEQRBEARBWAwFLIIgCIIgCIuhgEUQBEEQBGExFLAIgiAIgiAshgIWQRAEQRCExVDAIgiCIAiCsBgKWARBEARBEBZDAYsgCIIgCMJiKGARBEEQBEFYDAUsgiAIgiAIi6GARRAEQRAEYTEUsAiCIAiCICyGAhZBEARBEITFUMAiCIIgCIKwGApYBEEQBEEQFkMBiyAIgiAIwmIoYBEEQRAEQViMnVVAEMSlTG1t7QcffGD03TFjxuTl5Rl9d2hx8ODBM2fOOJ3OmTNnsmp5aW9vf/PNN3W/VVlZ6Xa7db9FEMRwgAIWQQxr9u/f/7Wvfc3ou9u2bbv77ruNvju02Lp16zPPPJOTk3P69GlWLS9/+9vfrrrqKt1vHTx4cOzYsbrfIghiOEABiyAIAIBf/vKXo0aNUr1ZWFioV0v08P777+OL1157TeWraNcRxDCHAhZBEAAAEyZMmDRpEquK6AcGrNzc3Dlz5rBqCYIYXlDAIgiCQUdHx8WLF+Pi4hwOR/j7XV1dXV1dAJCYmBgf33fHTEdHx6FDh+rr6202WzAYDAQCANDe3h4Khex2u91uV7aNj4+32WwffvhhY2Ojy+UaN26cx+NR/p1PP/20urrabrePHz8+JSUF+qP8C4mJiQBw8uTJ06dPd3V1ZWRkjBkzJvz3YdLc3Hz48OHGxkan0zlq1KgRI0awtugBAxYFU4IgdAgRBDGM+c///E/sCv72t78Z1fzoRz/Cmt/85jfKm83NzXhKcdSoUc3NzfhmbW3tLbfc4nK5wjuZqVOn/td//VdqaioA/PM//zNW3nLLLQCQmpqak5OjVDocjltvvbWpqel3v/td+PnKxMTEdevWNTY2hv9W+C+UlZU9/fTTxcXF4T8xLS3toYceamlp0dbn5OSEv3nixInly5eHB8e4uLgrrrjinXfeCbG4ePGi1+uF3j+qq6uLtQVBEMMIClgEMazhCVjd3d2zZs0CgNTU1Orqanzz9ttvBwC73f7222/jO++//352dja+uWLFip07d/7gBz+YOHEiphZUSqqAhXz1q1/9+c9/vm7dOpvNBgBFRUX4/tSpU7dv33733Xfj5U0TJkyoq6tTfqvwfwEAKisrt23b9tRTTy1dujQuLg4ASktLz5w5o6oPD1gHDhxIT08HALfb/U//9E+7du166KGHMjMzASAhIeHf/u3fQqYcOXIEf3ReXp7T6QQAp9M5bdq0Z555pru723xbgiAueShgEcSwhidghUKhEydOJCcnA8CCBQtCodArr7yCW23ZsgULvvzyy9zcXAAIBALh/1R3d/emTZuUGKQNWBs2bFCKf//732M2AoDrr79ecUJ/+tOfUDItW7ZMKVb+hfj4+KeffjoUxt69e9EtjRs3rrW1NbxeCVh1dXV47nLMmDFHjx5Vtq2vr//qV78KAHa7/S9/+UvImOeee075u0aOHLlu3TrlXOG1117b0dFhsi1BEJc8FLAIYlijBCyPx+PTEB6Vdu3ahZU/+tGP8Lze5ZdfrmSgBx54ALOOIrTCWbx4MW6rClh2u72pqSm8EsMNAHz66afh769atQoAXC6XIoeUgPXwww+HNCjp57HHHguvVwLWxo0bAcDtdoenK0Q5+1lVVRUy5vHHH8c/+ZFHHlF+q5/85Cf4cx944AGTbQmCuOQRuA6UIIhLmCVLlqzTkJaWphSsXr166dKlALBp06YzZ84kJSX96le/wpN6APDv//7vADBv3rzp06dr//EHH3xQ+yYAjBgxAlWTQnl5Ob4oKCgIfx//2dbW1pqamvD3nU7nvffeCxquu+66kpISANizZ4/2uwCAyXLFihXBYFD1LbfbjdZt//79X375pc7GAABwxx13HD58+K9//evGjRuVa+rvu+++m266CQAee+yx2tpao20JgrjkobsICYIAALjnnnuYd8M9+eSTf/zjHzHibN26deTIkfh+Y2Mjrt5ZUVGhu+G0adMSEhI6OztV7yckJKjewYuZAEB1G2BSUhK+6OjoCH9/zJgxqoimMGPGjIMHD/7973/Xfqutre2zzz4DgF//+tcvvviitgDvjgyFQocOHTL6owBA2QPh3HXXXb/61a/a29v37t27cuVKbQFBEMMBClgEQfDyxRdfNDU14etjx44p7ythCJdg0BIXF2e327UBS4JQKBT+pXLNlhb8ZXQLlH9k4sSJU6ZM0RYo4JVnWtrb2xsbGzs7OwOBgCoLKgu4nzp1Sm9TgiCGBRSwCILgoru7e/Xq1a2trXa7vaur65FHHlm8eDHaHa/Xm5GRUVtb+9577+lu+/HHH7e2tup+K0IOHTrU1tameK9w8JfRlUwulyszM7Ompqa0tPTRRx/VFjB5/vnnly1bBnqPxDl37hy+0K7dRRDE8IGuwSIIgotHHnnkz3/+MwDs2bOntLT04sWLq1evbmlpwe9ec801APC73/3u008/1W774x//WPumJbS2tu7cuVP7/h//+Ef8bY2etLho0SIA+PWvf11XV6f6Vnd399y5cwOBwPz58/U2BQCYOXMmurHf/va3qm8p19d/5StfUW9GEMSwgQIWQRBsPv744+985zsAsGbNmmuvvXbXrl12u/3w4cPK1evf/OY3vV5vR0fH/PnzVRnr+9///i9/+Uudf9QiNm7c+Pvf/z78nQ8++ABz1ejRo2+77TbdrR566CGfz1dfX79w4cLwjNXZ2Xnbbbe99tprNTU1eKehLjk5OTfccAMAfP/738ckh3zwwQe4o+bNmzd+/HijzQmCuOShU4QEQQAAPPvss7guVDhz586dOnVqV1fX6tWr29vbs7Ozt23bBgBTpky5//77f/CDH2zfvn3x4sVXXHHFqFGj/vCHPyxatOjYsWPl5eW33HLL3Llzz507t2vXrjfffFPvB1pGR0fH4sWLr7vuumXLltlstldffXXXrl1tbW3BYPDll1/WPXsIAPn5+c8999zixYvf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\n", + "text/plain": [ + "<__main__.PortraitNotebook at 0x128663b70>" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "colormap = 'bl_to_darkred'\n", + "\n", + "plot_portrait(stat_xy, imgName='pp_example5.png', plotTitle='Example 5',\n", + " colormap=colormap, clevels=clevels, ccolors=ccolors,\n", + " missing_color='grey', logo=False,\n", + " num_box_partitioning=4,\n", + " stat_xy_2=stat_xy_2,\n", + " stat_xy_3=stat_xy_3,\n", + " stat_xy_4=stat_xy_4,\n", + " GridMeshLine=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python pmp_nightly_20180622", + "language": "python", + "name": "myenv" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/pcmdi_metrics/graphics/portraits.py b/pcmdi_metrics/graphics/portraits.py index ff7e31c4d..cf732c157 100644 --- a/pcmdi_metrics/graphics/portraits.py +++ b/pcmdi_metrics/graphics/portraits.py @@ -9,6 +9,10 @@ import numpy import time from genutil import StringConstructor +import os +import pkg_resources +pmp_egg_path = pkg_resources.resource_filename( + pkg_resources.Requirement.parse("pcmdi_metrics"), "share") def is_dark_color_type(R, G, B, A): @@ -78,15 +82,6 @@ def setlogo(self, value): logo = property(getlogo, setlogo) - def _repr_png_(self): - import tempfile - tmp = tempfile.mktemp() + ".png" - self.x.png(tmp) - f = open(tmp, "rb") - st = f.read() - f.close() - return st - def __init__(self): self.x1 = .12 self.x2 = .84 @@ -151,6 +146,13 @@ def __init__(self, files_structure=None, exclude=[], **kw): self.x = kw["x"] else: self.x = vcs.init() + scr_file = os.path.join( + pmp_egg_path, + "pmp", + "graphics", + 'vcs', + 'portraits.scr') + self.x.scriptrun(scr_file) self.verbose = False # output files looked for to the screen self.files_structure = files_structure self.exclude = exclude @@ -815,6 +817,15 @@ def generateTemplate(self): template.legend.textorientation = tmp return template + def _repr_png_(self): + import tempfile + tmp = tempfile.mktemp() + ".png" + self.x.png(tmp) + f = open(tmp, "rb") + st = f.read() + f.close() + return st + def plot(self, data=None, mesh=None, template=None, meshfill=None, x=None, bg=0, multiple=1.1): self.bg = bg @@ -877,7 +888,8 @@ def plot(self, data=None, mesh=None, template=None, if self.PLOT_SETTINGS.fillareacolors is None: if self.PLOT_SETTINGS.colormap is None: # Default colormap only use range 16->40 - cols = vcs.getcolors(levs, list(range(16, 40)), split=1) + cols = vcs.getcolors( + levs, list(range(144, 156)), split=1) else: cols = vcs.getcolors(levs, split=1) meshfill.fillareacolors = cols @@ -1041,6 +1053,9 @@ def plot(self, data=None, mesh=None, template=None, M[:, :, 0, 2] = Y + .5 M[:, :, 1, 2] = X + .5 M = MV2.reshape(M, (sh[0] * sh[1], 2, 3)) + else: + raise RuntimeError( + "Portrait plot support only up to 4 subcells at the moment") else: if isinstance(meshfill, vcs.meshfill.P): tid = mesh.id @@ -1055,7 +1070,8 @@ def plot(self, data=None, mesh=None, template=None, mesh = M raveled = MV2.ravel(data) - self.x.plot(raveled, mesh, template, meshfill, bg=self.bg) + self.x.plot(raveled, mesh, template, meshfill, + bg=self.bg, continents=0) # If required plot values if self.PLOT_SETTINGS.values.show: @@ -1232,7 +1248,7 @@ def draw_values(self, raveled, mesh, meshfill, template): self.PLOT_SETTINGS.values.text.string).take(pick)[ :, 0].tolist() tmptxt.color = color - self.x.plot(tmptxt, bg=self.bg) + self.x.plot(tmptxt, bg=self.bg, continents=0) def set_colormap(self): self.x.setcolormap("bl_rd_12") diff --git a/pcmdi_metrics/version.py b/pcmdi_metrics/version.py index 9be5197f8..9ded0f33c 100644 --- a/pcmdi_metrics/version.py +++ b/pcmdi_metrics/version.py @@ -1,3 +1,3 @@ __version__ = 'v1.2' -__git_tag_describe__ = 'v1.2-44-g55606c7' -__git_sha1__ = '55606c7d422916a4ae0953b0db38f54e80ae3331' +__git_tag_describe__ = 'v1.2-61-gde534f5' +__git_sha1__ = 'de534f543dce2db1a7761932ef1f5bf6e32bf324'