Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

A coccolithophore, a type of phytoplankton. Art credit: Kristen Krumhardt


Overview

Phytoplankton are single-celled, photosynthesizing organisms found throughout the global ocean. Though there are many different species of phytoplankton, CESM-MARBL groups them into four categories called functional types: small phytoplankton, diatoms (which build silica-based shells), coccolithophores (which build calcium carbonate-based shells), and diazotrophs (which fix nitrogen). In this notebook, we evaluate the biomass and total production of these phytoplankton in different areas, as modeled by CESM-MARBL.

  1. General setup

  2. Subsetting

  3. Taking a quick look

  4. Processing - long-term mean

  5. Mapping biomass at different depths

  6. Mapping productivity

  7. Compare NPP to satellite observations

Prerequisites

ConceptsImportanceNotes
MatplotlibNecessary
Intro to CartopyNecessary
Dask CookbookHelpful
Intro to XarrayHelpful
  • Time to learn: 30 min


Imports

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 7
      3 import numpy as np
      4 import matplotlib.pyplot as plt
      5 import cartopy
      6 import cartopy.crs as ccrs
----> 7 import pop_tools
      8 from dask.distributed import LocalCluster
      9 import s3fs
     10 from datetime import datetime

File ~/micromamba/envs/ocean-bgc-cookbook-dev/lib/python3.14/site-packages/pop_tools/__init__.py:4
      1 """Top-level module for pop_tools"""
----> 4 from pkg_resources import DistributionNotFound, get_distribution
      6 from .calc import cfc11sol, cfc12sol
      7 from .datasets import DATASETS

ModuleNotFoundError: No module named 'pkg_resources'

General setup (see intro notebooks for explanations)

Connect to cluster

Bring in POP grid utilities

Load the data

Subsetting

Taking a quick look

Let’s plot the biomass of coccolithophores as a first look. These plots show snapshots six months apart - note the difference between seasons! Also take a look at the increased concentrations of coccolithophores in the Southern Ocean during Southern-hemisphere summer; the increased concentrations of calcite caused by these plankton building calcite shells leads to this region being known as the Great Calcite Belt.

Processing - long-term mean

Pull in the function we defined in the nutrients notebook...

Take the long-term mean of our data set. We process monthly to annual with our custom function, then use xarray’s built-in .mean() function to process from annual data to a single mean over time, since each year is the same length.

Mapping biomass at different depths

Note the different colorbar scales on each of these maps!

Phytoplankton biomass at the surface

Phytoplankton biomass at 100m

Mapping productivity

Globally integrated NPP

Comparing to NPP satellite data

We load in a satellite-derived estimate of NPP, calculated with the VGPM algorithm (Behrenfeld and Falkowski, 1997). This data can be found at this website; we’ve re-uploaded a portion of it for easier access. It was originally provided in the format of HDF4 files; we have converted these to NetCDF files to make reading in data from the cloud more straightforward, but some additional processing is still required to format the time and space coordinates correctly before we can work with the data.

Let’s try reading in one of these files to see what the format looks like.

Now we have a time dimension! Let’s try plotting the data to see what else we need to fix.

There are a few things going on here. The data is upside down from a more common map projection, and the spatial coordinates are a generic x and y rather than latitude and longitude. The color scale also doesn’t look right because areas like land that should be masked out are showing up as a low negative value, throwing off the positive values we actually want to see. We also have an extra band coordinate in the dataset - probably a holdover from the satellite data this product was generated from, but no longer giving us useful information. In the next block, we fix these problems.

Preliminary processing

Making a comparison map

Now let’s process in time. Use the monthly to annual function that we made before.

And close the Dask cluster we spun up at the beginning.


Summary

You’ve learned how to take a look at a few quantities related to phytoplankton in CESM, as well as processing an observation-derived dataset in a different format.

References
  1. Behrenfeld, M. J., & Falkowski, P. G. (1997). Photosynthetic rates derived from satellite‐based chlorophyll concentration. Limnology and Oceanography, 42(1), 1–20. 10.4319/lo.1997.42.1.0001
  2. (2013). In Ocean Biogeochemical Dynamics (pp. 102–172). Princeton University Press. 10.2307/j.ctt3fgxqx.7