4.5 Marine Food Webs
Marine food webs describe the complex feeding relationships in ocean ecosystems. Energy flows from primary producers through multiple trophic levels, with only ~10% transferred at each step.
Trophic Levels
Level 1: Primary Producers
Phytoplankton, seaweeds. Convert sunlight to organic matter. Base of food web.
Level 2: Primary Consumers
Herbivorous zooplankton, filter feeders. Eat phytoplankton.
Level 3: Secondary Consumers
Small fish, squid. Predatory zooplankton. Eat primary consumers.
Level 4+: Higher Predators
Large fish, marine mammals, seabirds. Apex predators at top.
Ecological Efficiency
\( E = \frac{P_{n+1}}{P_n} \approx 0.10 \)
~10% rule: Only 10% of energy transfers to next trophic level
10,000 kg
Phytoplankton
1,000 kg
Zooplankton
100 kg
Small fish
The Microbial Loop
A parallel pathway that recycles dissolved organic matter:
DOM → Bacteria → Flagellates → Ciliates → Zooplankton
~50% of primary production flows through the microbial loop
Python: Food Web Model
#!/usr/bin/env python3
"""marine_food_webs.py - Simple NPZ model"""
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
def npz_model(y, t, params):
"""
Nutrient-Phytoplankton-Zooplankton model
"""
N, P, Z = y
mu_max, K_N, g_max, K_P, m_P, m_Z, gamma = params
# Phytoplankton growth (Monod kinetics)
mu = mu_max * N / (K_N + N)
# Grazing (Holling Type II)
g = g_max * P / (K_P + P)
dN = -mu * P + m_P * P + gamma * m_Z * Z
dP = mu * P - g * Z - m_P * P
dZ = (1 - gamma) * g * Z - m_Z * Z
return [dN, dP, dZ]
# Parameters
params = (1.0, 0.5, 0.5, 0.5, 0.1, 0.05, 0.3)
y0 = [5.0, 1.0, 0.5] # Initial: N, P, Z
t = np.linspace(0, 100, 1000)
sol = odeint(npz_model, y0, t, args=(params,))
plt.figure(figsize=(10, 6))
plt.plot(t, sol[:, 0], 'b-', label='Nutrients')
plt.plot(t, sol[:, 1], 'g-', label='Phytoplankton')
plt.plot(t, sol[:, 2], 'r-', label='Zooplankton')
plt.xlabel('Time'); plt.ylabel('Concentration')
plt.title('NPZ Model Dynamics')
plt.legend(); plt.grid(True, alpha=0.3)