Skip to content

aeromaps.models.air_transport.air_traffic.ask

ask

Module for computing Available Seat Kilometers (ASK).

ASK

ASK(name='ask', *args, **kwargs)

Bases: AeroMAPSModel

Class to compute Available Seat Kilometers (ASK) and its breakdown by range for passenger aircraft, based on load factor and revenue passenger kilometers [RPK].

Parameters:

Name Type Description Default
name str

Name of the model instance ('ask' by default).

'ask'
Source code in aeromaps/models/air_transport/air_traffic/ask.py
25
26
def __init__(self, name="ask", *args, **kwargs):
    super().__init__(name=name, *args, **kwargs)

compute

compute(load_factor, rpk, rpk_short_range, rpk_medium_range, rpk_long_range)

Execute the computation of Available Seat Kilometers (ASK) and its breakdown by range.

Parameters:

Name Type Description Default
load_factor Series

Annual passenger load factor [%].

required
rpk Series

Annual RPKs [RPK].

required
rpk_short_range Series

Annual RPKs for short-range flights [RPK].

required
rpk_medium_range Series

Annual RPKs for medium-range flights [RPK].

required
rpk_long_range Series

Annual RPKs for long-range flights [RPK].

required

Returns:

Type Description
ask

Annual ASKs [ASK].

ask_short_range

ASKs for short-range flights [ASK].

ask_medium_range

ASKs for medium-range flights [ASK].

ask_long_range

ASKs for long-range flights [ASK].

Source code in aeromaps/models/air_transport/air_traffic/ask.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
def compute(
    self,
    load_factor: pd.Series,
    rpk: pd.Series,
    rpk_short_range: pd.Series,
    rpk_medium_range: pd.Series,
    rpk_long_range: pd.Series,
) -> Tuple[pd.Series, pd.Series, pd.Series, pd.Series]:
    """
    Execute the computation of Available Seat Kilometers (ASK) and its breakdown by range.

    Parameters
    ----------
    load_factor
        Annual passenger load factor [%].
    rpk
        Annual RPKs [RPK].
    rpk_short_range
        Annual RPKs for short-range flights [RPK].
    rpk_medium_range
        Annual RPKs for medium-range flights [RPK].
    rpk_long_range
        Annual RPKs for long-range flights [RPK].

    Returns
    -------
    ask
        Annual ASKs [ASK].
    ask_short_range
        ASKs for short-range flights [ASK].
    ask_medium_range
        ASKs for medium-range flights [ASK].
    ask_long_range
        ASKs for long-range flights [ASK].
    """

    # ASK calculation
    ask = rpk / (load_factor / 100)
    self.df.loc[:, "ask"] = ask

    # Short range
    for k in range(self.historic_start_year, self.end_year + 1):
        self.df.loc[k, "ask_short_range"] = rpk_short_range.loc[k] / (load_factor.loc[k] / 100)

    # Medium range
    for k in range(self.historic_start_year, self.end_year + 1):
        self.df.loc[k, "ask_medium_range"] = rpk_medium_range.loc[k] / (
            load_factor.loc[k] / 100
        )

    # Long range
    for k in range(self.historic_start_year, self.end_year + 1):
        self.df.loc[k, "ask_long_range"] = rpk_long_range.loc[k] / (load_factor.loc[k] / 100)

    ask_short_range = self.df["ask_short_range"]
    ask_medium_range = self.df["ask_medium_range"]
    ask_long_range = self.df["ask_long_range"]

    return ask, ask_short_range, ask_medium_range, ask_long_range