4.3 Zooplankton
Zooplankton are the animal component of plankton, ranging from microscopic protozoans to large jellyfish. They link primary producers to higher trophic levels and play key roles in nutrient cycling.
Major Groups
Copepods
Most abundant metazoans on Earth. Key link in marine food webs. Calanus, Acartia.
Krill
Euphausiids. Swarm in millions. Critical food for whales, penguins, fish.
Jellyfish
Cnidarians. Increasing due to overfishing and warming. Bloom dynamics.
Protozoans
Foraminifera, radiolarians, ciliates. Important in microbial loop. Shells form sediments.
Diel Vertical Migration
The largest animal migration on Earth occurs daily in the ocean:
Zooplankton descend 100-1000m during day (predator avoidance) and ascend at night (feeding in surface waters)
Night
Surface feeding
↕ 100-1000m
Migration range
Day
Deep refuge
Grazing Impact
\( G = g_{max} \frac{P^n}{K^n + P^n} Z \)
Holling Type III grazing: gmax=max rate, K=half-saturation, P=phytoplankton, Z=zooplankton
Zooplankton can consume 10-100% of daily phytoplankton production, controlling bloom dynamics.
Python: DVM Model
#!/usr/bin/env python3
"""zooplankton.py - Diel vertical migration model"""
import numpy as np
import matplotlib.pyplot as plt
def dvm_depth(hour, z_day=400, z_night=50, transition_width=2):
"""
Model zooplankton depth during diel vertical migration
hour: time of day (0-24)
"""
# Sinusoidal migration pattern
# Day at depth, night at surface
phase = np.pi * (hour - 6) / 12 # sunrise at 6, sunset at 18
depth = (z_day + z_night) / 2 + (z_day - z_night) / 2 * np.cos(phase)
return depth
hours = np.linspace(0, 24, 100)
depth = dvm_depth(hours)
fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(hours, depth, 'b-', lw=2)
ax.fill_between(hours, depth, 500, alpha=0.3)
ax.set_xlabel('Hour of Day')
ax.set_ylabel('Depth (m)')
ax.set_title('Diel Vertical Migration')
ax.set_ylim(500, 0) # Inverted y-axis
ax.axvspan(6, 18, alpha=0.2, color='yellow', label='Daylight')
ax.set_xticks([0, 6, 12, 18, 24])
ax.set_xticklabels(['Midnight', 'Sunrise', 'Noon', 'Sunset', 'Midnight'])
ax.legend()