DART
Retrieve daily fish passage counts and river conditions from Columbia River DART for ecological time-series analysis.
DART stands for Data Access in Real Time. Columbia Basin Research at the University of Washington provides access to fish passage and environmental records for the Columbia Basin. RainbowStats converts a selected station and measurement into a daily data series that can be charted, transformed, and used in statistical models.
Syntax
series=DART("station","variable")
| Argument | Description | Example |
|---|---|---|
station | DART project or station code, supplied as a quoted string. | "BON" |
variable | Fish category or environmental measurement, supplied as a quoted string. | "CHINOOK" or "TEMPERATURE" |
Returns: one daily data series, with observation dates and units. The two-argument command requests records from 2000 through the current date, subject to availability for the chosen station and variable. The current year is incomplete.
Use the uppercase station and variable codes shown below.
Station examples
| Code | Station | River |
|---|---|---|
BON | Bonneville Dam | Columbia River |
MCN | McNary Dam | Columbia River |
LWG | Lower Granite Dam | Snake River |
These are station examples, not a complete DART station directory. Available fish categories, environmental variables, and historical coverage differ by station.
Fish passage variables
Numeric fish passage series use fish/day. Categories reflect the source report; availability and counting definitions should be checked in DART metadata.
| Variable | Description |
|---|---|
CHINOOK | Chinook salmon passage |
JACK_CHINOOK | Jack Chinook passage |
STEELHEAD | Steelhead passage |
WILD_STEELHEAD | Wild steelhead passage |
SOCKEYE | Sockeye salmon passage |
COHO | Coho salmon passage |
JACK_COHO | Jack coho passage |
SHAD | American shad passage |
CHUM | Chum salmon passage |
PINK | Pink salmon passage |
LAMPREY | Combined lamprey count from the source report |
LAMPREY_DAY | Daytime lamprey count |
LAMPREY_NIGHT | Nighttime lamprey count |
LAMPREY_LPS | Lamprey passage-system count |
BULL_TROUT | Bull trout passage |
River and dam-operation variables
| Variable | Description | Units |
|---|---|---|
TEMPERATURE | Reported water temperature | Degrees Celsius (degC) |
OUTFLOW | Reported project outflow | Thousand cubic feet per second (kcfs) |
SPILL | Reported spill flow | kcfs |
SPILL_PERCENT | Reported spill percentage | Percent |
INFLOW | Reported project inflow | kcfs |
ELEVATION | Reported project pool elevation | Feet (ft) |
1 kcfs = 1,000 cubic feet per second. Consult DART metadata for measurement location, daily aggregation, and the elevation datum. Fish counts, temperature, flow, percentages, and elevation have different units; chart them separately or use an appropriate axis or transformation.
Examples
1. Chart Chinook passage at Bonneville
salmon=DART("BON","CHINOOK")
LINE_CHART(salmon)
2. Chart Bonneville water temperature
temp=DART("BON","TEMPERATURE")
LINE_CHART(temp)
3. Retrieve river-operation measurements
flow=DART("BON","OUTFLOW")
spill=DART("BON","SPILL")
spillpct=DART("BON","SPILL_PERCENT")
inflow=DART("BON","INFLOW")
elevation=DART("BON","ELEVATION")
LINE_CHART(flow,spill)
4. Compare passage at three dams
bon=DART("BON","CHINOOK")
mcn=DART("MCN","CHINOOK")
lwg=DART("LWG","CHINOOK")
LINE_CHART(bon,mcn,lwg)
The three locations have different run composition, migration timing, and geographic coverage. Same-day counts do not necessarily represent the same fish moving between dams.
5. Model passage with monthly seasonal controls
Place the dependent variable first in the list. This example models Chinook passage using temperature, outflow, spill, and monthly dummy variables.
salmon=DART("BON","CHINOOK")
temp=DART("BON","TEMPERATURE")
flow=DART("BON","OUTFLOW")
spill=DART("BON","SPILL")
hydro=LIST(salmon,temp,flow,spill)
hydro=ADD_MONTHLY_DUMMY_SERIES(hydro)
model=REGRESSION(hydro)
acf=EXTRACT(model,autocorrelation)
SLIDESHOW(model,acf)
6. Examine a fixed temperature split
In this list, column 1 is temperature; column 0 is the dependent variable. The model fits separate regressions at or below, and above, the supplied threshold.
salmon=DART("BON","CHINOOK")
temp=DART("BON","TEMPERATURE")
flow=DART("BON","OUTFLOW")
spill=DART("BON","SPILL")
hydro=LIST(salmon,temp,flow,spill)
hydro=ADD_MONTHLY_DUMMY_SERIES(hydro)
threshold=FIXED_THRESHOLD_REGRESSION(hydro,1,20)
summary=EXTRACT(threshold,model)
below=EXTRACT(threshold,below_model)
above=EXTRACT(threshold,above_model)
pooled=EXTRACT(threshold,pooled_model)
SLIDESHOW(summary,below,above,pooled)
The 20°C split is an illustrative modeling choice, not a threshold established by this command. Each regime has its own coefficients, so any improvement in fit applies to the full split model, not solely to the temperature slope.
Data handling and analysis notes
- Missing values are not zeros. Unavailable observations may be omitted. Do not replace them with zeros without a substantive reason.
- Reported adjustments can be negative. The fish-count parser preserves negative numeric values reported by the source. Inspect these before applying logarithms or imposing nonnegative-count assumptions.
- Align observations by date. Different variables may have different missing dates. Equal series lengths do not establish that their observations match.
- Daily frequency does not guarantee an unbroken calendar. For lagged models and autocorrelation tests, distinguish consecutive observations from consecutive calendar days. Treat gaps between migration seasons explicitly.
- Seasonality and serial dependence matter. Monthly controls can capture broad seasonal differences, but residual persistence may remain. Inspect residual autocorrelation and consider HAC inference or an appropriate dynamic model.
- Associations are not causal effects. River conditions, dam operations, run timing, and other influences may move together. A regression alone does not establish an operational effect on survival.
- Coverage varies. The request starts in 2000, but usable records need not begin on January 1 or cover every date. Source revisions can change historical observations.
Source and metadata
Data access is provided by Columbia River DART, Columbia Basin Research, University of Washington. Original monitoring agencies and counting programs are identified in the source metadata.
Command documentation checked October 20, 2026. Historical coverage and current-year availability depend on the station, variable, and source updates.