Estimate multi-aircraft frames
A single DataFrame can mix several aircraft typecodes. FuelEstimator.estimate()
groups rows by typecode and scores each group with its own aircraft parameters, then
scatters the results back into the original row order — so you can process a whole fleet
in one call.
A mixed frame
import pandas as pd
from acropole import FuelEstimator
fe = FuelEstimator()
flight = pd.DataFrame({
"typecode": ["A320", "A320", "B738", "B738"],
"groundspeed": [400, 410, 420, 430],
"altitude": [10000, 11000, 12000, 13000],
"vertical_rate": [2000, 1500, 1000, 500],
})
result = fe.estimate(flight)
# A320 rows scored with A320 params, B738 rows with B738 params
Unsupported typecodes
If a typecode is not present in the bundled aircraft parameters, those rows are left as
NaN in fuel_flow and a warning is emitted. Missing typecodes follow the same
policy. Without second, known aircraft rows are scored independently:
import warnings
flight = pd.DataFrame({
"typecode": ["A320", "ZZZZ"],
"groundspeed": [400, 410],
"altitude": [10000, 11000],
"vertical_rate": [2000, 1500],
})
with warnings.catch_warnings(record=True) as caught:
warnings.simplefilter("always")
result = fe.estimate(flight)
print(result["fuel_flow"]) # second row is NaN
print([str(w.message) for w in caught]) # "Aircraft type 'ZZZZ' not supported"
With second, each typecode needs enough samples to derive its time-dependent
features. A single-sample group has undefined computed derivatives. Any unknown
fuel contribution also makes that and all subsequent fuel_cumsum totals unknown.
See Missing data and cumulative fuel
for the complete policy.
Sharing the session across aircraft
When you repeatedly score one aircraft at a time, use for_aircraft() to obtain a
typecode-bound AircraftFuelEstimator that reuses the already-loaded ONNX session and
parameters (no reload per typecode):
fe = FuelEstimator()
a320 = fe.for_aircraft("A320")
b738 = fe.for_aircraft("B738") # same session, different params
See the Reference for AircraftFuelEstimator's numpy-only
estimate() signature.