diff --git a/Tables/input4MIPs_A3hr.json b/Tables/input4MIPs_A3hr.json index 0eb0f36..fe77198 100644 --- a/Tables/input4MIPs_A3hr.json +++ b/Tables/input4MIPs_A3hr.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"0.125000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"atmos", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_A3hr" }, "variable_entry":{ diff --git a/Tables/input4MIPs_A3hrPt.json b/Tables/input4MIPs_A3hrPt.json index 8e034fd..3ef5b7a 100644 --- a/Tables/input4MIPs_A3hrPt.json +++ b/Tables/input4MIPs_A3hrPt.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"0.125000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"atmos", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_A3hrPt" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Afx.json b/Tables/input4MIPs_Afx.json index c15ce73..933ca60 100644 --- a/Tables/input4MIPs_Afx.json +++ b/Tables/input4MIPs_Afx.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"0.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"alevel", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"atmos land", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_Afx" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Ayr.json b/Tables/input4MIPs_Ayr.json index 78af5a2..c7c36f8 100644 --- a/Tables/input4MIPs_Ayr.json +++ b/Tables/input4MIPs_Ayr.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"alevel alevhalf", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"atmos atmosChem", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_Ayr" }, "variable_entry":{ diff --git a/Tables/input4MIPs_CV.json b/Tables/input4MIPs_CV.json index 19dac3a..b233d6c 100644 --- a/Tables/input4MIPs_CV.json +++ b/Tables/input4MIPs_CV.json @@ -20,9 +20,9 @@ "1hr":"sampled hourly", "1hrCM":"monthly-mean diurnal cycle resolving each day into 1-hour means", "1hrPt":"sampled hourly, at specified time point within an hour", - "3hr":"sampled every 3 hours", + "3hr":"3 hourly mean samples", "3hrPt":"sampled 3 hourly, at specified time point within the time period", - "6hr":"sampled every 6 hours", + "6hr":"6 hourly mean samples", "6hrPt":"sampled 6 hourly, at specified time point within the time period", "day":"daily mean samples", "dec":"decadal mean samples", @@ -111,7 +111,8 @@ "CMIP2", "CMIP3", "CMIP5", - "CMIP6" + "CMIP6", + "CMIP6Plus" ], "nominal_resolution":[ "0.5 km", @@ -248,6 +249,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -276,6 +278,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -304,6 +307,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -332,6 +336,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -360,6 +365,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -388,6 +394,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -416,6 +423,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -444,6 +452,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -472,6 +481,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -500,6 +510,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -528,6 +539,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -556,6 +568,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -584,6 +597,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -612,6 +626,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -640,6 +655,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -662,6 +678,7 @@ "title":"ISMIP6 (CMIP6) - MIROC5-rcp85-1-0 derived data prepared for input4MIPs" }, "MRI-JRA55-do-1-3":{ + "mip_era":"CMIP6", "source":"MRI JRA55-do 1.3: Atmospheric state generated for OMIP based on the JRA-55 reanalysis" }, "MRI-JRA55-do-1-3-2":{ @@ -671,6 +688,7 @@ "further_info_url":"http://climate.mri-jma.go.jp/~htsujino/jra55do.html", "institution":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", "institution_id":"MRI", + "mip_era":"CMIP6", "product":"reanalysis", "references":"Tsujino et al., 2018: JRA-55 based surface dataset for driving ocean-sea-ice models (JRA55-do), Ocean Modelling, 130(1), pp 79-139. https://doi.org/10.1016/j.ocemod.2018.07.002", "region":[ @@ -713,6 +731,7 @@ "further_info_url":"http://climate.mri-jma.go.jp/~htsujino/jra55do.html", "institution":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", "institution_id":"MRI", + "mip_era":"CMIP6", "product":"reanalysis", "references":"Tsujino et al., 2018: JRA-55 based surface dataset for driving ocean-sea-ice models (JRA55-do), Ocean Modelling, 130(1), pp 79-139. https://doi.org/10.1016/j.ocemod.2018.07.002", "region":[ @@ -755,6 +774,7 @@ "further_info_url":"http://climate.mri-jma.go.jp/~htsujino/jra55do.html", "institution":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", "institution_id":"MRI", + "mip_era":"CMIP6", "product":"reanalysis", "references":"Tsujino et al., 2018: JRA-55 based surface dataset for driving ocean-sea-ice models (JRA55-do), Ocean Modelling, 130(1), pp 79-139. https://doi.org/10.1016/j.ocemod.2018.07.002", "region":[ @@ -797,6 +817,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -825,6 +846,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -847,6 +869,7 @@ "title":"ISMIP6 (CMIP6) - NorESM1-M-rcp85-1-0 derived data prepared for input4MIPs" }, "PCMDI-AMIP-1-1-3":{ + "mip_era":"CMIP6", "source":"PCMDI-AMIP 1.1.3: Merged SST based on UK MetOffice HadISST and NCEP OI2" }, "PCMDI-AMIP-1-1-4":{ @@ -858,6 +881,7 @@ "grid_label":"gn", "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "institution_id":"PCMDI", + "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", @@ -890,6 +914,7 @@ "grid_label":"gn", "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "institution_id":"PCMDI", + "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", @@ -922,6 +947,7 @@ "grid_label":"gn", "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "institution_id":"PCMDI", + "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", @@ -945,8 +971,9 @@ "target_mip":"CMIP", "title":"PCMDI-AMIP 1.1.6 dataset prepared for input4MIPs" }, - "PCMDI-AMIP-1-2-0":{ - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2019-06)", + "PCMDI-AMIP-1-1-7":{ + "calendar":"gregorian", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2021-06)", "contact":"PCMDI (pcmdi-cmip@llnl.gov)", "dataset_category":"SSTsAndSeaIce", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", @@ -954,16 +981,17 @@ "grid_label":"gn", "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "institution_id":"PCMDI", + "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", "region":[ "global_ocean" ], - "release_year":"2020", - "source":"PCMDI-AMIP 1.2.0: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "release_year":"2022", + "source":"PCMDI-AMIP 1.1.7: Merged SST based on UK MetOffice HadISST and NCEP OI2", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", - "source_id":"PCMDI-AMIP-1-2-0", + "source_id":"PCMDI-AMIP-1-1-7", "source_type":"satellite_blended", "source_variables":[ "areacello", @@ -973,9 +1001,9 @@ "tos", "tosbcs" ], - "source_version":"1.2.0", + "source_version":"1.1.7", "target_mip":"CMIP", - "title":"PCMDI-AMIP 1.2.0 dataset prepared for input4MIPs" + "title":"PCMDI-AMIP 1.1.7 dataset prepared for input4MIPs" }, "UKESM1-0-LL-ssp585-1-0":{ "comment":"Prepared using CMIP6 model UKESM1-0-LL as input. A combination of historical and ssp585 datasets were used to create this ISMIP6 forcing dataset", @@ -984,6 +1012,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", diff --git a/Tables/input4MIPs_LIday.json b/Tables/input4MIPs_LIday.json index 1ed5856..14800ec 100644 --- a/Tables/input4MIPs_LIday.json +++ b/Tables/input4MIPs_LIday.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"olevel olevhalf", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"landIce", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_LIday" }, "variable_entry":{ diff --git a/Tables/input4MIPs_LIfx.json b/Tables/input4MIPs_LIfx.json index fa0cb90..2618834 100644 --- a/Tables/input4MIPs_LIfx.json +++ b/Tables/input4MIPs_LIfx.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"landIce", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_LIfx" }, "variable_entry":{ diff --git a/Tables/input4MIPs_LIyr.json b/Tables/input4MIPs_LIyr.json index 759b87a..b0505ec 100644 --- a/Tables/input4MIPs_LIyr.json +++ b/Tables/input4MIPs_LIyr.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"landIce land", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_LIyr" }, "variable_entry":{ diff --git a/Tables/input4MIPs_LIyrAnt.json b/Tables/input4MIPs_LIyrAnt.json index a395ee4..2c9758c 100644 --- a/Tables/input4MIPs_LIyrAnt.json +++ b/Tables/input4MIPs_LIyrAnt.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"365.00", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"landIce", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_LIyrAnt" }, "variable_entry":{ diff --git a/Tables/input4MIPs_LIyrC.json b/Tables/input4MIPs_LIyrC.json index 6d7b41b..cb76908 100644 --- a/Tables/input4MIPs_LIyrC.json +++ b/Tables/input4MIPs_LIyrC.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"olevel olevhalf", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"landIce", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_LIyrC" }, "variable_entry":{ diff --git a/Tables/input4MIPs_LIyrGre.json b/Tables/input4MIPs_LIyrGre.json index e569876..8989485 100644 --- a/Tables/input4MIPs_LIyrGre.json +++ b/Tables/input4MIPs_LIyrGre.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"365.00", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"landIce", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_LIyrGre" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Lday.json b/Tables/input4MIPs_Lday.json index 0eb3deb..95b61a8 100644 --- a/Tables/input4MIPs_Lday.json +++ b/Tables/input4MIPs_Lday.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"land", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_Lday" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Lyr.json b/Tables/input4MIPs_Lyr.json index 85b4f21..a17d7a1 100644 --- a/Tables/input4MIPs_Lyr.json +++ b/Tables/input4MIPs_Lyr.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"land", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_Lyr" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Oday.json b/Tables/input4MIPs_Oday.json index 4b54bc9..8f90c1c 100644 --- a/Tables/input4MIPs_Oday.json +++ b/Tables/input4MIPs_Oday.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"olevel olevhalf", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"ocean", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_Oday" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Ofx.json b/Tables/input4MIPs_Ofx.json index 81aacdc..61b7f28 100644 --- a/Tables/input4MIPs_Ofx.json +++ b/Tables/input4MIPs_Ofx.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"0.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"olevel", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"ocean", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_Ofx" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Omon.json b/Tables/input4MIPs_Omon.json index 5f3e2e7..e0c60d8 100644 --- a/Tables/input4MIPs_Omon.json +++ b/Tables/input4MIPs_Omon.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"olevel olevhalf", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"ocean", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_Omon" }, "variable_entry":{ diff --git a/Tables/input4MIPs_OmonC.json b/Tables/input4MIPs_OmonC.json index bf9151b..07e1e54 100644 --- a/Tables/input4MIPs_OmonC.json +++ b/Tables/input4MIPs_OmonC.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"olevel olevhalf", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"ocean", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_OmonC" }, "variable_entry":{ diff --git a/Tables/input4MIPs_Oyr.json b/Tables/input4MIPs_Oyr.json index c6afe7c..b16f795 100644 --- a/Tables/input4MIPs_Oyr.json +++ b/Tables/input4MIPs_Oyr.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"olevel olevhalf", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"ocean", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_Oyr" }, "variable_entry":{ diff --git a/Tables/input4MIPs_OyrC.json b/Tables/input4MIPs_OyrC.json index b1e1973..863f966 100644 --- a/Tables/input4MIPs_OyrC.json +++ b/Tables/input4MIPs_OyrC.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"olevel olevhalf", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"ocean", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_OyrC" }, "variable_entry":{ diff --git a/Tables/input4MIPs_SI3hrPt.json b/Tables/input4MIPs_SI3hrPt.json index 84fc7e4..98847be 100644 --- a/Tables/input4MIPs_SI3hrPt.json +++ b/Tables/input4MIPs_SI3hrPt.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"0.125000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"seaIce", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_SI3hrPt" }, "variable_entry":{ diff --git a/Tables/input4MIPs_SIday.json b/Tables/input4MIPs_SIday.json index 0e53ece..f806990 100644 --- a/Tables/input4MIPs_SIday.json +++ b/Tables/input4MIPs_SIday.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"1.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"seaIce", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_SIday" }, "variable_entry":{ diff --git a/Tables/input4MIPs_SImon.json b/Tables/input4MIPs_SImon.json index c987c03..4f3c9c0 100644 --- a/Tables/input4MIPs_SImon.json +++ b/Tables/input4MIPs_SImon.json @@ -3,14 +3,14 @@ "Conventions":"CF-1.7 CMIP-6.2", "approx_interval":"30.00000", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", "generic_levels":"", "int_missing_value":"-999", "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", "realm":"seaIce", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_SImon" }, "variable_entry":{ diff --git a/Tables/input4MIPs_grids.json b/Tables/input4MIPs_grids.json index a9ad7f8..27e215b 100644 --- a/Tables/input4MIPs_grids.json +++ b/Tables/input4MIPs_grids.json @@ -2,10 +2,11 @@ "Header":{ "Conventions":"CF-1.7 CMIP-6.2", "cmor_version":"3.5", - "data_specs_version":"01.00.32", + "data_specs_version":"01.00.33", + "mip_era":"CMIP6", "missing_value":"1e20", "product":"input4MIPs", - "table_date":"14 September 2020", + "table_date":"26 January 2022", "table_id":"Table input4MIPs_grids" }, "axis_entry":{ diff --git a/input4MIPs_frequency.json b/input4MIPs_frequency.json index 03c959f..b9857c9 100644 --- a/input4MIPs_frequency.json +++ b/input4MIPs_frequency.json @@ -3,9 +3,9 @@ "1hr":"sampled hourly", "1hrCM":"monthly-mean diurnal cycle resolving each day into 1-hour means", "1hrPt":"sampled hourly, at specified time point within an hour", - "3hr":"sampled every 3 hours", + "3hr":"3 hourly mean samples", "3hrPt":"sampled 3 hourly, at specified time point within the time period", - "6hr":"sampled every 6 hours", + "6hr":"6 hourly mean samples", "6hrPt":"sampled 6 hourly, at specified time point within the time period", "day":"daily mean samples", "dec":"decadal mean samples", diff --git a/input4MIPs_mip_era.json b/input4MIPs_mip_era.json index 4442cc1..93191cc 100644 --- a/input4MIPs_mip_era.json +++ b/input4MIPs_mip_era.json @@ -4,6 +4,7 @@ "CMIP2", "CMIP3", "CMIP5", - "CMIP6" + "CMIP6", + "CMIP6Plus" ] } \ No newline at end of file diff --git a/input4MIPs_source_id.json b/input4MIPs_source_id.json index 3bd7df6..285a844 100644 --- a/input4MIPs_source_id.json +++ b/input4MIPs_source_id.json @@ -7,6 +7,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -35,6 +36,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -63,6 +65,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -91,6 +94,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -119,6 +123,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -147,6 +152,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -175,6 +181,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -203,6 +210,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -231,6 +239,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -259,6 +268,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -287,6 +297,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -315,6 +326,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -343,6 +355,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -371,6 +384,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -399,6 +413,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -421,6 +436,7 @@ "title":"ISMIP6 (CMIP6) - MIROC5-rcp85-1-0 derived data prepared for input4MIPs" }, "MRI-JRA55-do-1-3":{ + "mip_era":"CMIP6", "source":"MRI JRA55-do 1.3: Atmospheric state generated for OMIP based on the JRA-55 reanalysis" }, "MRI-JRA55-do-1-3-2":{ @@ -430,6 +446,7 @@ "further_info_url":"http://climate.mri-jma.go.jp/~htsujino/jra55do.html", "institution":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", "institution_id":"MRI", + "mip_era":"CMIP6", "product":"reanalysis", "references":"Tsujino et al., 2018: JRA-55 based surface dataset for driving ocean-sea-ice models (JRA55-do), Ocean Modelling, 130(1), pp 79-139. https://doi.org/10.1016/j.ocemod.2018.07.002", "region":[ @@ -472,6 +489,7 @@ "further_info_url":"http://climate.mri-jma.go.jp/~htsujino/jra55do.html", "institution":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", "institution_id":"MRI", + "mip_era":"CMIP6", "product":"reanalysis", "references":"Tsujino et al., 2018: JRA-55 based surface dataset for driving ocean-sea-ice models (JRA55-do), Ocean Modelling, 130(1), pp 79-139. https://doi.org/10.1016/j.ocemod.2018.07.002", "region":[ @@ -514,6 +532,7 @@ "further_info_url":"http://climate.mri-jma.go.jp/~htsujino/jra55do.html", "institution":"Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan", "institution_id":"MRI", + "mip_era":"CMIP6", "product":"reanalysis", "references":"Tsujino et al., 2018: JRA-55 based surface dataset for driving ocean-sea-ice models (JRA55-do), Ocean Modelling, 130(1), pp 79-139. https://doi.org/10.1016/j.ocemod.2018.07.002", "region":[ @@ -556,6 +575,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -584,6 +604,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", @@ -606,6 +627,7 @@ "title":"ISMIP6 (CMIP6) - NorESM1-M-rcp85-1-0 derived data prepared for input4MIPs" }, "PCMDI-AMIP-1-1-3":{ + "mip_era":"CMIP6", "source":"PCMDI-AMIP 1.1.3: Merged SST based on UK MetOffice HadISST and NCEP OI2" }, "PCMDI-AMIP-1-1-4":{ @@ -617,6 +639,7 @@ "grid_label":"gn", "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "institution_id":"PCMDI", + "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", @@ -649,6 +672,7 @@ "grid_label":"gn", "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "institution_id":"PCMDI", + "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", @@ -681,6 +705,7 @@ "grid_label":"gn", "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "institution_id":"PCMDI", + "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", @@ -704,8 +729,9 @@ "target_mip":"CMIP", "title":"PCMDI-AMIP 1.1.6 dataset prepared for input4MIPs" }, - "PCMDI-AMIP-1-2-0":{ - "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2019-06)", + "PCMDI-AMIP-1-1-7":{ + "calendar":"gregorian", + "comment":"Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2021-06)", "contact":"PCMDI (pcmdi-cmip@llnl.gov)", "dataset_category":"SSTsAndSeaIce", "further_info_url":"https://pcmdi.llnl.gov/mips/amip", @@ -713,16 +739,17 @@ "grid_label":"gn", "institution":"Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA", "institution_id":"PCMDI", + "mip_era":"CMIP6", "nominal_resolution":"1x1 degree", "product":"observations", "references":"Taylor, K.E., D. Williamson and F. Zwiers, 2000: The sea surface temperature and sea ice concentration boundary conditions for AMIP II simulations. PCMDI Report 60, Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, 25 pp. Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf", "region":[ "global_ocean" ], - "release_year":"2020", - "source":"PCMDI-AMIP 1.2.0: Merged SST based on UK MetOffice HadISST and NCEP OI2", + "release_year":"2022", + "source":"PCMDI-AMIP 1.1.7: Merged SST based on UK MetOffice HadISST and NCEP OI2", "source_description":"Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6", - "source_id":"PCMDI-AMIP-1-2-0", + "source_id":"PCMDI-AMIP-1-1-7", "source_type":"satellite_blended", "source_variables":[ "areacello", @@ -732,9 +759,9 @@ "tos", "tosbcs" ], - "source_version":"1.2.0", + "source_version":"1.1.7", "target_mip":"CMIP", - "title":"PCMDI-AMIP 1.2.0 dataset prepared for input4MIPs" + "title":"PCMDI-AMIP 1.1.7 dataset prepared for input4MIPs" }, "UKESM1-0-LL-ssp585-1-0":{ "comment":"Prepared using CMIP6 model UKESM1-0-LL as input. A combination of historical and ssp585 datasets were used to create this ISMIP6 forcing dataset", @@ -743,6 +770,7 @@ "further_info_url":"http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page", "institution":"NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA", "institution_id":"NASA-GSFC", + "mip_era":"CMIP6", "nominal_resolution":"10 km", "product":"derived", "references":"Experimental protocol for sealevel projections from ISMIP6 standalone ice sheet models, Nowicki, S. et al, 2020, https://doi.org/10.5194/tc-2019-322", diff --git a/src/writeJson.py b/src/writeJson.py index 32dfb4d..2b14a56 100755 --- a/src/writeJson.py +++ b/src/writeJson.py @@ -6,7 +6,9 @@ Paul J. Durack 12th July 2016 This script generates all json files residing this this subdirectory - +""" +# 2017 +""" PJD 27 Feb 2017 - Copied from obs4MIPs-cmor-tables and updated inputs PJD 6 Apr 2017 - Updated to include IACETH institution_id PJD 13 Apr 2017 - Updated to deal with multiple datasets; Split table @@ -38,6 +40,9 @@ PJD 29 Nov 2017 - Updated version 6.2.2 of input4MIPs datasets PJD 29 Nov 2017 - Updated version 6.2.3 of input4MIPs datasets PJD 29 Nov 2017 - Register institution_id NCAS https://github.com/PCMDI/input4MIPs-cmor-tables/issues/22 +""" +# 2018 +""" PJD 4 Jan 2018 - Updated from upstreams 01.00.20 PJD 4 Jan 2018 - Adding yrC to address an issue with IACETH-SAGE3lambda-3-0-0 data https://github.com/PCMDI/input4MIPs-cmor-tables/issues/25 PJD 8 Jan 2018 - Register institution_id NCAR https://github.com/PCMDI/input4MIPs-cmor-tables/issues/27 @@ -65,6 +70,9 @@ PJD 23 Dec 2018 - Register source_id PCMDI-AMIP-1-1-5 https://github.com/PCMDI/input4MIPs-cmor-tables/issues/57 PJD 23 Dec 2018 - Revise source_id PCMDI-AMIP-1-1-4 PJD 23 Dec 2018 - Register institution_id MPI-B https://github.com/PCMDI/input4MIPs-cmor-tables/issues/59 +""" +# 2019 +""" PJD 30 Jan 2019 - Revise source_id MRI-JRA55-do-1-4, and generate LIday table https://github.com/PCMDI/input4MIPs-cmor-tables/issues/65 PJD 25 Feb 2019 - Register institution_id UCI https://github.com/PCMDI/input4MIPs-cmor-tables/issues/67 PJD 28 Feb 2019 - Amend MRI-JRA55-do source_id values; Update OyrC table entries https://github.com/PCMDI/input4MIPs-cmor-tables/issues/72 @@ -77,6 +85,9 @@ PJD 20 Nov 2019 - Update institution_id to maintain cross-CV formatting https://github.com/PCMDI/input4MIPs-cmor-tables/issues/93 PJD 20 Nov 2019 - Register source_id PCMDI-AMIP-1-1-6 https://github.com/PCMDI/input4MIPs-cmor-tables/issues/94 PJD 20 Nov 2019 - Revise institution_id UCI https://github.com/PCMDI/input4MIPs-cmor-tables/issues/95 +""" +# 2020 +""" PJD 17 Jul 2020 - Update upstreams PJD 17 Jul 2020 - Register institution_id NASA-GSFC https://github.com/PCMDI/input4MIPs-cmor-tables/issues/101 PJD 18 Jul 2020 - Register multiple ISMIP6 source_id entries https://github.com/PCMDI/input4MIPs-cmor-tables/issues/103 @@ -85,150 +96,155 @@ PJD 24 Jul 2020 - Add new tables for ISMIP6 https://github.com/PCMDI/input4MIPs-cmor-tables/issues/107 PJD 24 Jul 2020 - Updated call to readJsonCreateDict(tableSource, rawGit) - added argument PJD 8 Sep 2020 - Register source_id MRI-JRA55-do-1-5-0 https://github.com/PCMDI/input4MIPs-cmor-tables/issues/109 +PJD 26 Jan 2022 - Update home path - TODO: Deal with lab cert issue https://raw.githubusercontent.com -> http://rawgit.com (see requests library) + @author: durack1 """ -#%% Import statements -import copy, gc, json, os, shutil, subprocess, sys, time #, pdb -sys.path.append('/export/durack1/git/durolib/durolib/') -sys.path.append('/Volumes/durack1ml/sync/git/durolib/durolib/') +# %% Import statements from durolib import readJsonCreateDict +import copy, gc, json, os, sys, time # shutil, subprocess, pdb +sys.path.append('~/git/durolib/durolib/') +sys.path.append('~/sync/git/durolib/durolib/') -#%% Determine path +# %% Determine path #homePath = os.path.join('/','/'.join(os.path.realpath(__file__).split('/')[0:-1])) -homePath = os.path.join('/','/'.join(os.path.realpath(sys.argv[0]).split('/')[0:-2])) -#homePath = '/export/durack1/git/input4MIPs-cmor-tables/' ; # Linux -#homePath = '/sync/git/input4MIPs-cmor-tables/src' ; # OS-X -print 'homePath:',homePath +homePath = os.path.join( + '/', '/'.join(os.path.realpath(sys.argv[0]).split('/')[0:-2])) +# homePath = '/export/durack1/git/input4MIPs-cmor-tables/' ; # Linux +# homePath = '/sync/git/input4MIPs-cmor-tables/src' ; # OS-X +print('homePath:', homePath) os.chdir(homePath) -#%% List target tables +# %% List target tables masterTargets = [ - 'activity_id', - 'coordinate', - 'dataset_category', - 'frequency', - 'grid_label', - 'grids', - 'formula_terms', - 'institution_id', - 'license1', - 'mip_era', - 'nominal_resolution', - 'product', - 'realm', - 'region', - 'required_global_attributes', - 'source_id', - 'target_mip', - 'CV', - 'A3hr', - 'A3hrPt', - 'Afx', - 'Ayr', - 'Lday', - 'Lyr', - 'LIday', - 'LIfx', - 'LIyr', - 'LIyrAnt', - 'LIyrC', - 'LIyrGre', - 'Oday', - 'Ofx', - 'Omon', - 'OmonC', - 'Oyr', - 'OyrC', - 'SI3hrPt', - 'SIday', - 'SImon' - ] + 'activity_id', + 'coordinate', + 'dataset_category', + 'frequency', + 'grid_label', + 'grids', + 'formula_terms', + 'institution_id', + 'license1', + 'mip_era', + 'nominal_resolution', + 'product', + 'realm', + 'region', + 'required_global_attributes', + 'source_id', + 'target_mip', + 'CV', + 'A3hr', + 'A3hrPt', + 'Afx', + 'Ayr', + 'Lday', + 'Lyr', + 'LIday', + 'LIfx', + 'LIyr', + 'LIyrAnt', + 'LIyrC', + 'LIyrGre', + 'Oday', + 'Ofx', + 'Omon', + 'OmonC', + 'Oyr', + 'OyrC', + 'SI3hrPt', + 'SIday', + 'SImon' +] CVTargets = [ - 'activity_id', - 'dataset_category', - 'frequency', - 'grid_label', - 'institution_id', - 'license1', - 'mip_era', - 'nominal_resolution', - 'product', - 'realm', - 'region', - 'required_global_attributes', - 'source_id', - 'target_mip', - ] + 'activity_id', + 'dataset_category', + 'frequency', + 'grid_label', + 'institution_id', + 'license1', + 'mip_era', + 'nominal_resolution', + 'product', + 'realm', + 'region', + 'required_global_attributes', + 'source_id', + 'target_mip', +] tableTargets = [ - 'A3hr', - 'A3hrPt', - 'Afx', - 'Ayr', - 'CV', - 'Lday', - 'Lyr', - 'LIday', - 'LIfx', - 'LIyr', - 'LIyrAnt', - 'LIyrC', - 'LIyrGre', - 'Oday', - 'Ofx', - 'Omon', - 'OmonC', - 'Oyr', - 'OyrC', - 'SI3hrPt', - 'SIday', - 'SImon', - 'coordinate', - 'formula_terms', - 'grids' - ] - -#%% Tables + 'A3hr', + 'A3hrPt', + 'Afx', + 'Ayr', + 'CV', + 'Lday', + 'Lyr', + 'LIday', + 'LIfx', + 'LIyr', + 'LIyrAnt', + 'LIyrC', + 'LIyrGre', + 'Oday', + 'Ofx', + 'Omon', + 'OmonC', + 'Oyr', + 'OyrC', + 'SI3hrPt', + 'SIday', + 'SImon', + 'coordinate', + 'formula_terms', + 'grids' +] + +# %% Tables tableSource = [ - ['coordinate','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_coordinate.json'], - ['formula_terms','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_formula_terms.json'], - ['frequency','WCRP-CMIP/CMIP6_CVs/master/CMIP6_frequency.json'], - ['grid_label','WCRP-CMIP/CMIP6_CVs/master/CMIP6_grid_label.json'], - ['grids','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_grids.json'], - ['nominal_resolution','WCRP-CMIP/CMIP6_CVs/master/CMIP6_nominal_resolution.json'], - ['realm','WCRP-CMIP/CMIP6_CVs/master/CMIP6_realm.json'], - ['region','PCMDI/obs4MIPs-cmor-tables/master/obs4MIPs_region.json'], - ['source_id','PCMDI/input4MIPs-cmor-tables/master/input4MIPs_source_id.json'], - ['target_mip','WCRP-CMIP/CMIP6_CVs/master/CMIP6_activity_id.json'], - ['A3hr','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_3hr.json'], - ['Afx','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_fx.json'], - ['Ayr','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_Amon.json'], - ['CF3hr','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_CF3hr.json'], - ['E3hr','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_E3hr.json'], - ['LIfx','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_IfxGre.json'], - ['LIyr','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_LImon.json'], - ['LIyrAnt','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_IyrAnt.json'], - ['LIyrGre','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_IyrGre.json'], - ['Lyr','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_Lmon.json'], - ['Ofx','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_Ofx.json'], - ['Omon','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_Omon.json'], - ['SIday','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_SIday.json'], - ['SImon','PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_SImon.json'], - ] + ['coordinate', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_coordinate.json'], + ['formula_terms', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_formula_terms.json'], + ['frequency', 'WCRP-CMIP/CMIP6_CVs/master/CMIP6_frequency.json'], + ['grid_label', 'WCRP-CMIP/CMIP6_CVs/master/CMIP6_grid_label.json'], + ['grids', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_grids.json'], + ['nominal_resolution', 'WCRP-CMIP/CMIP6_CVs/master/CMIP6_nominal_resolution.json'], + ['realm', 'WCRP-CMIP/CMIP6_CVs/master/CMIP6_realm.json'], + ['region', 'PCMDI/obs4MIPs-cmor-tables/master/obs4MIPs_region.json'], + ['source_id', 'PCMDI/input4MIPs-cmor-tables/master/input4MIPs_source_id.json'], + ['target_mip', 'WCRP-CMIP/CMIP6_CVs/master/CMIP6_activity_id.json'], + ['A3hr', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_3hr.json'], + ['Afx', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_fx.json'], + ['Ayr', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_Amon.json'], + ['CF3hr', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_CF3hr.json'], + ['E3hr', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_E3hr.json'], + ['LIfx', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_IfxGre.json'], + ['LIyr', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_LImon.json'], + ['LIyrAnt', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_IyrAnt.json'], + ['LIyrGre', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_IyrGre.json'], + ['Lyr', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_Lmon.json'], + ['Ofx', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_Ofx.json'], + ['Omon', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_Omon.json'], + ['SIday', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_SIday.json'], + ['SImon', 'PCMDI/cmip6-cmor-tables/master/Tables/CMIP6_SImon.json'], +] +notTable = ['coordinate', 'frequency', 'formula_terms', 'grid_label', + 'nominal_resolution', 'realm', 'region', 'source_id', 'target_mip'] headerFree = ['coordinate', 'frequency', 'formula_terms', 'grid_label', - 'nominal_resolution', 'realm', 'region', 'source_id', 'target_mip'] + 'nominal_resolution', 'realm', 'region'] rawGit = 'https://raw.githubusercontent.com/' -#%% Loop through tables and create in-memory objects +# %% Loop through tables and create in-memory objects # Loop through tableSource and create output tables tmp = readJsonCreateDict(tableSource, rawGit) -for count,table in enumerate(tmp.keys()): - print('table:',table) - if table in ['coordinate','formula_terms']: +for count, table in enumerate(tmp.keys()): + print('table:', table) + if table in ['coordinate', 'formula_terms']: vars()[table] = tmp[table] elif table == 'target_mip': vars()[table] = tmp[table].get('activity_id') @@ -236,21 +252,24 @@ vars()[table] = tmp[table].get(table) else: vars()[table] = tmp[table] -del(tmp,count,table) ; gc.collect() +del(tmp, count, table) +gc.collect() # Cleanup by extracting only variable lists -for count2,table in enumerate(tableSource): +for count2, table in enumerate(tableSource): tableName = table[0] - print('tableName:',tableName) - #print eval(tableName) - if tableName in headerFree: + print('tableName:', tableName) + # print eval(tableName) + if tableName in notTable: continue else: - eval(tableName)['Header']['table_date'] = time.strftime('%d %B %Y') + eval(tableName)['Header']['mip_era'] = 'CMIP6' # 'CMIP6 CMIP6Plus' eval(tableName)['Header']['product'] = 'input4MIPs' - eval(tableName)['Header']['table_id'] = ''.join(['Table input4MIPs_',tableName]) + eval(tableName)['Header']['table_date'] = time.strftime('%d %B %Y') + eval(tableName)['Header']['table_id'] = ''.join( + ['Table input4MIPs_', tableName]) -#%% Cleanup imported tables +# %% Cleanup imported tables # Fixed fields # Afx AfxCleanup = ['areacellr', 'mrsofc', 'orog', 'rootd', 'sftgif', 'zfull'] @@ -261,10 +280,10 @@ Afx['Header']['realm'] = 'atmos land' Afx['variable_entry']['areacella']['comment'] = ' '.join(['For atmospheres with', 'more than 1 mesh', - '(e.g., staggered grids),', - 'report areas that apply', - 'to surface vertical', - 'fluxes of energy']) + '(e.g., staggered grids),', + 'report areas that apply', + 'to surface vertical', + 'fluxes of energy']) Afx['variable_entry']['sftlf']['comment'] = 'Please express \'X_area_fraction\' as the percentage of horizontal area occupied by X' Afx['variable_entry']['sftof'] = copy.deepcopy(Ofx['variable_entry']['sftof']) Afx['variable_entry']['sftof']['modeling_realm'] = 'atmos' @@ -272,7 +291,8 @@ Afx['variable_entry']['sftof']['comment'] = 'Percentage of horizontal area occupied by ocean' # Ofx -OfxCleanup = ['basin', 'deptho', 'hfgeou', 'masscello', 'thkcello', 'volcello'] ; #ugrid +OfxCleanup = ['basin', 'deptho', 'hfgeou', + 'masscello', 'thkcello', 'volcello'] # ugrid for clean in OfxCleanup: tmp = Ofx['variable_entry'].pop(clean) Ofx['Header']['product'] = 'input4MIPs' @@ -290,7 +310,11 @@ tmp = A3hr['variable_entry'].pop(clean) A3hr['variable_entry']['prra'] = copy.deepcopy(E3hr['variable_entry']['prra']) A3hr['variable_entry']['prra']['frequency'] = '3hr' -A3hr['variable_entry']['prra']['comment'] = 'In accordance with common usage in geophysical disciplines, \'flux\' implies per unit area, called \'flux density\' in physics' +A3hr['variable_entry']['prra']['comment'] = ' '.join(['In accordance with common', + 'usage in geophysical disciplines,', + '\'flux\' implies per unit', + 'area, called \'flux density\'', + 'in physics']) A3hr['variable_entry']['prra']['dimensions'] = 'longitude latitude time' A3hr['variable_entry']['prra']['cell_methods'] = 'area: time: mean' @@ -351,22 +375,22 @@ 'treeFracPrimDec', 'treeFracPrimEver', 'treeFracSecDec', 'treeFracSecEver', 'tsl'] #keys = Lyr['variable_entry'].keys() -#keys.sort() +# keys.sort() #print([x.encode('utf-8') for x in keys]) for clean in LyrCleanup: tmp = Lyr['variable_entry'].pop(clean) Lyr['variable_entry']['mrros']['comment'] = ' '.join(['The total surface run', 'off leaving the land', - 'portion of the grid cell', - '(excluding drainage', - 'through the base of the', - 'soil model)']) + 'portion of the grid cell', + '(excluding drainage', + 'through the base of the', + 'soil model)']) Lyr['variable_entry']['mrros']['frequency'] = 'yr' Lyr['Header']['table_id'] = 'Table input4MIPs_Lyr' Lyr['Header']['product'] = 'input4MIPs' -#print(Lyr['variable_entry'].keys()) -#print(Lyr['Header'].keys()) +# print(Lyr['variable_entry'].keys()) +# print(Lyr['Header'].keys()) # LandIce @@ -375,7 +399,8 @@ for clean in LIfxCleanup: tmp = LIfx['variable_entry'].pop(clean) LIfx['Header']['product'] = 'input4MIPs' -LIfx['variable_entry']['areacellg']['comment'] = 'Area of the target grid (not the interpolated area of the source grid)' +LIfx['variable_entry']['areacellg'][ + 'comment'] = 'Area of the target grid (not the interpolated area of the source grid)' LIfx['variable_entry']['areacellg']['modeling_realm'] = 'landIce' # Create LIyrC (before Omon is cleaned up) @@ -384,8 +409,13 @@ LIyrC['Header'] = copy.deepcopy(Omon['Header']) LIyrC['Header']['table_id'] = 'Table input4MIPs_LIyrC' LIyrC['Header']['realm'] = 'landIce' -LIyrC['variable_entry']['licalvf'] = copy.deepcopy(LIyrGre['variable_entry']['licalvf']) -LIyrC['variable_entry']['licalvf']['comment'] = 'Computed as the flux of solid ice into the ocean divided by the area of the land portion of the grid cell' +LIyrC['variable_entry']['licalvf'] = copy.deepcopy( + LIyrGre['variable_entry']['licalvf']) +LIyrC['variable_entry']['licalvf']['comment'] = ' '.join(['Computed as the flux', + 'of solid ice into the', + 'ocean divided by the', + 'area of the land portion', + 'of the grid cell']) LIyrC['variable_entry']['licalvf']['dimensions'] = 'longitude latitude time2' LIyrC['variable_entry']['licalvf']['frequency'] = 'yrC' LIyrC['variable_entry']['licalvf']['modeling_realm'] = 'landIce' @@ -396,8 +426,13 @@ LIday['Header'] = copy.deepcopy(Omon['Header']) LIday['Header']['table_id'] = 'Table input4MIPs_LIday' LIday['Header']['realm'] = 'landIce' -LIday['variable_entry']['licalvf'] = copy.deepcopy(LIyrGre['variable_entry']['licalvf']) -LIday['variable_entry']['licalvf']['comment'] = 'Computed as the flux of solid ice into the ocean divided by the area of the land portion of the grid cell' +LIday['variable_entry']['licalvf'] = copy.deepcopy( + LIyrGre['variable_entry']['licalvf']) +LIday['variable_entry']['licalvf']['comment'] = ' '.join(['Computed as the flux of', + 'solid ice into the ocean', + 'divided by the area of', + 'the land portion of the', + 'grid cell']) LIday['variable_entry']['licalvf']['dimensions'] = 'longitude latitude time' LIday['variable_entry']['licalvf']['frequency'] = 'day' LIday['variable_entry']['licalvf']['modeling_realm'] = 'landIce' @@ -410,7 +445,7 @@ 'snicefreezIs', 'snicemIs', 'snm', 'snmIs', 'snw', 'sootsn', 'tasIs', 'tpf', 'tsIs', 'tsn', 'tsnIs'] #keys = LIyr['variable_entry'].keys() -#keys.sort() +# keys.sort() #print([x.encode('utf-8') for x in keys]) for clean in LIyrCleanup: @@ -418,8 +453,8 @@ for count, key in enumerate(LIyr['variable_entry']): LIyr['variable_entry'][key]['frequency'] = 'yr' LIyr['Header']['table_id'] = 'Table input4MIPs_LIyr' -#print(LIyr['variable_entry'].keys()) -#print(LIyr['Header'].keys()) +# print(LIyr['variable_entry'].keys()) +# print(LIyr['Header'].keys()) # Create LIyrAnt/Gre LIyrISCleanup = ['hfgeoubed', 'iareafl', 'iareagr', 'libmassbffl', @@ -447,10 +482,10 @@ LIyrGre['Header']['table_id'] = 'Table input4MIPs_LIyrGre' LIyrAnt['Header']['product'] = 'input4MIPs' LIyrGre['Header']['product'] = 'input4MIPs' -#print(LIyrAnt['variable_entry'].keys()) -#print(LIyrAnt['Header'].keys()) -#print(LIyrAnt['Header']['realm']) -#print(LIyrAnt['Header']['table_id']) +# print(LIyrAnt['variable_entry'].keys()) +# print(LIyrAnt['Header'].keys()) +# print(LIyrAnt['Header']['realm']) +# print(LIyrAnt['Header']['table_id']) # Ocean @@ -481,71 +516,85 @@ # 'msftmyz','msftyyz' # 'pbfe','pbsi','pnitrate' # 'uo','vo', -OmonCleanup = ['agessc','arag','bacc','bfe','bfeos', - 'bigthetao','bigthetaoga','bsi','bsios','calc','cfc11', - 'cfc12','chl','chlcalc','chlcalcos','chldiat','chldiatos', - 'chldiaz','chldiazos','chlmisc','chlmiscos','chlos','chlpico', - 'chlpicoos','co3','co3abio','co3nat', - 'co3satarag','co3satcalc', - 'detoc','dfe','dfeos','dissi13c','dissi13cos', - 'dissi14cabio','dissi14cabioos','dissic','dissicabio', - 'dissicabioos','dissicnat','dissicnatos','dissoc', - 'dmso','dmsos','dpco2','dpco2abio','dpco2nat', - 'dpo2','eparag100','epc100','epcalc100','epfe100','epn100', - 'epp100','epsi100','evs','expc','fbddtalk','fbddtdic', - 'fbddtdife','fbddtdin','fbddtdip','fbddtdisi','fddtalk', - 'fddtdic','fddtdife','fddtdin','fddtdip','fddtdisi','fg13co2', - 'fg14co2abio','fgcfc11','fgcfc12','fgco2','fgco2abio', - 'fgco2nat','fgdms','fgo2','fgsf6','ficeberg','ficeberg2d', - 'frfe','fric','friver','frn','froc','fsfe','fsitherm','fsn', - 'graz','hfbasin','hfbasinpadv','hfbasinpmadv','hfbasinpmdiff', - 'hfbasinpsmadv','hfcorr','hfds','hfevapds','hfgeou', - 'hfibthermds','hfibthermds2d','hflso','hfrainds','hfrunoffds', - 'hfrunoffds2d','hfsifrazil','hfsifrazil2d','hfsnthermds', - 'hfsnthermds2d','hfsso','hfx','hfy','htovgyre','htovovrt', - 'icfriver','intdic','intdoc','intparag','intpbfe','intpbn', - 'intpbp','intpbsi','intpcalcite','intpn2','intpoc','intpp', - 'intppcalc','intppdiat','intppdiaz','intppmisc','intppnitrate', - 'intpppico','limfecalc','limfediat','limfediaz','limfemisc', - 'limfepico','limirrcalc','limirrdiat','limirrdiaz','limirrmisc', - 'limirrpico','limncalc','limndiat','limndiaz','limnmisc', - 'limnpico','masscello','masso','mfo','mlotst','mlotstmax', - 'mlotstmin','mlotstsq','msftbarot','msftmrho','msftmrhompa', - 'msftmzmpa','msftmzsmpa','msftyrho','msftyrhompa', - 'msftyzmpa','msftyzsmpa','nh4','no3','no3os', - 'o2','o2min','o2os','o2sat','o2satos','obvfsq','ocfriver', - 'pbo','ph','phabio','phabioos','phnat','phnatos', - 'phyc','phycalc','phycos','phydiat', - 'phydiaz','phyfe','phyfeos','phymisc', - 'phyn','phynos','phyp','phypico', - 'phypos','physi','physios','po4','pon', - 'ponos','pop','popos','pp','prra','prsn','pso','rlntds','rsdo', - 'rsntds','sf6','sfdsi','sfriver','si','sios','sltovgyre', - 'sltovovrt','so','sob','sos','soga','sosga','sossq','spco2', - 'spco2abio',u'spco2nat','talk','talknat','talknatos', - 'tauucorr','tauuo','tauvcorr','tauvo','thetao','thetaoga', - 'thkcello','tob','tosga','tossq','umo','vmo','volo', - 'vsf','vsfcorr','vsfevap','vsfpr','vsfriver','vsfsit','wfcorr', - 'wfo','wfonocorr','wmo','wo','zfullo','zhalfo','zmeso', - 'zmicro','zmisc','zo2min','zooc', - 'zos','zossq','zostoga','zsatarag','zsatcalc', - 'msftmz','msftyz', - 'aragos','baccos','calcos','co3abioos','co3natos','co3os', - 'co3sataragos','co3satcalcos','detocos','dissicos','dissocos', - 'nh4os','phos','phycalcos','phydiatos','phydiazos','phymiscos', - 'phypicoos','po4os','ppos','talkos','zmesoos','zmicroos', - 'zmiscos','zoocos'] +OmonCleanup = ['agessc', 'arag', 'bacc', 'bfe', 'bfeos', + 'bigthetao', 'bigthetaoga', 'bsi', 'bsios', 'calc', 'cfc11', + 'cfc12', 'chl', 'chlcalc', 'chlcalcos', 'chldiat', 'chldiatos', + 'chldiaz', 'chldiazos', 'chlmisc', 'chlmiscos', 'chlos', 'chlpico', + 'chlpicoos', 'co3', 'co3abio', 'co3nat', + 'co3satarag', 'co3satcalc', + 'detoc', 'dfe', 'dfeos', 'dissi13c', 'dissi13cos', + 'dissi14cabio', 'dissi14cabioos', 'dissic', 'dissicabio', + 'dissicabioos', 'dissicnat', 'dissicnatos', 'dissoc', + 'dmso', 'dmsos', 'dpco2', 'dpco2abio', 'dpco2nat', + 'dpo2', 'eparag100', 'epc100', 'epcalc100', 'epfe100', 'epn100', + 'epp100', 'epsi100', 'evs', 'expc', 'fbddtalk', 'fbddtdic', + 'fbddtdife', 'fbddtdin', 'fbddtdip', 'fbddtdisi', 'fddtalk', + 'fddtdic', 'fddtdife', 'fddtdin', 'fddtdip', 'fddtdisi', 'fg13co2', + 'fg14co2abio', 'fgcfc11', 'fgcfc12', 'fgco2', 'fgco2abio', + 'fgco2nat', 'fgdms', 'fgo2', 'fgsf6', 'ficeberg', 'ficeberg2d', + 'frfe', 'fric', 'friver', 'frn', 'froc', 'fsfe', 'fsitherm', 'fsn', + 'graz', 'hfbasin', 'hfbasinpadv', 'hfbasinpmadv', 'hfbasinpmdiff', + 'hfbasinpsmadv', 'hfcorr', 'hfds', 'hfevapds', 'hfgeou', + 'hfibthermds', 'hfibthermds2d', 'hflso', 'hfrainds', 'hfrunoffds', + 'hfrunoffds2d', 'hfsifrazil', 'hfsifrazil2d', 'hfsnthermds', + 'hfsnthermds2d', 'hfsso', 'hfx', 'hfy', 'htovgyre', 'htovovrt', + 'icfriver', 'intdic', 'intdoc', 'intparag', 'intpbfe', 'intpbn', + 'intpbp', 'intpbsi', 'intpcalcite', 'intpn2', 'intpoc', 'intpp', + 'intppcalc', 'intppdiat', 'intppdiaz', 'intppmisc', 'intppnitrate', + 'intpppico', 'limfecalc', 'limfediat', 'limfediaz', 'limfemisc', + 'limfepico', 'limirrcalc', 'limirrdiat', 'limirrdiaz', 'limirrmisc', + 'limirrpico', 'limncalc', 'limndiat', 'limndiaz', 'limnmisc', + 'limnpico', 'masscello', 'masso', 'mfo', 'mlotst', 'mlotstmax', + 'mlotstmin', 'mlotstsq', 'msftbarot', 'msftmrho', 'msftmrhompa', + 'msftmzmpa', 'msftmzsmpa', 'msftyrho', 'msftyrhompa', + 'msftyzmpa', 'msftyzsmpa', 'nh4', 'no3', 'no3os', + 'o2', 'o2min', 'o2os', 'o2sat', 'o2satos', 'obvfsq', 'ocfriver', + 'pbo', 'ph', 'phabio', 'phabioos', 'phnat', 'phnatos', + 'phyc', 'phycalc', 'phycos', 'phydiat', + 'phydiaz', 'phyfe', 'phyfeos', 'phymisc', + 'phyn', 'phynos', 'phyp', 'phypico', + 'phypos', 'physi', 'physios', 'po4', 'pon', + 'ponos', 'pop', 'popos', 'pp', 'prra', 'prsn', 'pso', 'rlntds', 'rsdo', + 'rsntds', 'sf6', 'sfdsi', 'sfriver', 'si', 'sios', 'sltovgyre', + 'sltovovrt', 'so', 'sob', 'sos', 'soga', 'sosga', 'sossq', 'spco2', + 'spco2abio', u'spco2nat', 'talk', 'talknat', 'talknatos', + 'tauucorr', 'tauuo', 'tauvcorr', 'tauvo', 'thetao', 'thetaoga', + 'thkcello', 'tob', 'tosga', 'tossq', 'umo', 'vmo', 'volo', + 'vsf', 'vsfcorr', 'vsfevap', 'vsfpr', 'vsfriver', 'vsfsit', 'wfcorr', + 'wfo', 'wfonocorr', 'wmo', 'wo', 'zfullo', 'zhalfo', 'zmeso', + 'zmicro', 'zmisc', 'zo2min', 'zooc', + 'zos', 'zossq', 'zostoga', 'zsatarag', 'zsatcalc', + 'msftmz', 'msftyz', + 'aragos', 'baccos', 'calcos', 'co3abioos', 'co3natos', 'co3os', + 'co3sataragos', 'co3satcalcos', 'detocos', 'dissicos', 'dissocos', + 'nh4os', 'phos', 'phycalcos', 'phydiatos', 'phydiazos', 'phymiscos', + 'phypicoos', 'po4os', 'ppos', 'talkos', 'zmesoos', 'zmicroos', + 'zmiscos', 'zoocos'] # Oday Oday = {} Oday['variable_entry'] = {} -Oday['variable_entry']['friver'] = copy.deepcopy(Omon['variable_entry']['friver']) +Oday['variable_entry']['friver'] = copy.deepcopy( + Omon['variable_entry']['friver']) Oday['variable_entry']['friver']['frequency'] = 'day' -Oday['variable_entry']['friver']['comment'] = 'computed as the river flux of water into the ocean divided by the area of the ocean portion of the grid cell' -Oday['variable_entry']['ficeberg2d'] = copy.deepcopy(Omon['variable_entry']['ficeberg2d']) +Oday['variable_entry']['friver']['comment'] = ' '.join(['computed as the river flux', + 'of water into the ocean', + 'divided by the area of', + 'the ocean portion of the', + 'grid cell']) +Oday['variable_entry']['ficeberg2d'] = copy.deepcopy( + Omon['variable_entry']['ficeberg2d']) Oday['variable_entry']['ficeberg2d']['frequency'] = 'day' -Oday['variable_entry']['ficeberg2d']['comment'] = 'computed as the iceberg melt water flux into the ocean divided by the area of the ocean portion of the grid cell' +Oday['variable_entry']['ficeberg2d']['comment'] = ' '.join(['computed as the iceberg', + 'melt water flux into', + 'the ocean divided by', + 'the area of the ocean', + 'portion of the grid', + 'cell']) Oday['variable_entry']['tos'] = copy.deepcopy(Omon['variable_entry']['tos']) -Oday['variable_entry']['tos']['comment'] = 'Temperature of upper boundary of the liquid ocean, including temperatures below sea-ice and floating ice shelves' +Oday['variable_entry']['tos']['comment'] = ' '.join(['Temperature of upper boundary', + 'of the liquid ocean, including', + 'temperatures below sea-ice', + 'and floating ice shelves']) Oday['variable_entry']['tos']['frequency'] = 'day' Oday['Header'] = copy.deepcopy(Omon['Header']) Oday['Header']['table_id'] = 'Table input4MIPs_Oday' @@ -554,7 +603,8 @@ # Create Lday from Oday Lday = {} Lday['variable_entry'] = {} -Lday['variable_entry']['friver'] = copy.deepcopy(Oday['variable_entry']['friver']) +Lday['variable_entry']['friver'] = copy.deepcopy( + Oday['variable_entry']['friver']) Lday['variable_entry']['friver']['modeling_realm'] = 'land' Lday['variable_entry']['friver']['cell_measures'] = 'area: areacella' Lday['Header'] = copy.deepcopy(Omon['Header']) @@ -596,10 +646,10 @@ Oyr['Header'] = copy.deepcopy(Omon['Header']) Oyr['Header']['table_id'] = 'Table input4MIPs_Oyr' Oyr['Header']['realm'] = 'ocean' -#print(Oyr['variable_entry'].keys()) -#print(Oyr['Header'].keys()) -#print(Oyr['Header']['realm']) -#print(Oyr['Header']['table_id']) +# print(Oyr['variable_entry'].keys()) +# print(Oyr['Header'].keys()) +# print(Oyr['Header']['realm']) +# print(Oyr['Header']['table_id']) # Omon for clean in OmonCleanup: @@ -614,8 +664,8 @@ Omon['variable_entry']['tosbcs']['dimensions'] = 'longitude latitude time2' Omon['variable_entry']['tosbcs']['long_name'] = 'Constructed mid-month Sea Surface Temperature' Omon['variable_entry']['tosbcs']['out_name'] = 'tosbcs' -Omon['variable_entry']['tosbcs']['valid_min'] = '-25' ; # Updated K -> degC -Omon['variable_entry']['tosbcs']['valid_max'] = '65' ; # Updated K -> degC +Omon['variable_entry']['tosbcs']['valid_min'] = '-25' # Updated K -> degC +Omon['variable_entry']['tosbcs']['valid_max'] = '65' # Updated K -> degC Omon['Header']['realm'] = 'ocean' @@ -623,34 +673,36 @@ # SImon # Cleanup 'siflsaltbot', # New 'sfdsi' -SImonCleanup = ['sfdsi','siage','siareaacrossline','siarean','siareas', - 'sicompstren','siconca','sidconcdyn','sidconcth','sidivvel', - 'sidmassdyn','sidmassevapsubl','sidmassgrowthbot', - 'sidmassgrowthwat','sidmasslat','sidmassmeltbot', - 'sidmassmelttop','sidmasssi','sidmassth','sidmasstranx', - 'sidmasstrany','sidragbot','sidragtop','siextentn','siextents', - 'sifb','siflcondbot','siflcondtop','siflfwbot','siflfwdrain', - 'sifllatstop','sifllwdtop','sifllwutop','siflsenstop', - 'siflsensupbot','siflswdbot','siflswdtop','siflswutop', - 'siforcecoriolx','siforcecorioly','siforceintstrx', - 'siforceintstry','siforcetiltx','siforcetilty','sihc', - 'siitdconc','siitdsnconc','siitdsnthick','siitdthick','simass', - 'simassacrossline','simpconc','simpmass','simprefrozen','sipr', - 'sirdgconc','sirdgthick','sisali','sisaltmass','sishevel', - 'sisnconc','sisnhc','sisnmass','sisnthick','sispeed', - 'sistremax','sistresave','sistrxdtop','sistrxubot', - 'sistrydtop','sistryubot','sitempbot','sitempsnic','sitemptop', - 'sithick','sitimefrac','siu','siv','sivol','sivoln','sivols', - 'sndmassdyn','sndmassmelt','sndmasssi','sndmasssnf', - 'sndmasssubl','sndmasswindrif','snmassacrossline'] ; - # 'sialb', +SImonCleanup = ['sfdsi', 'siage', 'siareaacrossline', 'siarean', 'siareas', + 'sicompstren', 'siconca', 'sidconcdyn', 'sidconcth', 'sidivvel', + 'sidmassdyn', 'sidmassevapsubl', 'sidmassgrowthbot', + 'sidmassgrowthwat', 'sidmasslat', 'sidmassmeltbot', + 'sidmassmelttop', 'sidmasssi', 'sidmassth', 'sidmasstranx', + 'sidmasstrany', 'sidragbot', 'sidragtop', 'siextentn', 'siextents', + 'sifb', 'siflcondbot', 'siflcondtop', 'siflfwbot', 'siflfwdrain', + 'sifllatstop', 'sifllwdtop', 'sifllwutop', 'siflsenstop', + 'siflsensupbot', 'siflswdbot', 'siflswdtop', 'siflswutop', + 'siforcecoriolx', 'siforcecorioly', 'siforceintstrx', + 'siforceintstry', 'siforcetiltx', 'siforcetilty', 'sihc', + 'siitdconc', 'siitdsnconc', 'siitdsnthick', 'siitdthick', 'simass', + 'simassacrossline', 'simpconc', 'simpmass', 'simprefrozen', 'sipr', + 'sirdgconc', 'sirdgthick', 'sisali', 'sisaltmass', 'sishevel', + 'sisnconc', 'sisnhc', 'sisnmass', 'sisnthick', 'sispeed', + 'sistremax', 'sistresave', 'sistrxdtop', 'sistrxubot', + 'sistrydtop', 'sistryubot', 'sitempbot', 'sitempsnic', 'sitemptop', + 'sithick', 'sitimefrac', 'siu', 'siv', 'sivol', 'sivoln', 'sivols', + 'sndmassdyn', 'sndmassmelt', 'sndmasssi', 'sndmasssnf', + 'sndmasssubl', 'sndmasswindrif', 'snmassacrossline'] +# 'sialb', for clean in SImonCleanup: tmp = SImon['variable_entry'].pop(clean) SImon['variable_entry']['siconc']['cell_methods'] = 'area: time: mean' SImon['variable_entry']['siconc']['cell_measures'] = 'area: areacello' -SImon['variable_entry']['siconcbcs'] = copy.deepcopy(SImon['variable_entry']['siconc']) -#SImon['variable_entry']['siconcbcs']['cell_measures'] = 'area: areacello' ; # footprint -SImon['variable_entry']['siconcbcs']['cell_methods'] = 'time: point' ; # area: time: mean +SImon['variable_entry']['siconcbcs'] = copy.deepcopy( + SImon['variable_entry']['siconc']) +# SImon['variable_entry']['siconcbcs']['cell_measures'] = 'area: areacello' ; # footprint +# area: time: mean +SImon['variable_entry']['siconcbcs']['cell_methods'] = 'time: point' SImon['variable_entry']['siconcbcs']['dimensions'] = 'longitude latitude time2' SImon['variable_entry']['siconcbcs']['long_name'] = 'Constructed mid-month Sea-ice area fraction' SImon['variable_entry']['siconcbcs']['out_name'] = 'siconcbcs' @@ -675,40 +727,40 @@ SI3hrPt['variable_entry']['siconca']['dimensions'] = 'longitude latitude time1 typesi' # Create SIday -SIdayCleanup = ['sisnthick','sispeed','sitemptop','sithick','sitimefrac', - 'siu','siv'] +SIdayCleanup = ['sisnthick', 'sispeed', 'sitemptop', 'sithick', 'sitimefrac', + 'siu', 'siv'] for clean in SIdayCleanup: tmp = SIday['variable_entry'].pop(clean) SIday['Header']['table_id'] = 'Table input4MIPs_SIday' -#%% Activity id +# %% Activity id activity_id = ['input4MIPs'] -#%% Coordinate +# %% Coordinate -#%% Dataset category +# %% Dataset category dataset_category = [ - 'GHGConcentrations', - 'SSTsAndSeaIce', - 'aerosolProperties', - 'atmosphericState', - 'emissions', - 'landState', - 'ozone', - 'radiation', - 'solar', - 'surfaceAir', - 'surfaceFluxes' + 'GHGConcentrations', + 'SSTsAndSeaIce', + 'aerosolProperties', + 'atmosphericState', + 'emissions', + 'landState', + 'ozone', + 'radiation', + 'solar', + 'surfaceAir', + 'surfaceFluxes' ] -#%% Frequency +# %% Frequency - add yrC frequency['yrC'] = 'annual climatology computed from annual mean samples' -#%% Grid label +# %% Grid label -#%% Institution id -#tmp = [['institution_id','https://raw.githubusercontent.com/PCMDI/input4mips-cmor-tables/master/input4MIPs_institution_id.json'] +# %% Institution id +# tmp = [['institution_id','https://raw.githubusercontent.com/PCMDI/input4mips-cmor-tables/master/input4MIPs_institution_id.json'] # ] ; #institution_id = readJsonCreateDict(tmp) #institution_id = institution_id.get('institution_id') @@ -717,11 +769,11 @@ institution_id = {} institution_id['CCCma'] = 'Canadian Centre for Climate Modelling and Analysis, Victoria, BC V8P 5C2, Canada' institution_id['CNRM-Cerfacs'] = ('CNRM (Centre National de Recherches Meteorologiques, Toulouse 31057, France),' - ' CERFACS (Centre Europeen de Recherche et de Formation Avancee en Calcul Scientifique, Toulouse 31100, France)') + ' CERFACS (Centre Europeen de Recherche et de Formation Avancee en Calcul Scientifique, Toulouse 31100, France)') institution_id['IACETH'] = 'Institute for Atmosphere and Climate, ETH Zurich, Zurich 8092, Switzerland' institution_id['IAMC'] = ''.join(['Integrated Assessment Modeling Consortium (see www.globalchange.umd.edu/iamc/membership ', - 'for complete membership). Mailing address: International Institute for Applied Systems Analysis ', - '(IIASA), Schlossplatz 1, A-2361 Laxenburg, Austria']) + 'for complete membership). Mailing address: International Institute for Applied Systems Analysis ', + '(IIASA), Schlossplatz 1, A-2361 Laxenburg, Austria']) institution_id['ImperialCollege'] = 'Imperial College London, South Kensington Campus, London SW7 2AZ, UK' institution_id['MOHC'] = 'Met Office Hadley Centre, Fitzroy Road, Exeter, Devon, EX1 3PB, UK' institution_id['MPI-B'] = 'Max Planck Institute for Biogeochemistry, Jena 07745, Germany' @@ -736,123 +788,156 @@ institution_id['UCI'] = 'Department of Earth System Science, University of California Irvine, Irvine, CA 92697, USA' institution_id['UColorado'] = 'University of Colorado, Boulder, CO 80309, USA' institution_id['UReading'] = 'University of Reading, Reading RG6 6UA, UK' -institution_id['UoM'] = 'Australian-German Climate & Energy College, The University of Melbourne (UoM), Parkville, Victoria 3010, Australia' +institution_id[ + 'UoM'] = 'Australian-German Climate & Energy College, The University of Melbourne (UoM), Parkville, Victoria 3010, Australia' institution_id['UofMD'] = 'University of Maryland (UofMD), College Park, MD 20742, USA' institution_id['VUA'] = 'Vrije Universiteit Amsterdam, De Boelelaan 1105, 1081 HV Amsterdam, Netherlands' -#============================================================================== +# ============================================================================== # Example new experiment_id entry #institution_id['institution_id']['NOAA-NCEI'] = 'NOAA\'s National Centers for Environmental Information, Asheville, NC 28801, USA' #institution_id['institution_id']['RSS'] = 'Remote Sensing Systems, Santa Rosa, CA 95401, USA' -#%% License +# %% License license1 = (' data produced by is licensed under a Creative' - ' Commons Attribution-[NonCommercial-]ShareAlike 4.0 International License' - ' (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse' - ' for terms of use governing input4MIPs 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). 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.') - -#%% Mip era + ' Commons Attribution-[NonCommercial-]ShareAlike 4.0 International License' + ' (https://creativecommons.org/licenses). Consult https://pcmdi.llnl.gov/CMIP6/TermsOfUse' + ' for terms of use governing input4MIPs 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). 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.') + +# %% Mip era mip_era = [ - 'CMIP1', - 'CMIP2', - 'CMIP3', - 'CMIP5', - 'CMIP6' -] ; - -#%% Product + 'CMIP1', + 'CMIP2', + 'CMIP3', + 'CMIP5', + 'CMIP6', + 'CMIP6Plus' +] + +# %% Product product = [ - 'derived', - 'observations', - 'reanalysis' + 'derived', + 'observations', + 'reanalysis' ] -#%% Nominal resolution +# %% Nominal resolution -#%% Realm +# %% Realm -#%% Region +# %% Region -#%% Required global attributes +# %% Required global attributes required_global_attributes = [ - 'Conventions', - 'activity_id', - 'contact', - 'creation_date', - 'dataset_category', - 'frequency', - 'further_info_url', - 'grid_label', - 'institution', - 'institution_id', - 'license', - 'mip_era', - 'nominal_resolution', - 'realm', - 'region', - 'source', - 'source_id', - 'source_version', - 'table_id', - 'target_mip', - 'title', - 'tracking_id', - 'variable_id' - ]; - -#%% Source id -tmp = [['source_id','PCMDI/input4mips-cmor-tables/master/input4MIPs_source_id.json'] - ] + 'Conventions', + 'activity_id', + 'contact', + 'creation_date', + 'dataset_category', + 'frequency', + 'further_info_url', + 'grid_label', + 'institution', + 'institution_id', + 'license', + 'mip_era', + 'nominal_resolution', + 'realm', + 'region', + 'source', + 'source_id', + 'source_version', + 'table_id', + 'target_mip', + 'title', + 'tracking_id', + 'variable_id' +] + +# %% Source id +tmp = [['source_id', 'PCMDI/input4mips-cmor-tables/master/input4MIPs_source_id.json'] + ] source_id = readJsonCreateDict(tmp, rawGit) source_id = source_id.get('source_id') source_id = source_id.get('source_id') # Fix issues -key = 'MRI-JRA55-do-1-5-0' +# Add mip_era to all existing entries +for count, key in enumerate(source_id.keys()): + print(count, key) + source_id[key]['mip_era'] = 'CMIP6' + +# Add PCMDI-AMIP-1-1-7 +key = 'PCMDI-AMIP-1-1-7' +source_id.pop(key, None) # Cleanup and start again source_id[key] = {} -source_id[key]['comment'] = 'Based on JRA-55 reanalysis (1958-01 to 2020-07)' -source_id[key]['contact'] = 'Hiroyuki Tsujino (htsujino@mri-jma.go.jp)' -source_id[key]['dataset_category'] = 'atmosphericState' -source_id[key]['further_info_url'] = 'http://climate.mri-jma.go.jp/~htsujino/jra55do.html' -source_id[key]['institution_id'] = 'MRI' -source_id[key]['institution'] = 'Meteorological Research Institute, Tsukuba, Ibaraki 305-0052, Japan' -source_id[key]['product'] = 'reanalysis' -source_id[key]['references'] = ' '.join(['Tsujino et al., 2018: JRA-55 based surface dataset for', - 'driving ocean-sea-ice models (JRA55-do), Ocean Modelling,', - '130(1), pp 79-139.', - 'https://doi.org/10.1016/j.ocemod.2018.07.002']) +source_id[key]['calendar'] = 'gregorian' +source_id[key]['comment'] = ' '.join(['Based on Hurrell SST/sea ice consistency', + 'criteria applied to merged HadISST', + '(1870-01 to 1981-10) & NCEP-0I2 (1981-11', + 'to 2021-06)']) +source_id[key]['contact'] = 'PCMDI (pcmdi-cmip@llnl.gov)' +source_id[key]['dataset_category'] = 'SSTsAndSeaIce' +source_id[key]['grid'] = '1x1 degree longitude x latitude' +source_id[key]['grid_label'] = 'gn' +# source_id[key]['frequency'] = 'mon' # See https://github.com/PCMDI/cmor/issues/628#issuecomment-912101615 +source_id[key]['further_info_url'] = 'https://pcmdi.llnl.gov/mips/amip' +source_id[key]['institution_id'] = 'PCMDI' +source_id[key]['institution'] = ' '.join(['Program for Climate Model Diagnosis', + 'and Intercomparison, Lawrence', + 'Livermore National Laboratory,', + 'Livermore, CA 94550, USA']) +source_id[key]['nominal_resolution'] = '1x1 degree' +source_id[key]['mip_era'] = 'CMIP6' +source_id[key]['product'] = 'observations' +source_id[key]['references'] = ''.join(['Taylor, K.E., D. Williamson and F. Zwiers, ', + '2000: The sea surface temperature and sea ice ', + 'concentration boundary conditions for AMIP II ', + 'simulations. PCMDI Report 60, Program for ', + 'Climate Model Diagnosis and Intercomparison, ', + 'Lawrence Livermore National Laboratory, 25 pp. ', + 'Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf']) source_id[key]['region'] = ['global_ocean'] -source_id[key]['release_year'] = '2020' -source_id[key]['source_description'] = 'Atmospheric state and terrestrial runoff datasets produced by MRI for the OMIP experiment of CMIP6' -source_id[key]['source'] = 'MRI JRA55-do 1.5.0: Atmospheric state generated for OMIP based on the JRA-55 reanalysis' +source_id[key]['release_year'] = '2022' +source_id[key]['source_description'] = ' '.join(['Sea surface temperature and', + 'sea-ice datasets produced by', + 'PCMDI (LLNL) for the AMIP', + '(DECK) experiment of CMIP6']) +source_id[key]['source'] = 'PCMDI-AMIP 1.1.7: Merged SST based on UK MetOffice HadISST and NCEP OI2' source_id[key]['source_id'] = key source_id[key]['source_type'] = 'satellite_blended' -source_id[key]['source_variables'] = ['areacello', 'friver', 'huss', 'licalvf', - 'prra', 'prsn', 'psl', 'rlds', 'sftof', - 'siconc', 'siconca', 'sos', 'tas', 'tos', - 'ts', 'uas', 'uos', 'vas', 'vos'] -source_id[key]['source_version'] = '1.5.0' -source_id[key]['target_mip'] = 'OMIP' -source_id[key]['title'] = 'MRI JRA55-do 1.5.0 dataset prepared for input4MIPs' - -''' +source_id[key]['source_variables'] = ['areacello', 'sftof', 'siconc', 'siconcbcs', + 'tos', 'tosbcs'] +source_id[key]['source_version'] = '1.1.7' +source_id[key]['target_mip'] = 'CMIP' +source_id[key]['title'] = 'PCMDI-AMIP 1.1.7 dataset prepared for input4MIPs' + +# Remove PCMDI-AMIP-1-2-0 key = 'PCMDI-AMIP-1-2-0' +source_id.pop(key, None) # Cleanup and start again +# Add PCMDI-AMIP-1-2-0 - placeholder +""" +key = 'PCMDI-AMIP-1-2-0' +source_id.pop(key, None) # Cleanup and start again source_id[key] = {} -source_id[key]['comment'] = 'Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2019-06)' +source_id[key]['calendar'] = 'gregorian' +source_id[key]['comment'] = 'Based on Hurrell SST/sea ice consistency criteria applied to merged HadISST (1870-01 to 1981-10) & NCEP-0I2 (1981-11 to 2021-06)' source_id[key]['contact'] = 'PCMDI (pcmdi-cmip@llnl.gov)' source_id[key]['dataset_category'] = 'SSTsAndSeaIce' source_id[key]['grid'] = '1x1 degree longitude x latitude' source_id[key]['grid_label'] = 'gn' +#source_id[key]['frequency'] = 'mon' # See https://github.com/PCMDI/cmor/issues/628#issuecomment-912101615 source_id[key]['further_info_url'] = 'https://pcmdi.llnl.gov/mips/amip' source_id[key]['institution_id'] = 'PCMDI' source_id[key]['institution'] = 'Program for Climate Model Diagnosis and Intercomparison, Lawrence Livermore National Laboratory, Livermore, CA 94550, USA' source_id[key]['nominal_resolution'] = '1x1 degree' +source_id[key]['mip_era'] = 'CMIP6Plus' source_id[key]['product'] = 'observations' source_id[key]['references'] = ''.join(['Taylor, K.E., D. Williamson and F. Zwiers, ', '2000: The sea surface temperature and sea ice ', @@ -862,7 +947,7 @@ 'Lawrence Livermore National Laboratory, 25 pp. ', 'Available online: https://pcmdi.llnl.gov/report/pdf/60.pdf']) source_id[key]['region'] = ['global_ocean'] -source_id[key]['release_year'] = '2020' +source_id[key]['release_year'] = '2022' source_id[key]['source_description'] = 'Sea surface temperature and sea-ice datasets produced by PCMDI (LLNL) for the AMIP (DECK) experiment of CMIP6' source_id[key]['source'] = 'PCMDI-AMIP 1.2.0: Merged SST based on UK MetOffice HadISST and NCEP OI2' source_id[key]['source_id'] = key @@ -872,81 +957,15 @@ source_id[key]['source_version'] = '1.2.0' source_id[key]['target_mip'] = 'CMIP' source_id[key]['title'] = 'PCMDI-AMIP 1.2.0 dataset prepared for input4MIPs' +""" -# Loop over ISMIP6 source_id entries -sIds = [ - 'ACCESS1-3-rcp85-1-0', - 'CCSM4-rcp26-1-0', - 'CCSM4-rcp85-1-0', - 'CESM2-ssp585-1-0', - 'CNRM-CM6-1-ssp126-1-0', - 'CNRM-CM6-1-ssp585-1-0', - 'CNRM-ESM2-1-ssp585-1-0', - 'CSIRO-MK3-6-0-rcp85-1-0', - 'HadGEM2-ES-rcp85-1-0', - 'IPSL-CM5A-MR-rcp26-1-0', - 'IPSL-CM5A-MR-rcp85-1-0', - 'MIROC-ESM-CHEM-rcp26-1-0', - 'MIROC-ESM-CHEM-rcp85-1-0', - 'MIROC5-rcp26-1-0', - 'MIROC5-rcp85-1-0', - 'NorESM1-M-rcp26-1-0', - 'NorESM1-M-rcp85-1-0', - 'UKESM1-0-LL-ssp585-1-0' - ] - -for count,sId in enumerate(sIds): - key = sId - tmp = key.replace('-1-0','') - rcp = tmp.split('-')[-1] - if 'ssp' in rcp: - mipEra = 'CMIP6' - else: - mipEra = 'CMIP5' - mod = tmp.replace(''.join(['-',rcp]),'') - print(count,key,mod,rcp,mipEra) - #sys.exit() - source_id[key] = {} - source_id[key]['comment'] = ' '.join(['Prepared using', mipEra, 'model', mod , - 'as input. A combination of historical', - 'and', rcp ,'datasets were used to', - 'create this ISMIP6 forcing dataset']) - source_id[key]['contact'] = 'ISMIP6 Steering Team (ismip6@gmail.com)' - source_id[key]['dataset_category'] = 'surfaceFluxes' - source_id[key]['further_info_url'] = 'http://www.climate-cryosphere.org/wiki/index.php?title=ISMIP6_wiki_page' - source_id[key]['institution_id'] = 'NASA-GSFC' - source_id[key]['institution'] = 'NASA Goddard Space Flight Center, Greenbelt, MD 20771, USA' - source_id[key]['nominal_resolution'] = '10 km' - source_id[key]['product'] = 'derived' - source_id[key]['references'] = ' '.join(['Experimental protocol for sealevel', - 'projections from ISMIP6 standalone', - 'ice sheet models, Nowicki, S. et al,', - '2020, https://doi.org/10.5194/tc-2019-322']) - source_id[key]['release_year'] = '2020' - source_id[key]['source_description'] = ' '.join(['Ice sheet relevant datasets', - 'produced by the ISMIP6 Team', - 'for the standalone ice sheet', - 'experiment of ISMIP6']) - source_id[key]['source'] = ' '.join([key, 'derived dataset computed from', mipEra, - mod, 'historical and', rcp, 'simulations', - 'for ISMIP6']) - source_id[key]['source_id'] = key - source_id[key]['source_type'] = 'AOGCM' - source_id[key]['source_variables'] = ['acabf', 'evspsbl', 'mrros', 'pr', - 'sftflf', 'so', 'ts'] - source_id[key]['source_version'] = '1.0' - source_id[key]['target_mip'] = 'ISMIP6' - source_id[key]['title'] = ' '.join(['ISMIP6 (CMIP6) -', key, 'derived data prepared', - 'for input4MIPs']) -''' - -#%% Create CV master +# %% Create CV master CV = {} CV['CV'] = {} CV['CV']['activity_id'] = ['input4MIPs'] CV['CV']['dataset_category'] = dataset_category CV['CV']['frequency'] = frequency -#CV['CV']['further_info_url'] = ['[[:alpha:]]\\{1,\\}'] ; # Not matching format +# CV['CV']['further_info_url'] = ['[[:alpha:]]\\{1,\\}'] ; # Not matching format CV['CV']['grid_label'] = grid_label CV['CV']['institution_id'] = institution_id CV['CV']['license'] = license1 @@ -958,37 +977,39 @@ CV['CV']['required_global_attributes'] = required_global_attributes CV['CV']['source_id'] = source_id -#%% Write variables to files -print 'Start Tables write:',os.getcwd() +# %% Write variables to files +print('Start Tables write:', os.getcwd()) for jsonName in masterTargets: - #print jsonName + # print jsonName # Clean experiment formats - if jsonName in ['coordinate','grids']: #,'Amon','Lmon','Omon','SImon']: + if jsonName in ['coordinate', 'grids']: # ,'Amon','Lmon','Omon','SImon']: dictToClean = eval(jsonName) - for key, value1 in dictToClean.iteritems(): - for value2 in value1.iteritems(): + for key, value1 in dictToClean.items(): + for value2 in value1.items(): string = dictToClean[key][value2[0]] if not isinstance(string, list) and not isinstance(string, dict): - string = string.strip() ; # Remove trailing whitespace - string = string.strip(',.') ; # Remove trailing characters - string = string.replace(' + ',' and ') ; # Replace + - string = string.replace(' & ',' and ') ; # Replace + - string = string.replace(' ',' ') ; # Replace ' ', ' ' - string = string.replace('anthro ','anthropogenic ') ; # Replace anthro - string = string.replace('decidous','deciduous') ; # Replace decidous - string = string.replace(' ',' ') ; # Replace ' ', ' ' + string = string.strip() # Remove trailing whitespace + string = string.strip(',.') # Remove trailing characters + string = string.replace(' + ', ' and ') # Replace + + string = string.replace(' & ', ' and ') # Replace + + string = string.replace(' ', ' ') # Replace ' ', ' ' + string = string.replace( + 'anthro ', 'anthropogenic ') # Replace anthro + string = string.replace( + 'decidous', 'deciduous') # Replace decidous + string = string.replace(' ', ' ') # Replace ' ', ' ' dictToClean[key][value2[0]] = string vars()[jsonName] = dictToClean # Write file if jsonName == 'license1': outFile = ''.join(['input4MIPs_license.json']) elif jsonName in tableTargets: - outFile = ''.join(['Tables/input4MIPs_',jsonName,'.json']) + outFile = ''.join(['Tables/input4MIPs_', jsonName, '.json']) else: - outFile = ''.join(['input4MIPs_',jsonName,'.json']) + outFile = ''.join(['input4MIPs_', jsonName, '.json']) # Check file exists if os.path.exists(outFile): - print('File existing, purging:',outFile) + print('File existing, purging:', outFile) os.remove(outFile) if not os.path.exists('Tables'): os.mkdir('Tables') @@ -1002,15 +1023,18 @@ jsonDict[jsonName] = eval(jsonName) else: jsonDict = eval(jsonName) - fH = open(outFile,'w') - json.dump(jsonDict,fH,ensure_ascii=True,sort_keys=True,indent=4,separators=(',',':'),encoding="utf-8") + fH = open(outFile, 'w') + json.dump(jsonDict, fH, ensure_ascii=True, sort_keys=True, + indent=4, separators=(',', ':')) #, encoding="utf-8") fH.close() -del(jsonName,outFile) ; gc.collect() +del(jsonName, outFile) +gc.collect() # Validate - only necessary if files are not written by json module -#%% Generate MRI-JMA-JRA55-do-1-3 demo directory +# %% Generate MRI-JMA-JRA55-do-1-3 demo directory +""" demoPath = os.path.join('/','/'.join(os.path.realpath(__file__).split('/')[0:-2]),'demo') demoPath = os.path.join(demoPath,'MRI-JMA-JRA55-do-1-3') outPath = os.path.join(demoPath,'Tables') @@ -1029,8 +1053,10 @@ fileName = ''.join(['input4MIPs_',tableId,'.json']) sourcePath = os.path.join('..','..','Tables',fileName) shutil.copy(sourcePath,'Tables') +""" -#%% Generate zip archive +# %% Generate zip archive +""" env7za = os.environ.copy() env7za['PATH'] = env7za['PATH'] + ':/export/durack1/bin/downloads/p7zip16.02/180204_build/p7zip_16.02/bin' # Cleanup rogue files @@ -1054,8 +1080,10 @@ stderr = p.stderr.read() # Move to demo dir shutil.move('demo.zip', 'MRI-JMA-JRA55-do-1-3/demo.zip') +""" -#%% Generate MRI-JMA-JRA55-do-1-3-2 demo directory +# %% Generate MRI-JMA-JRA55-do-1-3-2 demo directory +""" #demoPath = os.path.join('/','/'.join(os.path.realpath(__file__).split('/')[0:-2]),'demo') demoPath = os.path.join(homePath,'demo') os.chdir(demoPath) @@ -1077,8 +1105,10 @@ fileName = ''.join(['input4MIPs_',tableId,'.json']) sourcePath = os.path.join('..','..','..','..','Tables',fileName) shutil.copy(sourcePath,'.') +""" -#%% Generate MRI-JMA-JRA55-do-1-4-0 demo directory +# %% Generate MRI-JMA-JRA55-do-1-4-0 demo directory +""" demoPath = os.path.join(homePath,'demo') os.chdir(demoPath) #print 'MRI-JMA-JRA55-do-1-4-0 demo:',os.getcwd() @@ -1100,8 +1130,10 @@ fileName = ''.join(['input4MIPs_',tableId,'.json']) sourcePath = os.path.join('..','..','..','Tables',fileName) shutil.copy(sourcePath,'.') +""" -#%% Generate MRI-JMA-JRA55-do-1-5-0 demo directory +# %% Generate MRI-JMA-JRA55-do-1-5-0 demo directory +""" demoPath = os.path.join(homePath,'demo') os.chdir(demoPath) #print 'MRI-JMA-JRA55-do-1-5-0 demo:',os.getcwd() @@ -1123,16 +1155,18 @@ fileName = ''.join(['input4MIPs_',tableId,'.json']) sourcePath = os.path.join('..','..','..','Tables',fileName) shutil.copy(sourcePath,'.') +""" - -#%% Incorporate JSON versioning info - see https://docs.google.com/document/d/1pU9IiJvPJwRvIgVaSDdJ4O0Jeorv_2ekEtted34K9cA/edit#heading=h.w4kchhc266o3 +# %% Incorporate JSON versioning info - see https://docs.google.com/document/d/1pU9IiJvPJwRvIgVaSDdJ4O0Jeorv_2ekEtted34K9cA/edit#heading=h.w4kchhc266o3 +""" os.chdir('../..') versionId = '6.2.3' input4MIPs = {} input4MIPs['data'] = {} # Generate institutions -keys = institution_id.keys(); keys.sort() -#for inst in keys: +keys = institution_id.keys() +sorted(keys) +# for inst in keys: # input4MIPs['data'][inst] = {} # Drop in version identifiers input4MIPs['version'] = versionId @@ -1154,12 +1188,14 @@ input4MIPs['data']['C4MIP'] = {} input4MIPs['data']['C4MIP']['ImperialCollege'] = {} input4MIPs['data']['C4MIP']['ImperialCollege']['atmosphericState'] = {} -input4MIPs['data']['C4MIP']['ImperialCollege']['atmosphericState']['currentVersion'] = ['1.1', '2.0'] +input4MIPs['data']['C4MIP']['ImperialCollege']['atmosphericState']['currentVersion'] = [ + '1.1', '2.0'] input4MIPs['data']['C4MIP']['ImperialCollege']['atmosphericState']['deprecatedVersion'] = '1.0' input4MIPs['data']['OMIP'] = {} input4MIPs['data']['OMIP']['ImperialCollege'] = {} input4MIPs['data']['OMIP']['ImperialCollege']['atmosphericState'] = {} -input4MIPs['data']['OMIP']['ImperialCollege']['atmosphericState']['currentVersion'] = ['1.1', '2.0'] +input4MIPs['data']['OMIP']['ImperialCollege']['atmosphericState']['currentVersion'] = [ + '1.1', '2.0'] input4MIPs['data']['OMIP']['ImperialCollege']['atmosphericState']['deprecatedVersion'] = '1.0' input4MIPs['data']['HighResMIP'] = {} input4MIPs['data']['HighResMIP']['MOHC'] = {} @@ -1174,17 +1210,20 @@ input4MIPs['data']['CMIP']['MPI-M']['aerosolProperties']['currentVersion'] = '1.0' input4MIPs['data']['CMIP']['PCMDI'] = {} input4MIPs['data']['CMIP']['PCMDI']['SSTsAndSeaIce'] = {} -input4MIPs['data']['CMIP']['PCMDI']['SSTsAndSeaIce']['currentVersion'] = ['1.1.2','1.1.3'] -input4MIPs['data']['CMIP']['PCMDI']['SSTsAndSeaIce']['deprecatedVersion'] = ['1.0.0', '1.0.1', '1.1.0', '1.1.1'] +input4MIPs['data']['CMIP']['PCMDI']['SSTsAndSeaIce']['currentVersion'] = [ + '1.1.2', '1.1.3'] +input4MIPs['data']['CMIP']['PCMDI']['SSTsAndSeaIce']['deprecatedVersion'] = [ + '1.0.0', '1.0.1', '1.1.0', '1.1.1'] input4MIPs['data']['CMIP']['PNNL-JGCRI'] = {} input4MIPs['data']['CMIP']['PNNL-JGCRI']['emissions'] = {} -input4MIPs['data']['CMIP']['PNNL-JGCRI']['emissions']['currentVersion'] = ['2017-05-18','2017-08-30','2017-10-05'] +input4MIPs['data']['CMIP']['PNNL-JGCRI']['emissions']['currentVersion'] = [ + '2017-05-18', '2017-08-30', '2017-10-05'] input4MIPs['data']['CMIP']['PNNL-JGCRI']['emissions']['currentVersionNotes'] = ('latest *_AIR_* datasets are 2017-08-30 (except', ' SO2), and SO2 aircraft emission files 2017-10-05', ', which deprecate 2017-05-18') input4MIPs['data']['CMIP']['PNNL-JGCRI']['emissions']['deprecatedVersion'] = ['2016-06-18', '2016-06-18-sectorDimV2', - '2016-07-26', '2016-07-26-sectorDim', '2017-05-18 (*-AIR-*)', - '2017-08-30 (SO2-em-AIR*)'] + '2016-07-26', '2016-07-26-sectorDim', '2017-05-18 (*-AIR-*)', + '2017-08-30 (SO2-em-AIR*)'] input4MIPs['data']['CMIP']['SOLARIS-HEPPA'] = {} input4MIPs['data']['CMIP']['SOLARIS-HEPPA']['solar'] = {} input4MIPs['data']['CMIP']['SOLARIS-HEPPA']['solar']['currentVersion'] = '3.2' @@ -1207,19 +1246,19 @@ input4MIPs['data']['ScenarioMIP']['UofMD']['landState'] = {} input4MIPs['data']['ScenarioMIP']['UofMD']['landState']['currentVersion'] = '2.1f' input4MIPs['data']['ScenarioMIP']['UofMD']['landState']['currentVersionNotes'] = ('All ScenarioMIP scenario datasets are now', - ' available. New GCAM-ssp434 and GCAM-ssp460', - ' datasets added to existing IMAGE-ssp126,' - ' AIM-ssp370 and MAGPIE-ssp585 datasets', - ' published as part of the 6.2.1 release') + ' available. New GCAM-ssp434 and GCAM-ssp460', + ' datasets added to existing IMAGE-ssp126,' + ' AIM-ssp370 and MAGPIE-ssp585 datasets', + ' published as part of the 6.2.1 release') input4MIPs['data']['CMIP']['VUA'] = {} input4MIPs['data']['CMIP']['VUA']['emissions'] = {} input4MIPs['data']['CMIP']['VUA']['emissions']['currentVersion'] = '1.2' input4MIPs['data']['CMIP']['VUA']['emissions']['deprecatedVersion'] = '1.0' # Write version file -outFile = ''.join(['../Versions/',versionId,'.json']) +outFile = ''.join(['../Versions/', versionId, '.json']) # Check file exists if os.path.exists(outFile): - print('File existing, purging:',outFile) + print('File existing, purging:', outFile) os.remove(outFile) if not os.path.exists('../Versions'): os.mkdir('../Versions') @@ -1228,6 +1267,8 @@ jsonDict['input4MIPs_version'] = {} jsonDict['input4MIPs_version'] = input4MIPs # Write to file -fH = open(outFile,'w') -json.dump(jsonDict,fH,ensure_ascii=True,sort_keys=True,indent=4,separators=(',',':'),encoding="utf-8") +fH = open(outFile, 'w') +json.dump(jsonDict, fH, ensure_ascii=True, sort_keys=True, + indent=4, separators=(',', ':'), encoding="utf-8") fH.close() +"""