Fish Run
Every adult salmon and steelhead that comes up the Columbia passes a counting window at Bonneville Dam, and again at each dam above it. Fish Run takes those daily counts, along with PIT-tag detections of individual fish, and animates an estimate of where the run is on any given day.
What it shows
The main view is the river system with the fish moving through it. Pick a species and a year and watch the run build at Bonneville, spread up the Columbia and Snake, and thin out as fish turn into tributaries.
Each year also gets a report card: how it ranks against every other year on record for that species, for the whole system, for the run above each dam, and for each river. The current year uses the season forecast until the counts come in.
Beyond the mainstem
The Willamette and the Cowlitz have their own counts, at Willamette Falls and at the Cowlitz Barrier Dam, so they are modeled the same way as the Columbia: an approach reach from the ocean and a reach above at tributary speed.
The data is rebuilt from the source counts each season. The page itself is static and runs on Cloud Run.