Data and code from: Body oscillations couple with wing flapping to reduce aerodynamic power in wild silkmoth flight
Data files
Jul 04, 2025 version files 182.87 KB
-
Data_Sikandar_et_al_2025.zip
168.74 KB
-
README.md
14.13 KB
Abstract
The data includes 3D kinematic recordings and wing and body morphometrics from 9 specimens across four silkmoth species during forward flight. The dataset enables investigation of how coupled wing and body movement affect aerodynamic forces and energy efficiency in silkmoth flight. It also supports phase relationships between body pitch and wing sweep that enhance lift and thrust while reducing power requirements. Details of each folder in the repository are as follows: Individual kinematics data (A. io: 4 wingstrokes; A. luna: 3 wingstrokes; A. polyphemus: 2 wingstrokes; H. euryalus: 4 wingstrokes) are stored in the folder 'Data_kinematics_individuals' and presented as Fourier fit coefficients in .mat files. Averaged representative kinematics data are stored in the folder 'Data_kinematics' and presented as Fourier fit coefficients in .mat files. Individual morphometrics data (A. io: 3 specimens; A. luna: 3 specimens; A. polyphemus: 2 specimens; H. euryalus: 1 specimen) are stored in the folder 'Data_morphometrics_individuals' and presented as .csv spreadsheets. Averaged representative morphometrics data are stored in the folder 'Data_morphometrics' and presented as .csv spreadsheets. Code for Figure 3 plots is included in the folder "Code_Plots_Figure_3" as MATLAB file 'main_plots_Figure_3.m'. Code for all other plots is included in the folder "Code_Plots_all_other" and can all be run from the MATLAB file 'main_analysis.m'. Before running this file, set the 'ind_i' parameter as 1, 2, 3 or 4 to select one of the four silkmoth species in the study.
Dataset DOI: https://doi.org/10.5061/dryad.280gb5n2g
Authors: Usama Bin Sikandar, Brett R. Aiello, Simon Sponberg
Journal: Journal of the Royal Society Interface (accepted, 2025)
Overview
This repository contains data and analysis code for the research paper "Body oscillations couple with wing flapping to reduce aerodynamic power in wild silkmoth flight" by authors Usama Bin Sikandar, Brett R. Aiello, and Simon Sponberg. This research paper has been accepted for publication in the Journal of the Royal Society Interface in 2025. It contains experimental kinematics and morphometrics data from four species of wild silkmoths, along with MATLAB code used to model, analyze, and visualize how body oscillations interact with wing flapping to reduce aerodynamic power.
Species Indexing (also used for ind_i variable across the entire code)
1: Automeris io (AI)
2: Actias luna (AL)
3: Antheraea polyphemus (AP)
4: Hyalophora euryalus (HE)
File and Folder Structure
Data_Sikandar_et_al_2025.zip
Data_kinematics_individuals/
Contains .mat files with individual wingstroke kinematic parameters
Files and Descriptions:
-
AI_01_01_5_FourierCoeffs_01.mat: A. io specimen ID 1, flight 1, wingstroke 1 -
AI_01_02_5_FourierCoeffs_01.mat: A. io specimen ID 1, flight 2, wingstroke 1 -
AI_31_01_5_FourierCoeffs_01.mat: A. io specimen ID 31, flight 1, wingstroke 1 -
AI_32_01_5_FourierCoeffs_01.mat: A. io specimen ID 32, flight 1, wingstroke 1 -
AL_20_01_5_FourierCoeffs_01.mat: A. luna specimen ID 20, flight 1, wingstroke 1 -
AL_22_01_5_FourierCoeffs_01.mat: A. luna specimen ID 22, flight 1, wingstroke 1 -
AL_23_01_5_FourierCoeffs_01.mat: A. luna specimen ID 23, flight 1, wingstroke 1 -
AP_01_04_5_FourierCoeffs_01.mat: A. polyphemus specimen ID 01, flight 4, wingstroke 1 -
AP_03_02_5_FourierCoeffs_01.mat: A. polyphemus specimen ID 03, flight 2, wingstroke 1 -
HE_03_01_5_FourierCoeffs_01.mat: H. euryalus specimen ID 03, flight 1, wingstroke 1 -
HE_03_01_5_FourierCoeffs_02.mat: H. euryalus specimen ID 03, flight 1, wingstroke 2 -
HE_03_03_5_FourierCoeffs_01.mat: H. euryalus specimen ID 03, flight 3, wingstroke 1 -
HE_03_03_5_FourierCoeffs_02.mat: H. euryalus specimen ID 03, flight 3, wingstroke 2
Variables in each file:
-
a_phi,b_phi: Wing sweep angle (φ) Fourier coefficients (radians) -
a_theta,b_theta: Wing deviation angle (θ) Fourier coefficients (radians) -
a_alpha,b_alpha: Wing pitch angle (α) Fourier coefficients (radians) -
a_chi,b_chi: Body pitch angle (χ) Fourier coefficients (radians) -
a_beta,b_beta: Stroke plane angle (β) Fourier coefficients (radians) -
a_u,b_u: Forward velocity Fourier coefficients (m/s) -
a_v,b_v: Lateral velocity Fourier coefficients (m/s) -
a_w,b_w: Vertical velocity Fourier coefficients (m/s) -
f: Wingbeat frequency (Hz) -
chi,beta,beta_roll: Mean body and stroke plane angles (radians)
Data_kinematics/
Contains .mat files of species-averaged wingstroke kinematics as Fourier coefficients.
Files:
-
AI_00_00_0_FourierCoeffs_01.mat: A. io representative species-averaged kinematics -
AL_00_00_0_FourierCoeffs_01.mat: A. luna representative species-averaged kinematics -
AP_00_00_0_FourierCoeffs_01.mat: A. polyphemus representative species-averaged kinematics -
HE_00_00_0_FourierCoeffs_01.mat: H. euryalus representative species-averaged kinematics
Variables in each file:
-
a_phi,b_phi: Wing sweep angle (φ) Fourier coefficients (radians) -
a_theta,b_theta: Wing deviation angle (θ) Fourier coefficients (radians) -
a_alpha,b_alpha: Wing pitch angle (α) Fourier coefficients (radians) -
a_chi,b_chi: Body pitch angle (χ) Fourier coefficients (radians) -
a_beta,b_beta: Stroke plane angle (β) Fourier coefficients (radians) -
a_u,b_u: Forward velocity Fourier coefficients (m/s) -
a_v,b_v: Lateral velocity Fourier coefficients (m/s) -
a_w,b_w: Vertical velocity Fourier coefficients (m/s) -
f: Wingbeat frequency (Hz) -
chi,beta,beta_roll: Mean body and stroke plane angles (radians)
Data_morphometrics_individuals/
.csv files with body and wing morphometrics for individual specimens.
Files:
-
AI_01_4_CW_BEoutput.csv: A. io specimen ID 1 -
AI_31_a_2020_05_13_CW_BEoutput.csv: A. io specimen ID 31 -
AI_32_a_2020_05_13_CW_BEoutput.csv: A. io specimen ID 32 -
AL_20_1_CW_BEoutput.csv: A. luna specimen ID 20 -
AL_22_1_CW_BEoutput.csv: A. luna specimen ID 22 -
AL_23_1_CW_BEoutput.csv: A. luna specimen ID 23 -
AP_01_1_CW_BEoutput.csv: A. polyphemus specimen ID 1 -
AP_03_1_CW_BEoutput.csv: A. polyphemus specimen ID 3 -
HE_03_CW_BEoutput.csv: H. euryalus specimen ID 3
Relevant parameter names in each column:
-
BandWmass: Total mass of body + wings (grams) -
bodyL: Body length (m) -
wingL: Wing length (m) -
mean_chord: Mean chord length (m) -
r_position: positions of wing strip centroids along the spanwise direction (m) -
stripL: length of each wing strip (m) -
MCL_strip: mean chord length of each strip (m) -
LE_pa: position of the center of the leading edge center of each strip (m) -
L1: distance between the body center of mass and the right wing hinge (m) -
hc_pa: position of the center of the half-chord position of each strip (m) -
wingarea: Wing area per wing (m²) -
r_2_r_ND: Nondimensional radius of the second moment of area -
wingmass: Wing mass per wing (g) -
qc_pa: position of the center of the quarter-chord position of each strip (m)
Data_morphometrics/
.csv files with averaged morphometrics per species.
Files:
-
AI_00_0_CW_BEoutput.csv: A. io species-averaged morphometrics -
AL_00_0_CW_BEoutput.csv: A. luna species-averaged morphometrics -
AP_00_0_CW_BEoutput.csv: A. polyphemus species-averaged morphometrics -
HE_00_0_CW_BEoutput.csv: H. euryalus species-averaged morphometrics
Relevant parameter names in each column:
-
BandWmass: Total mass of body + wings (grams) -
bodyL: Body length (m) -
wingL: Wing length (m) -
mean_chord: Mean chord length (m) -
r_position: positions of wing strip centroids along the spanwise direction (m) -
stripL: length of each wing strip (m) -
MCL_strip: mean chord length of each strip (m) -
LE_pa: position of the center of the leading edge center of each strip (m) -
L1: distance between the body center of mass and the right wing hinge (m) -
hc_pa: position of the center of the half-chord position of each strip (m) -
wingarea: Wing area per wing (m²) -
r_2_r_ND: Nondimensional radius of the second moment of area -
wingmass: Wing mass per wing (g) -
qc_pa: position of the center of the quarter-chord position of each strip (m)
Code_Plots_Figure_3/
Files:
main_plots_Figure_3.m: Generates plots for Figure 3 in the manuscript.
wingKinParamsBEM_tmvr_normd_SM_SpAvgd.xlsx
Description: Species-averaged data for modeling and plotting. These are averaged flight kinematic and morphometric parameters for each species.
-
Species: Species name (AI, AL, AP, HE) -
WS#: Wingstroke number -
mass: Total mass (body + wings) (grams) -
R: Wing length (m) -
r_2: Radius of second moment of area (normalized by wing length) -
c_mean: Mean wing chord (m) -
u_mean,u_amp: Forward velocity mean and amplitude (m/s) -
w_mean,w_amp: Vertical velocity mean and amplitude (m/s) -
chi mean,chi amp: Body pitch angle mean and amplitude (radians) -
beta mean,beta amp: Stroke plane angle mean and amplitude (radians) -
beta_roll: Stroke plane roll (tilt) angle (radians) -
phi_mean,phi_amp: Wing sweep angle: mean and amplitude (radians) -
alpha_mean,alpha_amp: Wing pitch (feathering) angle mean and amplitude (radians) -
theta_mean,theta_amp: Wing deviation angle mean and amplitude (radians)
Code_Plots_all_other/
Contains MATLAB scripts for aerodynamic modeling and all other figure generation.
Files and Descriptions:
-
main_analysis.m: Master script; runs complete analysis and generates all figures in the manuscript (except Figure 3) for selected species viaind_i = 1 to 4 -
BE_full_5.m: Core blade element model with aerodynamic + inertial force calculation -
run_models_all.m: Executes the model across species -
calcWingKinsMeanAmp_2.m: Computes mean and amplitude of kinematic waveforms -
drawDownstroke.m: Annotates plots with downstroke phases -
findDownstrokeEdges.m: Identifies time points of downstroke in cycle -
giveWingKinsTrimCSV.m: Converts trimmed kinematics to.csvformat -
normalizeVect.m: Normalizes vector magnitudes -
plotWithMinMaxBounds.m: Plots curves with min/max bounds -
plotWithTransparentCurves.m: Transparent curve plotting for error bands -
plot_all_wTrimRanges.m: Plots individuals with trim range annotations -
readFileNames.m: Utility to parse filenames from folders -
scaleSinusoid.m: Scales sinusoids to match fit params -
rescaleSinusoid.m: Rescales sinusoids to match fit params -
rescaleTime.m: Normalizes time vectors over wingbeat -
w2b.m: Transforms vectors from wing to body frame -
wingShapeOutline.m: Plots wing outlines from morphometric data
The following files are the copies of species-averaged parameters from Data_morphometrics and Data_kinematics folders:
-
AI_00_00_0_FourierCoeffs_01.mat: A. io representative species-averaged kinematics -
AL_00_00_0_FourierCoeffs_01.mat: A. luna representative species-averaged kinematics -
AP_00_00_0_FourierCoeffs_01.mat: A. polyphemus representative species-averaged kinematics -
HE_00_00_0_FourierCoeffs_01.mat: H. euryalus representative species-averaged kinematics -
AI_00_0_CW_BEoutput.csv: A. io species-averaged morphometrics -
AL_00_0_CW_BEoutput.csv: A. luna species-averaged morphometrics -
AP_00_0_CW_BEoutput.csv: A. polyphemus species-averaged morphometrics -
HE_00_0_CW_BEoutput.csv: H. euryalus species-averaged morphometrics
wingKinParamsBEM_tmvr_normd_SM_individuals.xlsx
Description of relevant variables: Individual specimen data for modeling and plotting. These are measured flight kinematic and morphometric parameters for each silkmoth specimen.
-
Species: Species name (AI, AL, AP, HE) -
Ind#: Individual specimen number -
Trial#: Flight trial number -
WS#: Wingstroke number -
mass: Total mass (body + wings) (grams) -
R: Wing length (m) -
r_2: Radius of second moment of area (normalized by wing length) -
c_mean: Mean wing chord (m) -
u_mean,u_amp: Forward velocity mean and amplitude (m/s) -
w_mean,w_amp: Vertical velocity mean and amplitude (m/s) -
chi mean,chi amp: Body pitch angle mean and amplitude (radians) -
beta mean,beta amp: Stroke plane angle mean and amplitude (radians) -
beta_roll: Stroke plane roll (tilt) angle (radians) -
phi_mean,phi_amp: Wing sweep angle: mean and amplitude (radians) -
alpha_mean,alpha_amp: Wing pitch (feathering) angle mean and amplitude (radians) -
theta_mean,theta_amp: Wing deviation angle mean and amplitude (radians)
wingKinParamsTrim_tmvr_SM.xlsx
Description: Contains trial-based trimming results for modeling aerodynamic forces and torques across wingstrokes for four silkmoth species.
-
Species: Species name (AI, AL, AP, HE) -
Ind#: Individual specimen ID number -
Trial#: Flight trial number -
WS#: Wingstroke number -
Trim result: Flag indicating success or failure of aerodynamic trimming -
Trim #: Index of the trimming attempt -
mass: Total mass (body + wings) (grams) -
R: Wing length (m) -
r_2: Radius of second moment of area (normalized by R) -
c_mean: Mean wing chord (m) -
u_mean,u_amp: Forward velocity mean and amplitude (m/s) -
w_mean,w_amp: Vertical velocity mean and amplitude (m/s) -
d wbf: Wingbeat frequency offset to trim from species-averaged value (Hz) -
d chi mean,d chi amp: Body pitch angle mean and amplitude offset to trim from species-averaged values (radians) -
d beta mean,d beta amp: Stroke plane angle mean and amplitude offset to trim from species-averaged values (radians) -
d beta_roll sp: Stroke plane roll (tilt) angle offset to trim from species-averaged value (radians) -
d phi_mean,d phi_amp: Wing sweep angle mean and amplitude offset to trim from species-averaged values (radians) -
d alpha_mean,d alpha_amp: Wing pitch (feathering) angle mean and amplitude offset to trim from species-averaged values (radians) -
d theta_mean,d theta_amp: Wing deviation angle mean and amplitude offset to trim from species-averaged values (radians) -
d k_D: Drag coefficient offset to trim from species-averaged value -
d k_L: Lift coefficient offset to trim from species-averaged value -
d k_R: Rotational coefficient offset to trim from species-averaged value -
d k_A: Added mass coefficient offset to trim from species-averaged value -
error: Root-mean-square error in cost function from perfect equilibrium (unitless) -
Fx mean,Fx amp: Aerodynamic force in x-direction: mean and amplitude (N) -
Fy mean,Fy amp: Aerodynamic force in y-direction: mean and amplitude (N) -
Fz mean,Fz amp: Aerodynamic force in z-direction: mean and amplitude (N)
Software Requirements
-
MATLAB R2024b
-
Curve Fitting Toolbox
-
Signal Processing Toolbox
-
Statistics and Machine Learning Toolbox
-
Microsoft Excel (for
.csvand.xlsxfiles)
Data Sources
Partially derived from:
Contact
Usama Bin Sikandar
usamabinsikandar@gmail.com
