Data and Source Code

This page contains the code, input data, and experiment output for the research article, "Reconstructing paleoclimate fields using online data assimilation with a linear inverse model" (2017) in the Climate of the Past journal.

Authors:
Walter Perkins [wperkins (AT) atmos (DOT) washington (DOT) edu]
Gregory Hakim [ghakim (AT) uw (DOT) edu]

Paper (DOI:10.5194/cp-13-421-2017)
Discussion Paper (DOI:10.5194/cp-2016-129)

LMR_code.tar includes the source code used to run all experiments in this study. A short README on the basics of this code are provided in the lmr_src directory in the tarball.

LMR_src.tar


The linear inverse modeling package developed for this project, pyLIM (release v0.8), can be acquired from github. After downloading/cloning the package, install it by navigating to the source folder and using the command: python setup.py install

This tarball contains pre-processed input data in the default folder structure the LMR code utilizes. Untarring this file and pointing the configuration to the path of the input data directory is enough to run the experiments. Input data consists of some pickle and HDF5 files representing preprocessed data (proxy records, calibrated PSMs [observation models], lim calibrations, and pre-averaged gridded data). Config flags related to ignoring pre-processed files (e.g. core.ignore_pre_avg_files, and forecaster.LIM.ignore_precalib) need to be set to false in order to run using this input data.

LMR_input_data.tar.gz

The experiment output tarballs include output files for the global mean and spatial fields of surface temperatures between blending coefficients of 0.7 <= a <= 1.0, and the LMR_config.py files used for the experiment. All reconstructions cover the years from 1850 - 2000. The numerical output is stored as a numpy zip file (*.npz) which can be opened in python using the numpy load function. Note that loading using this function returns a dictionary-like object where different variables are stored as key-value pairs.

Offline Experiment

Offline (no forecasting) experiment used for comparison.

offline_exp_output.tar.gz

Persistence Forecast Experiment

Reconstructions using persistence forecasts.

persistence_exp_output.tar.gz

20CR LIM Experiment

Reconstructions using 20th Century Reanalysis calibrated LIM forecast.

20cr_lim_exp_output.tar.gz

BE LIM Experiment

Reconstructions using Berkeley Earth calibrated LIM forecasts

be_lim_exp_output.tar.gz

CCSM4 LIM Experiment

Reconstructions using CCSM4 Last Millennium calibrated LIM forecasts

ccsm4_lim_exp_output.tar.gz

MPI LIM Experiment

Reconstructions using MPI Last Millennium calibrated LIM forecasts

mpi_lim_exp_output.tar.gz


Folder Structure


experiment_name
    +-> monte carlo iteration folders(e.g. r0, r1, r2, ...)
        +-> blending coefficient value folders(e.g. a0.7_d0.00)
            +-> experiment output (LMR_config.py, ensemble_mean_tas_sfc_Amon.npz, gmt_ensemble.npz)
          


File Descriptions

ensemble_mean_tas_sfc_Amon.npz

ensemble average of reconstructed surface temperature anomaly fields in a numpy zip file with the following data:

varname description
nlat length of latitude dimension
nlon length of longitude dimension
nens number of ensemble members that went into the average
years reconstructed years
lat grid of latitudes (nlat x nlon)
lon grid of longitudes (nlat x nlon)
xam analysis output fields (nyears x nlat x nlon)
xbm static prior fields (nyears x nlat x nlon) NOTE: This is not the blended prior!
gmt_ensemble.npz

full ensemble of reconstructed global mean temperature anomalies in a numpy zip file with the following data

varname description
recon_times reconstructed years
gmt_ensemble global average temerature anomalies (nyears x nens)
nhmt_ensemble north hemisphere average temperature anomalies (nyears x nens)
shmt_ensemble south hemisphere average temperature anomalies (nyears x nens)
LMR_config.py

the configuration used in the experiment

The GMT analysis of the paper was performed using the average over all ensemble members and all Monte Carlo iterations. The averages were centered on the 1900 - 2000 mean.

Bootstrap uncertainty estimates were done using random 100 member samples from the total ensemble (10^4 members, 100 ensemble members x 100 MC iterations). The sample average was then centered to the 1900 - 2000 average before metric calculation.

GISTEMP trend uncertainty was calculated using bootstrap resampling of the timeseries (121 members sampled with replacement) followed by a linear trend calculation.