Characteristics of a Multi-model Ensemble of Mock-Walker Simulations: Code and Derived Data

Read full text
Authors: Graham O'Donnell, Allison Wing
Cited by: 1

Abstract

VERSION 1.1 This folder contains the code needed to generate the plots and data for "Characteristics of a Multi-model Ensemble of Mock-Walker Simulations". All code except for Figure 15 is run in Python. For all codes, the variable "codeDirectory" should be set to the file location of the codes to run properly. This is primarily to properly import code from "Utilities/" General programs useful for handling RCEMIP data are given in "Utilities/".-Utilities/metFormulas.py: various meteorological formulas-Utilities/generalUtilities.py and Utilities/dsTools.py: basic processing tools-Utilities/extract*.py: imports RCEMIP data from directories specified in generalUtilities.py Organization metric data is calculated by the codes in METRICS/A-*/.The metric files are saved in METRICS/nc-mw/. The current metric importation is designed to require the files in this folder rather than importing data directly from Utilities/aggRecalc/aggregation_metrics_mw.csv as several codes require timeseries of the values of the metrics. ____________________________________________________________ Figure GenerationFigure 1: DemonstrateSST/demonstrateSST.py -Saved as DemonstrateSST/demonstrateSST.png. Figure 2, 3, S1, S2: images/rlut_pr_mw_multimodel.py, function createImages(). -Stored in images/CRM/ and images/GCM/. Figure 4, S3 [circulation]: Circulation/circulationPlots.py -Stored in Circulation/PhysicalSpace-TimeAveraged/Streamfunction/ Figure 5, S4-S7 [fourier, hovmoller]: ClassifyScenes/hovmollerWithClassifications.py -Saved in ClassifyScenes/hovmollerWithPie/. -5: 300dT1p25-crh-slice-sametime.pdf -S4-S7: -crh-slice-sametime.pdf A version of this code that omits the pie charts and does not require [fourier] is hovmoller/hovmoller.py. Figure 6, 10, S8-S11, S13: Metrics/multiplot.py. Files are saved as Metrics/Metrics- .pdf -6 and S8-S11: SST is one of the five Simulations -S13: SST is T -10: SST is DT Figure 7, S12 [fourier]: ClassifyScenes/classDiscreteVsMetrics.py. -Saved as ClassifyScenes/metricViolinPlot/CRM/CRM_all_Lorg.pdf and ./CRM_all_Iorg.pdf. Figure 8: [fourier]: ClassifyScenes/plotPercentilesByCategory.py, method createFrequencyPieCharts(). -Saved as ClassifyScenes/pieCharts/CRM.pdf. Figure 9: Metrics/iorgBoxPlots.py, method changeMultiPanel(). -Saved as Metrics/BoxPlots/change/metricChangeCombined295305all.pdf Figure 11, S14, S15: DomainStatistics/BoxPlots.py. -11: DomainStatistics/boxplots-domainmean-T.pdf Figure 12-14, S16-S19 [isccp]: ISCCP/histograms.py, method plotHistMultimodel() -Saved in histPlot/Multimodel-ISCCP-CRM_ _GCM.png -12, S16-S19: is one of the Simulations -13: is "changeT" -14: is "changeDT" Figure 15: A-Statistics/plot_climatesensitivity.m. -This function requires some files from RCEMIP-I which are not included in this repository. -Saved as A-Statistics/Fig_lambda_I_II.pdf. -Note: this is a MATLAB code. Figure 16 [percentiles]: Percentiles/plotPercentiles.py, method plotPercentileRatioVsAgg(). -Must be run twice for the two subpanels. -Saved in percentilePlots/percentileRatioVsAgg/mw/pr/Ichange/, with the files corresponding to input parameters. Figure S20 [percentiles]: Percentiles/plotSpaceTimeCorrelations.py, method correlatePercentileVsAggChanges(). -Must be run twice for the two subpanels. -Saved in percentilePlots/LinearArithmetic/correlatePercentileAggChange/mw/pr/ Change/. Figure S21 [scaling]: Scaling/BoxPlots.py -Saved in scalingPlots/LinearArithmetic/BoxPlots/avgAbove/separateDyn2/mw/coarse15km/shift1/ File name matches *-def-*-99.9.pdf -Generates two needed files, 305dT1p25-295dT1p25/ for S21a and 300dT2p5-300dT0p625/ for S21b Figure S22-S23 [scaling]: Scaling/ComponentsVsAgg.py, method componentsVsAggSubplots() -Saved at scalingPlots/LinearArithmetic/componentsVsAgg/def-shift1/mw/coarse15km/ /Combined/ -S22 and S23: File name contains Ichange Figure B1: ClassifyScenes/hovmollerClassFourierDiscretePoster.py. -Saved as ClassifyScenes/classFourierDemo/Plots/mw/SAM-CRM/SAM-CRM-300dT1p25-crh.png __________________________________________________ [circulation]: This code requires the data in 3D-Circ/ -Calculated by Circulation/circulation.py, either method -3D-Circ must be loaded in as Circulation/3D-Circ/[fourier]: This code requires the discrete Fourier classification. These classifications are generated by ClassifyScenes/hovmollerClassFourierDiscrete.py and saved in ClassifyScenes/classDS/ /.[fourierContinuous]: This code requires the continuous Fourier classification. This is calculated by ClassifyScenes/hovmollerClassFourierContinuous.py and saved in ClassifyScenes/classDSContinuous/ /.[hovmoller]: This code requires hovmoller data. This data is calculated by running hovmoller/createDatasets.py, with data stored in hovmoller/2D-Timeseries/ /. -The selection method for the sliced GCM data was updated during paper revisions. The new data is located in 2D-Timeseries-GCM-Updated.zip, and all files within that should be extracted into 2D-Timeseries/.[isccp]: This code requires use of the ISCCP data. -CRMs: ISCCP data calculated via the Approximate ISCCP Simulator (Stauffer and Wing 2023) within ISCCP/tau2023.py. Data is saved in a separate folder within the repository as isccpData/, which must be loaded into the main folder as ISCCP/isccpData/. -GCMs: ISCCP data was saved by three models during running (CNRM-CM6, E3SM, UKMO-GA7.1) From the ISCCP data, histograms are calculated by ISCCP/histograms.py method generateHistograms() (for CRMs) and generateHistogramsGCM() (for GCMs). These are saved at ISCCP/hist/ /.[percentiles]: This code requires precipitation percentile tables. These are calculated by Utilities/calcPercentiles.py and saved in Percentiles/.[scaling]: This code requires the scaling JSON files in Scaling/scalingJsons.py. This code also requires [percentiles]. -To create these files, first run Scaling/calculatePercentileProfiles-accumulate-coarsen-parallel.py. This creates the composite profiles in Scaling/scalingParallel/. -Then, run Scaling/separateComponentsDecomposeDyn.py to create the JSONs. -The scaling profile creation code takes a long time to run and outputs large files. Scaling/scalingParallel.py is uploaded as a separate folder within the repository to decrease the required file size.

Publication details

Journal / source
Zenodo (CERN European Organization for Nuclear Research)
Publication date
5 May 2026