DOI: 10.5061/dryad.41ns1rnmd
title: Sideways maneuvers enable narrow aperture negotiation by free-flying hummingbirds

description: 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. 
description: Please see the primary article (Badger et al., 2023;
 doi:10.1242/jeb.245643) for methods.
description: # Sideways maneuvers enable narrow aperture negotiation by free-flying
 hummingbirds
 [https://doi.org/10.5061/dryad.41ns1rnmd](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 in `all_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 as `all_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, BirdInAperture * `bird_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, TrailingWingAmplitude * `bird_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 the `APERTURES` 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 from `all_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 directory `bird_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 file `all_data_for_analysis_with_PCA.csv` or `realculate &lt;- TRUE` in `analyze_aperture_data.R`, otherwise, it is skipped and data are loaded from `all_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.