Data and code from: Effects of ceratotrichia diameter and packing density on chimaera pectoral fin kinematics
Data files
Aug 03, 2026 version files 12.18 GB
-
Artificial_Fin_Design.zip
10.27 MB
-
Kinematic_Analysis.zip
11.06 MB
-
Kinematic_Data_Collection.zip
12.12 GB
-
README.md
7.94 KB
-
Robot_Design_and_Verification.zip
42.01 MB
Abstract
Chimaeras – a group of cartilaginous fishes – swim using a distinctive locomotory mode, termed flapping flight. Dorsoventral oscillation of the flexible pectoral fins is driven by muscles at the base of the fin. This motion induces an undulatory wave which travels from the leading edge to the trailing edge of the fin. It is thought that this undulatory wave is passively induced, and hence, the kinematic waveform is largely influenced by the fin’s structure. Recent work focusing on bony fishes and models of their fins has shown that fin models with internal structure (fin rays) show different kinematic waveforms than models made of a single material, but our understanding of which structural parameters of fin rays are most influential on kinematics is still developing. Our goal was to understand the significance of internal structure for the swimming kinematics of chimaeras. We designed a physical modeling system based on the kinematic patterns of real chimaeras and examined artificial fins of varying fin ray diameter and packing density to investigate how internal anatomy influences pectoral fin tip amplitude, leading-edge curvature, and undulatory waves. As diameter and packing density increased, fin tip amplitude and leading-edge curvature decreased. Diameter had a much larger effect on fin tip amplitude than packing density over the tested ranges. Surprisingly, undulatory wave speed was greatest in the most flexible fin models rather than the stiffest. Empirical evidence and the mathematical equations stating that wave speed increases with stiffness run counter to this last result, suggesting our findings align with a more nuanced relationship between fin stiffness and wave kinematics described by a mathematical fluid flow model. Our work provides new insights into the anatomical parameters that could influence the evolution of chimaera flapping flight and pectoral fin locomotion more broadly and provides direction for possible biomimetic applications.
This repository contains the data and code used to design and analyze a fin-flapping robot that mimics the pectoral fin movement of the spotted ratfish, Hydrolagus colliei. We examined the kinematics of artificial fins containing fin rays that varied in diameter (0.3, 0.5, or 0.7 mm) and packing density (14, 30, or 44 strands).
IMPORTANT: The artificial fin naming convention differs between data in this repository and our manuscript. The original naming convention used in the data, "fishing line pound test - density", was changed when writing the manuscript for clarity to "fishing line diameter - density". 10 pound test corresponds to 0.3 mm, 30 pound test to 0.5 mm, and 50 pound test to 0.7 mm. For example, the 10-30 fin was renamed to 0.3-30.
Data and File Structure
The dataset has four top-level compressed folders that correspond to the four main Materials and Methods sections of our manuscript:
Artificial Fin Design/Robot Design and Verification/Kinematic Data Collection/Kinematic Analysis/
Artificial Fin Design/
Hydrolagus colliei (FMNH [catalog number]).jpeg: pectoral fin photographs of the five H. colliei specimens in this study.
Hco Fin.tps: 2D landmark file of the pectoral fins of each H. colliei specimen.
- LM=3: Three fixed landmark x, y coordinates in image pixels (anterior fin-muscle connection, fin tip, and posterior fin-muscle connection).
- CURVES=2: Two sliding semilandmark curves. The first curve, POINTS=10, outlines the leading edge, and the second curve, POINTS=15, outlines the trailing edge.
- IMAGE: The source photograph.
- ID: Arbitrary specimen identifier (0-4).
- SCALE: Image-calibration scale stored by the landmarking software tpsDig2.
Hco Muscle.TPS: 2D landmark file of the pectoral fin muscles of each H. colliei specimen.
- LM=2: Two fixed landmarks (anterior and posterior fin-muscle connection).
- CURVES=1: A sliding semilandmark curve, POINTS=15, outlining the muscle.
- IMAGE, ID, and SCALE have the same meanings as above.
TPS coordinate rows have no column headers and are ordered x, y.
Hco_Fin.R: Reads Hco Fin.tps, calculates the mean H. colliei pectoral fin shape, and writes HcoMoldCoords.csv.
Hco_Muscle.R: Reads Hco Muscle.TPS, calculates the mean H. colliei pectoral muscle shape, and writes HcoClampCoords.csv.
HcoMoldCoords.csv: Coordinates for the mean fin outline. Used for artificial fin mold design.
HcoClampCoords.csv: Coordinates for the mean muscle outline. Used for artificial fin coupler design.
HcoMoldCoords.csv and HcoClampCoords.csv have no header row. Columns are x, y, z coordinates. Rows are coordinate sets. Values are dimensionless, centered, and scaled shape coordinates produced by Procrustes superimposition. z is 0 because the source data are two-dimensional.
Robot Design and Verification/
Hco Flume (0 ips).mp4: Video of a live H. colliei individual swimming in a flume with no flow (ips = inches per second).
Hco Flume (0 ips).csv: Kinematic measurements of nine pectoral fin strokes from the video and summary values used to program the robot's motion. A stroke begins at an upper fin tip maximum, continues through the next minimum, and ends at the next maximum.
- Frame Rate [frames/s]
- Frame
- Description: Stroke maximum or minimum.
- Time [s]
- Body Pitch [degrees]: Angle between the snout-to-cloaca body axis and horizontal.
- Spine X and Spine Y [pixels]: Coordinates of the dorsal-spine base used as a body reference.
- Fin Tip X and Fin Tip Y [pixels]: Coordinates of the pectoral fin tip.
- Fin TipCor Y [pixels]: Fin tip vertical displacement corrected for body position and pitch.
- Fin Chord [pixels]: Fin chord measured at fin tip minima.
- Fin Pitch [degrees]: Uncorrected angle between the fin base and horizontal measured at fin tip minima.
- Fin PitchCor [degrees]: Fin pitch corrected for body pitch.
The summary rows report average stroke, downstroke, and upstroke periods [s]; average normalized fin tip peak-to-peak amplitude (dimensionless fin tip amplitude divided by fin chord); average fin chord [pixels]; and average fin pitch [degrees].
Fin Chord, Fin Pitch, and Fin PitchCor cells are empty on max rows because these variables were measured only at fin tip minima.
Motor_Control.ino: Arduino code used to control the robot's NEMA 17 and 5V stepper motors.
Kinematic Data Collection/
[camera] [fin or calibration].mp4: Videos of the artificial fins from all three camera perspectives. L is the top-left GoPro camera, M the middle iPhone, and R the bottom-right GoPro. Cal1 files are the camera calibration videos.
Fin names are as described above; the first number refers to fin ray diameter, the second to packing density (e.g., the "10-30" fin had ray diameters of 0.3 mm and 30 strands).
Kinematic Analysis/
[fin]_xyzpts.csv: The tracked 3D movement of the artificial fins filmed in the Kinematic Data Collection/[camera] [fin].MP4 videos. Each fin has 54 dots tracked in 3D through 10 strokes; hence, column names pt[dot #]_[axis]. Rows are video frames. Values are reconstructed coordinates in meters. NaN values are video frames that were not tracked. Direct inputs to Fin3D.m.
Fin3D.m: MATLAB code to select an artificial fin, calculate its kinematic parameters, and create a video of the fin.
aline.m: A MATLAB helper function that uses Rodrigues' rotation formula to align fins with standardized axes.
fcurve.m: A MATLAB helper function that fits a polynomial to a fin edge and calculates curvature.
Tracked Fin Example (10-14).mp4: An example video of the tracked and standardized 10-14 fin generated using Fin3D.m.
Kinematic Parameters.xlsx: Kinematic parameters calculated with Fin3D.m. Excel graphing was used to plot wave position through time and calculate wave speed: the slope in the plot for each fin. The workbook contains four worksheets (FTA, Positive Curvature, Negative Curvature, and Wave) which are also provided as separate csv files.
FTA.csv: Each row is one stroke (10 strokes for each of nine fins; 90 observations).
- Diameter [mm]: Fishing-line diameter.
- Density: Number of fishing-line strands embedded in the fin.
- Amplitude [cm]: Fin tip peak-to-peak amplitude after translation and axis alignment.
Positive Curvature.csv and Negative Curvature.csv: The mean leading-edge curvature profiles at fin tip maximum and minimum, respectively. Each artificial fin has a pair of columns:
- [fin] d [percent]: Position along the leading edge, normalized from the fin base (0%) to the fin tip (100%).
- [fin] K [mm⁻¹]: Leading-edge curvature at the paired position, averaged across the 10 strokes.
Wave.csv: The position of a trailing edge inflection point through time for the four fins that produced a coherent undulatory wave. 10-14 did so on both the upstroke and downstroke. 10-44, 30-14, and 30-30 only did so on the upstroke.
- t [frame]: Frame offset from the beginning of the wave interval.
- t [s]: Time from the beginning of the wave interval.
All other columns are inflection point positions in meters. The frame ranges in parentheses after the fins identify when each wave was present within the stroke. Some cells are empty because the wave intervals differ in length.
figure_6.R: Reads artificial fin coordinate CSV files and plots leading edge kinematic envelopes through the stroke.
figure_7.R: Reads FTA.csv and plots FTA against fin ray diameter and packing density.
figure_8.R: Reads Positive Curvature.csv and Negative Curvature.csv and plots leading edge curvature.
figure_9.R: Plots the timing and speed of the undulatory waves using the values in Wave.csv.
