Tutorial 2: Reconstructing Past Changes in Ocean Climate
Contents
Tutorial 2: Reconstructing Past Changes in Ocean Climate#
Week 1, Day 4, Paleoclimate
Content creators: Sloane Garelick
Content reviewers: Yosmely Bermúdez, Dionessa Biton, Katrina Dobson, Maria Gonzalez, Will Gregory, Nahid Hasan, Sherry Mi, Beatriz Cosenza Muralles, Brodie Pearson, Jenna Pearson, Chi Zhang, Ohad Zivan
Content editors: Yosmely Bermúdez, Zahra Khodakaramimaghsoud, Jenna Pearson, Agustina Pesce, Chi Zhang, Ohad Zivan
Production editors: Wesley Banfield, Jenna Pearson, Chi Zhang, Ohad Zivan
Our 2023 Sponsors: NASA TOPS and Google DeepMind
Tutorial Objectives#
In the previous days, you learned about the El Niño–Southern Oscillation (ENSO), and have explored how satellite data can be employed to track this phenomenon during the instrumental period. In this tutorial, you will explore how oxygen isotopes of corals can record changes in temperature associated with the phase of ENSO even further back in time.
By the end of this tutorial you will be able to:
Understand the types of marine proxies that are used to reconstruct past climate
Create a stacked plot and warming stripe to visualize ENSO temperature reconstructions
An Overview of Isotopes in Paleoclimate#
In this tutorial, and many of the remaining tutorials in this day, you will be looking at data of hydrogen and oxygen isotopes (δD and δ18O). As you learned in the video, isotopes are forms of the same element that contain the same numbers of protons but different numbers of neutrons. The two oxygen isotopes that are most commonly used in paleoclimate are oxygen 16 (16O), which is the which is the “lighter” oxygen isotope, and oxygen 18 (16O), which is the “heavier” oxygen isotope. The two hydrogen isotopes that are most commonly used in paleoclimate are hydrogen (H), which is the “lighter” oxygen isotope, and deuterium (D), which is the “heavier” oxygen isotope.
Credit: NASA Climate Science Investigations
Credit: NASA Climate Science Investigations
Changes in the ratio of the heavy to light isotope can reflect changes in different climate variables, depending on geographic location and the material being measured. The ratio represented in delta notation (δ) and in units of per mille (‰), and is calculated using the equation below (the same applies to the ratio of the heavy and light hydrogen isotopes):
The terminology for discussing δ18O and δD can be a bit confusing and there are multiple ways to reference the same trends in the data. The most common terms used to describe isotopic compositions are “depleted” and “enriched”. These terms refer to the relative amout of the heavy isotopes. Therefore, a “more depleted” isotopic value is more depleted in the heavy isotope (i.e., there is less of the heavy isotope), whereas a “more enriched” isotopic value is more enriched in the heavy isotope (i.e., there is more of the heavy isotope). Other terms that are sometimes used to describe whether isotopes are depleted or enriched are “more negative” or “more positive”. Isotopic values can be both positive and negative, so using “more negative” and “more positive” can be a bit confusing. For example, if we have isotopic values are of -15‰ and -9‰, the value of -9‰ is “more enriched” (i.e., has more of the heavy isotope) or “more positive” (i.e., is closer to zero and positive values) than -15‰. Finally, the terms “smaller” or “larger” isotopic values can also be used to reference isotopes.
Additional information about the use of isotopes in paleoclimate can be found here.
Setup#
# installations ( uncomment and run this cell ONLY when using google colab or kaggle )
# !pip install cartopy
# !pip install pyleoclim
# imports
import pandas as pd
import numpy as np
import pooch
import os
import tempfile
import cartopy
import pyleoclim as pyleo
import matplotlib.pyplot as plt
import cartopy
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from matplotlib import patches
# @title Helper functions
def pooch_load(filelocation=None, filename=None, processor=None):
shared_location = "/home/jovyan/shared/Data/tutorials/W1D4_Paleoclimate" # this is different for each day
user_temp_cache = tempfile.gettempdir()
if os.path.exists(os.path.join(shared_location, filename)):
file = os.path.join(shared_location, filename)
else:
file = pooch.retrieve(
filelocation,
known_hash=None,
fname=os.path.join(user_temp_cache, filename),
processor=processor,
)
return file
# @title Video 1: Ocean Climate Proxies
from ipywidgets import widgets
from IPython.display import YouTubeVideo
from IPython.display import IFrame
from IPython.display import display
class PlayVideo(IFrame):
def __init__(self, id, source, page=1, width=400, height=300, **kwargs):
self.id = id
if source == 'Bilibili':
src = f'https://player.bilibili.com/player.html?bvid={id}&page={page}'
elif source == 'Osf':
src = f'https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render'
super(PlayVideo, self).__init__(src, width, height, **kwargs)
def display_videos(video_ids, W=400, H=300, fs=1):
tab_contents = []
for i, video_id in enumerate(video_ids):
out = widgets.Output()
with out:
if video_ids[i][0] == 'Youtube':
video = YouTubeVideo(id=video_ids[i][1], width=W,
height=H, fs=fs, rel=0)
print(f'Video available at https://youtube.com/watch?v={video.id}')
else:
video = PlayVideo(id=video_ids[i][1], source=video_ids[i][0], width=W,
height=H, fs=fs, autoplay=False)
if video_ids[i][0] == 'Bilibili':
print(f'Video available at https://www.bilibili.com/video/{video.id}')
elif video_ids[i][0] == 'Osf':
print(f'Video available at https://osf.io/{video.id}')
display(video)
tab_contents.append(out)
return tab_contents
video_ids = [('Youtube', 'VChIvgdwZbQ'), ('Bilibili', 'BV1cm4y1E7RF')]
tab_contents = display_videos(video_ids, W=730, H=410)
tabs = widgets.Tab()
tabs.children = tab_contents
for i in range(len(tab_contents)):
tabs.set_title(i, video_ids[i][0])
display(tabs)
Section 2: Plot the Data Using Multiseries#
We will utilize the built in features of a multiseries object to plot our coral proxy data side by side. To create a pyleo.MultipleSeries
, we first create a list with our pyleo.Series
objects and then pass this into a pyleo.MultipleSeries
.
# combine into a list
nino_comparison = [palmyra_stnd, line_stnd]
# create multiseries
nino = pyleo.MultipleSeries(nino_comparison, name="El Nino Comparison")
/tmp/ipykernel_389575/1462837970.py:2: DeprecationWarning: `name` is a deprecated property, which will be removed in future releases. Please use `label` instead.
nino = pyleo.MultipleSeries(nino_comparison, name="El Nino Comparison")
# plot the time series of both datasets
fig, ax = nino.stackplot(time_unit="year", xlim=[1960, 2000], colors=["b", "g"])
Questions 2: Climate Connection#
Recall that as SST becomes colder, δ18O becomes more positive, and vice versa. Compare the figure below of the ONI to the time series of coral δ18O you plotted above and answer the questions below.
Credit: UCAR
Do the ENSO events recorded by the ONI agree with the coral data?
What are some considerations you can think of when comparing proxies such as this to the ONI?
Section 1.3: Make Warming Stripes Plot#
We can also make a warming stripe for this data Series
using the .stripes()
method, where darker red stripes indicate a warmer eastern Pacific and possibly an El Niño phase, and darker blue stripes indicate a cooler eastern Pacific and possibly La Niña phase. Can you see the trend present in the data?
fig, ax = nino.stripes(
ref_period=(1960, 1990), time_unit="year", show_xaxis=True, cmap="RdBu"
)
Summary#
In this tutorial, we discovered how oxygen isotopes within corals serve as a valuable archive, recording changes in temperature associated with ENSO phases.
During our explorations,
We ventured into the study of proxy-based coral δ18O records, gaining insights into the rich historical climate data encapsulated within these marine structures.
We compared these records to noted ENSO events over a few decades, offering us a glimpse into the dynamic nature of this influential climate phenomenon.
Resources#
Code for this tutorial is based on existing notebooks from LinkedEarth that uses the Pyleoclim
package to assess variability in the El Nino.
Data from the following sources are used in this tutorial:
Cobb,K., et al., Highly Variable El Niño–Southern Oscillation Throughout the Holocene.Science 339, 67-70(2013). https://doi.org/10.1126/science.1228246 accessible here
Cobb, K., Charles, C., Cheng, H. et al. El Niño/Southern Oscillation and tropical Pacific climate during the last millennium. Nature 424, 271–276 (2003). https://doi.org/10.1038/nature01779 accessible here