Sideways maneuvers enable narrow aperture negotiation by free-flying hummingbirds
Data files
Oct 19, 2023 version files 161.36 MB
-
apertures.zip
-
README.md
Abstract
Many birds routinely fly fast through dense vegetation characterized by variably sized structures and voids. Successfully negotiating these cluttered environments requires maneuvering through narrow constrictions between obstacles. We show that Anna's Hummingbirds (Calypte anna) can negotiate apertures less than one wingspan in diameter using a novel sideways maneuver that incorporates continuous, bilaterally asymmetric wing motions. Crucially, this maneuver allows hummingbirds to continue flapping as they negotiate the constriction. Even smaller openings are negotiated via a faster ballistic trajectory characterized by tucked and thus non-flapping wings, which reduces force production and increases descent rate relative to the asymmetric technique. Hummingbirds progressively shift to the swept method as they perform hundreds of consecutive transits, suggesting increased locomotor performance with task familiarity. Initial use of the slower asymmetric transit technique may allow birds to better assess upcoming obstacles and voids, thereby reducing the likelihood of subsequent collisions. Repeated disruptions of normal wing kinematics as birds negotiate tight apertures may determine the limits of flight performance in structurally complex environments. These strategies for aperture transit and associated flight trajectories can inform designs and algorithms for small aerial vehicles flying within cluttered environments.
README: Sideways maneuvers enable narrow aperture negotiation by free-flying hummingbirds
https://doi.org/10.5061/dryad.41ns1rnmd
This dataset consists of trial-level data spreadsheets for each aperture transit and analysis scripts to reproduce the statistical analyses, results, and figures presented in the primary article.
Description of the data and file structure
The root directory of the dataset contains four folders.
- analysis_scripts: contains scripts for reproducing the figures and statistical results in the manuscript (see Code/Software for details).
- apertures_data
Description_of_Data_columns.pdf
: a description of the data columns inall_data_for_analysis.csv
.all_data_for_analysis.csv
: raw data table containing the experimental conditions, metadata, and performance metrics of each transit.all_data_for_analysis_with_PCA.csv
: same asall_data_for_analysis.csv
, but with additional columns for the first 10 principal components of the wing kinematics, and transit-averaged leading and trailing wing angles and stroke amplitudes.bird_wing_data
: contains a raw data file for each transit with a row for each video frame and columns for: VideoFrameNumber, BillTipTrackedX, BillTipTrackedY, BillTipSmoothedX, BillTipSmoothedY, TailRelativeToBillTipTrackedX, TailRelativeToBillTipTrackedY, TailRelativeToBillTipSmoothedX, TailRelativeToBillTipSmoothedY, LeftWingRelativeToBillTipTrackedX, LeftWingRelativeToBillTipTrackedY, RightWingRelativeToBillTipTrackedX, RightWingRelativeToBillTipTrackedY, BirdInAperturebird_wing_angle_data_processed
: contains the same data as in bird_wing_data, but with additional columns for: LeftWingAngle RightWingAngle, LeftWingOffsetAngle, LeftWingAmplitudeSignal, LeftWingAmplitude, RightWingOffsetAngle, RightWingAmplitudeSignal, RightWingAmplitude, LeadingWingAngle, TrailingWingAngle, LeadingWingOffsetAngle, TrailingWingOffsetAngle, LeadingWingAmplitudeSignal, TrailingWingAmplitudeSignal, LeadingWingAmplitude, TrailingWingAmplitudebird_wing_angle_data_plots
: contains plots for visualizing the wing angle trajectories and verifying the estimated offset angle.filed_or_missed_trial_data.txt
: data table for missed trial analyses containing BirdID, ExperienceNumber, and whether the trial was filmed or not.hummingbird_mass_data.xlsx
: a record of each hummingbird's mass over the transit experiments.
- figures: empty directory where output of figures for the manuscript will be saved.
- extra_figures: directory containing extra figures output by the statistical analyses scripts.
Code/Software
Aperture Data Analysis
The analysis_scripts
folder contains scripts for analyzing aperture transit data.
Files
analyze_aperture_data.R
: This script calls the other scripts that compute the statistical results in the manuscript and contains a description of theAPERTURES
data frame.required_packages.R
: This script installs the required packages for the analysis.missed_trial_rate_analysis.R
: This script performs an analysis of the rate at which transits were recorded or missed.waiting_time_before_transit_analysis.R
: This script performs an analysis of the duration birds spent on one side of the enclosure before transiting through the aperture.initialize_aperture_data.R
: This script loads the aperture dataset fromall_data_for_analysis.csv
and defines some helper functions.decompose_trajectories_into_offset_and_amplitude.R
: This script calculates wing angle trajectories and decomposes them into an offset (angle about which flapping occurs) and amplitude. This script is only called if the directorybird_wing_angle_data_processed
, which contains offset and amplitude wing kinematics for each trial, does not exist.perform_wing_PCA.R
: This script loads wing angle data, performs a PCA to extract modes of wing angle variation across trials, and creates the APERTURES data frame. This script is only called if the fileall_data_for_analysis_with_PCA.csv
orrealculate <- TRUE
inanalyze_aperture_data.R
, otherwise, it is skipped and data are loaded fromall_data_for_analysis_with_PCA.csv.
supp_figure_1.R
: This script generates supplementary figure 1.figure_3.R
: This script generates figure 3.
performance_vs_transit_strategy_analysis.R
: This script analyzes the relationship between transit technique and performance after accounting for experimental variables.behavior_response_to_apertures_and_experience_analysis.R
: This script analyzes how wing kinematics during transit relate to aperture height, width, and cumulative experience number.figure_6.R
: This script generates figure 6.wing_impacts_analysis.R
: This script performs an analysis of wing contacts with the aperture during transit.bird_differences_post_hoc_analyses.R
: This script performs a post-hoc analysis comparing the birds to one another.handedness_analysis.R
: This script performs an analysis of bird handedness.first_set_vs_last_set_analysis.R
: This script performs an analysis of the first set vs last set of 16 transits.code_for_figures_4_5.nb
: This Mathematica notebook contains code for generating figures 4 and 5.shoulder_assumption_error_analysis
: This folder contains the data and a jupyter notebook for analyzing the effect of assuming the shoulder is fixed relative to the bill tip.shoulder_assumption_error_analysis.ipynb
: This jupyter notebook contains code for analyzing the effect of assuming the shoulder is fixed relative to the bill tip.image*.png
: Images from the bottom camera used in the analysis.shoulder_assumption_labels.csv
: Data table containing annotated positions of the true and assumed shoulder positions, bill, and wing tip positions.shoulder_assumption_error_analysis.png
: Output figure showing results of the shoulder assumption error analysis.
Usage
To run the analysis, set the base_dir
variable in analyze_aperture_data.R
to the path of the apertures root data folder (the folder containing analysis_scripts
, apertures_data
, etc. directories) on your machine, and run the script. The results will be output to the figures
and extra_figures
folders.
Methods
Please see the primary article (Badger et al., 2023; doi:10.1242/jeb.245643) for methods.