Data and code from: Keeping pace: Migrating sea lampreys adjust swim speed in response to shifting water velocity to maintain a constant ground speed
Data files
Mar 05, 2026 version files 3.06 MB
-
code.zip
13.65 KB
-
data.zip
2.39 MB
-
README.html
638.66 KB
-
README.md
11.39 KB
Abstract
Upstream migrating fish must balance energetic costs with environmental and ecological constraints. Theoretical models predict that fish can conserve energy by adjusting swim speed in response to changing water velocity, but detailed field tests of these predictions remain rare. We used fine-scale acoustic telemetry and hydrodynamic modeling to track adult sea lamprey (Petromyzon marinus) migrating through a river and evaluated how movement speeds varied with environmental conditions and individual traits. Swim speed increased with faster water velocities, while ground speed remained constant, supporting the hypothesis that lampreys regulate swim effort to maintain a fixed migration pace. The average ground speed aligned with a predicted optimum of ~1 body length per second. Both swim and ground speeds declined slightly in deeper water, suggesting a trade-off between movement efficiency and predator avoidance. These findings provide field-based support for a theoretical model of energy optimization and underscore how migratory fish adaptively adjust behavior to local hydrodynamic conditions. Our results highlight the value of using high-resolution tracking and environmental modeling to reveal behavioral tactics that underlie efficient migration strategies.
This readme file was generated on 2025-10-03 by K. Griffin
- Title of Dataset: Data Archive for Keeping pace: migrating sea lampreys adjust swim speed in response to shifting water velocity to maintain a constant ground speed
Author Information
Name: Kandace R. Griffin
ORCID: 0000-0003-3325-3779
Institution: Michigan State University
Email 1: griff665@msu.edu
Email 2: kandacegriffin@gmail.com
Principle Investigator Information
Name: C. Michael Wagner
ORCID: 0000-0003-1929-1509
Institution: Michigan State University
Email: mwagner@msu.edu
- Date of data collection: 21 May - 11 June 2021
- Geographic location of data collection: Whitehall, Michigan, USA
- Information about funding sources that supported the collection of the data: Great Lakes Fishery Commission:
2018_WAG_54070and2013_BIN_44024Great Lakes Restoration Initiative Grant ID#GL-00E23010
SHARING/ACCESS INFORMATION
- Licenses/restrictions placed on the data: n/a
- Links to other publicly accessible locations of the data: n/a
DATA & FILE OVERVIEW
- README.md
- README.html
- data.zip
BankPoints.csvBathymetryDEM.tifCFD_case6.csvPositions.csvReceivers.csvReferenceTags.csv
- code.zip
function_LME_combo.R1_gs_lme.R1_ss_lme.R2_plots.R
DATA-SPECIFIC INFORMATION
Note: all UTM data are presented with (NAD83) Great Lakes and St
Lawrence Albers projection (relevant projection string:
“+proj=aea +lat_0=45.568977 +lon_0=-83.248627 +lat_1=42.122774 +lat_2=49.01518 +x_0=1000000 +y_0=1000000 +datum=NAD83 +units=m +no_defs”)
unless otherwise noted.
data / BankPoints.csv
- Description: A comma-delimited file that provides location information for the river banks
- Format: .csv
- Number of variables: 4
- Number of cases/rows: 350
- Variables
Name: project-specific unique identifier for each river bankbank_easting: UTM (x) of river bank location, not in an R spatial format.bank_northing: UTM (y) of river bank location, not in an R spatial format.new_order: bank-specific sequential order of locations
data / BathymetryDEM.tif
- Description: A GeoTIFF raster containing spatially explicit bathymetry (riverbed elevation) data for the study area. Bathymetry values represent riverbed elevation in meters relative to the NAVD88 vertical datum, derived from sonar surveys and processed with LIDAR surveys to generate a digital elevation model (DEM).
- Format: .tif
- Units: meters relative to NAVD88
- Coordinate Reference System: EPSG:3175 - NAD83 / UTM Great Lakes and St Lawrence Albers projection (relevant projection string: “
+proj=aea +lat_0=45.568977 +lon_0=-83.248627 +lat_1=42.122774 +lat_2=49.01518 +x_0=1000000 +y_0=1000000 +datum=NAD83 +units=m +no_defs”) - Number of rows: 327
- Number of columns: 571
- Number of cells: 186717
- Resolution: 1 x 1
- Extent: 751651.3, 752222.3, 765969.5, 766296.5
data / CFD_case6.csv
- Description: Fine (~0.5 m) resolution computational fluid dynamics model of the White River at discharge value of 19.54 m3/s at 10.8 cm above river bottom (assigned fish elevation).
- Format: .csv
- Number of variables: 7
- Number of cases/rows: 26293
- Variables
easting: UTM (x) of water location, not in an R spatial formatnorthing: UTM (y) of water location, not in an R spatial formatbath_z: bathymetry (riverbed) elevation in m, relative to NAVD88 vertical datumfish_z: assigned fish elevation in m, relative to NAVD88 vertical datumU: water velocity in the x direction in m/sV: water velocity in the y direction in m/sW: water velocity in the z direction in m/s
data / Positions.csv
- Description: A comma-delimited file that provides individual fish position. Each position has associated time, water velocity, temperature, and depth. Each individual fish has associated demographic information. Steps along the fish path were calculated in forward-looking direction, and angles between fish and water along the step have been calculated.
- Format: .csv
- Number of variables: 37
- Number of cases/rows: 4357
- Variables
tag_id: project-specific unique identifier for each fish associated with acoustic telemetry transmitter IDdetection_time: estimated time of each unique position in UTCdetection_longitude: estimated longitude coordinate of fish position, not in an R spatial format, expressed in decimal degrees, referenced to the WGS84 geographic coordinate system (EPSG:4326)detection_latitude: estimated latitude coordinate of fish position, not in an R spatial format, expressed in decimal degrees, referenced to the WGS84 geographic coordinate system (EPSG:4326)depth_validated: estimated fish depth below water surface in m, calculated from slope and intercept values derived from pressure validation protocol prior to implanting tags into fishdetection_easting: UTM (x) of fish position, not in an R spatial formatdetection_northing: UTM (y) of fish position, not in an R spatial formatdiff_time: time between forward-looking subsequent fish positions, in secondsstep_length: Euclidean distance between forward-looking subsequent fish positions, in metersground_speed_m_per_s: ground speed of the step; expressed in m/s; calculated as Euclidean distance (m) / time (s)ground_speed_bl_per_s: ground speed of the step; expressed in body lengths/s; calculated asstep_length(m)*100 / (diff_time(s)*length(cm))U: water velocity of the fish position in the x direction, in m/sV: water velocity of the fish position in the y direction, in m/ssex: sex of the fish, M = male, F = femaleweight: measured weight of the fish, in glength: measured length of the fish, in cmsurface_area_cm2: estimated surface area of the fish, in cm2, calculated as 10.78*(weight0.644)water_temperature: water temperature at time of fish position, in °Csite_discharge_cms: estimated discharge at study site calculated from relationship between USGS gauge and ACDP surveys (ratio = 1.29 site/gauge), in m3/sgs_x: ground speed of the fish forward-looking step in the x direction, in m/sgs_y: ground speed of the fish forward-looking step in the y direction, in m/sU_ave: average ofUvalues at forward-looking subsequent fish positions, used to estimate the water velocity in the x direction over the step, in m/sV_ave: average ofVvalues at forward-looking subsequent fish positions, used to estimate the water velocity in the y direction over the step, in m/svel_mag_bottom_2d_ms: velocity magnitude in 2D (x and y direction only), in m/svel_mag_bottom_2d_bls: velocity magnitude in 2D (x and y direction only), in body lengths/sU_ave_bl: average ofUvalues at forward-looking subsequent fish positions, used to estimate the water velocity in the x direction over the step, in body lengths/sV_ave_bl: average ofVvalues at forward-looking subsequent fish positions, used to estimate the water velocity in the y direction over the step, in body lengths/sss_x: swim speed of the fish step in the x direction, calculated asgs_x-U_ave, in m/sss_y: swim speed of the fish step in the y direction, calculated asgs_y-V_ave, in m/sswim_speed_m_per_s: 2D swim speed of the fish step, calculated as sqrt(ss_x^2 +ss_y^2), in m/sswim_speed_bl_per_s: 2D swim speed of the fish step, calculated as sqrt(ss_x2 +ss_y2) * 100 /length, in body lengths/swater_depth_mean: average water depth of subsequent forward-looking fish positions, used to estimate the mean depth over the step, in mfish_angle: fish movement angle of the step, calculated as atan2(gs_y,gs_x), in radianswater_angle: water flow direction over the step, calculated as atan2(V_ave,U_ave), in radianswater_angle_rev: reversing the water flow where 0 represents perfect alignment between water and fish movement, calculated aswater_angle+ pi, in radiansangle_diff_rad: angular difference of water and fish direction, normalized to [-pi, pi], in radiansangle_diff_deg: angular difference of water and fish direction, in degrees
data / Receivers.csv
- Description: A comma-delimited file that provides acoustic telemetry receiver locations. Each receiver has associated location and time of deployment, serial number, and unique transmitter id.
- Format: .csv
- Number of variables: 8
- Number of cases/rows: 21
- Variables
receiver_id: project-specific unique identifier for each receiverdeploy_lat: measured latitude coordinate of receiver at deployment, not in an R spatial format, expressed in decimal degrees, referenced to the WGS84 geographic coordinate system (EPSG:4326)deploy_lon: measured latitude coordinate of receiver at deployment, not in an R spatial format, expressed in decimal degrees, referenced to the WGS84 geographic coordinate system (EPSG:4326)deploy_gps_time: datetime of receiver deployment, format: YYYY-MM-DD hh:mm:ss, in UTCdeploy_easting: UTM (x) of receiver at deployment, not in an R spatial formatdeploy_northing: UTM (x) of receiver at deployment, not in an R spatial formatserial_no: unique identifier for each receivertransmitter_id: unique identifier associated with the acoustic telemetry transmitter within or co-located with each receiver
data / ReferenceTags.csv
- Description: A comma-delimited file that provides locations of reference tests.
- Format: .csv
- Number of variables: 5
- Number of cases/rows: 18
- Variables
receiver_id: project-specific unique identifier for each reference testref_easting: UTM (x) of reference tag for each test, not in an R spatial formatref_northing: UTM (x) of reference tag for each test, not in an R spatial formatref_lat: measured latitude coordinate of reference tag for each test, not in an R spatial format, expressed in decimal degrees, referenced to the WGS84 geographic coordinate system (EPSG:4326)ref_lon: measured latitude coordinate of reference tag for each test, not in an R spatial format, expressed in decimal degrees, referenced to the WGS84 geographic coordinate system (EPSG:4326)
code / function_LME_combo.R
- Description: An R function to run multiple linear mixed effects models for all possible combinations of listed fixed effects. Returns a named list where each element contains the attempted fixed effects and either the fitted lme object plus AIC, BIC, logLik, and summary, or an error message if that fit failed.
- Format: .R
code / 1_gs_lme.R
- Description: An R script to fit multiple linear mixed effects models for the ground speed dependent variable. Will return a table with model estimates with ∆AIC < 2.
- Format: .R
code / 1_ss_lme.R
- Description: An R script to fit multiple linear mixed effects models for the swim speed dependent variable. Will return a table with model estimates with ∆AIC < 2.
- Format: .R
code / 2_plots.R
- Description: An R script to produce plots presented in the manuscript.
- Format: .R
