FlightPhaseEstimator
The FlightPhaseEstimator class identifies distinct flight phases—such as climb, cruise, and descent—based on altitude and vertical speed profiles. It is a core component in AeroTrack for categorizing aircraft behavior post-flight and isolating segments for targeted analysis (e.g., cruise-only fuel burn).
Class Overview
Constructor
FlightPhaseEstimator()
Initializes the estimator without requiring additional parameters. Logic is internally configured to assign flight phases based on vertical speed and smoothed barometric altitude.
Key Methods
Method Descriptions:
`estimate_phases(df)` Adds a phase column to the DataFrame, labeling each time point as “Climb”, “Cruise”, “Descent”, or “Other” based on vertical speed thresholds.
`identify_cruise_segments(df)` Returns a filtered DataFrame containing only the cruise segments, useful for subsequent cruise-only analysis (e.g., CO-temperature correlation, drag comparisons).
Flight Phase Logic
The classification is based on:
Climb: vertical speed > +500 ft/min
Descent: vertical speed < -500 ft/min
Cruise: vertical speed between ±500 ft/min AND stable altitude
Other: Ground or transitional phases
Usage Example
from AeroTrack_Modules import FlightPhaseEstimator
estimator = FlightPhaseEstimator()
df = estimator.estimate_phases(df)
cruise_df = estimator.identify_cruise_segments(df)
Output
The modified DataFrame includes:
phase: Flight phase classification
Optionally, only cruise segments when using identify_cruise_segments
Visualization Tip
Plotting baro_alt_AC against time colored by phase helps visually validate the classification:
import matplotlib.pyplot as plt
phases = {"Climb": "orange", "Cruise": "green", "Descent": "blue", "Other": "gray"}
for phase, color in phases.items():
plt.plot(df[df["phase"] == phase]["UTC_time"],
df[df["phase"] == phase]["baro_alt_AC"],
label=phase, color=color)
plt.legend()
plt.xlabel("Time")
plt.ylabel("Altitude (m)")
plt.title("Flight Phases")
plt.show()
Dependencies
numpy
pandas