pycontrails.datalib.ch_aviation¶
Support for reading and parsing the ch-aviation fleet database.
Classes
|
Registered aircraft properties from ch-aviation database. |
|
Estimated engine properties from airline-aircraft look-up tables. |
|
Support for querying the ch-aviation fleet database. |
|
Parameters for |
- class pycontrails.datalib.ch_aviation.AircraftChAviation(tail_number, icao_address, msn, country_of_registration, aircraft_type_icao, aircraft_type_iata, aircraft_family, aircraft_subfamily, manufacturer, engine_subtype, engine_uid, engine_manufacturer, n_engines, mtow_kg, operator_name, operator_icao, operator_iata, operator_type, aircraft_role, aircraft_market_group, n_seats, status, first_flight_date, delivery_date, cumulative_reported_hours, cumulative_reported_cycles, cumulative_reported_hours_ttm, cumulative_reported_cycles_ttm, cumulative_stats_as_of_date, average_annual_hours, average_daily_hours, average_daily_hours_ttm, average_annual_cycles, average_stats_as_of_date)¶
Bases:
objectRegistered aircraft properties from ch-aviation database.
- aircraft_age_yrs(date)¶
Estimate aircraft age in years at the provided date.
- Parameters:
date (
pandas.Timestamp) – Date of interest- Returns:
float– Aircraft age in years at the provided date
- aircraft_family¶
Aircraft family
- aircraft_market_group¶
Aircraft market group
- aircraft_role¶
Registered aircraft usage, i.e., passenger/military
- aircraft_subfamily¶
Aircraft model
- aircraft_type_iata¶
IATA aircraft type designator
- aircraft_type_icao¶
ICAO aircraft type designator
- average_annual_cycles¶
Average annual utilization cycles
- average_annual_hours¶
Average annual utilization hours
- average_daily_hours¶
Average daily utilization hours
- average_daily_hours_ttm¶
Average daily utilization hours, trailing twelve months
- average_stats_as_of_date¶
Average statistics as of date
- country_of_registration¶
Country of registration
- cumulative_reported_cycles¶
Cumulative reported cycles
- cumulative_reported_cycles_ttm¶
Cumulative reported cycles, trailing twelve months
- cumulative_reported_hours¶
Cumulative reported hours
- cumulative_reported_hours_ttm¶
Cumulative reported hours, trailing twelve months
- cumulative_stats_as_of_date¶
Cumulative statistics as of date
- delivery_date¶
Delivery date
- engine_manufacturer¶
Engine manufacturer
- engine_subtype¶
Engine model
- engine_uid¶
Engine unique identification number from the ICAO Aircraft Emissions Databank
- first_flight_date¶
First flight date
- icao_address¶
ICAO 24-bit address
- manufacturer¶
Aircraft manufacturer
- msn¶
Manufacturer Serial Number, MSN
- mtow_kg¶
Maximum take-off weight (MTOW), [\(kg\)]
- n_engines¶
Number of engines
- n_seats¶
Number of seats
- operator_iata¶
Operator IATA code
- operator_icao¶
Operator ICAO code
- operator_name¶
Operator name
- operator_type¶
Operator type
- status¶
Aircraft status
- tail_number¶
Aircraft tail number
- class pycontrails.datalib.ch_aviation.AirlineAircraftLookUp(aircraft_type_icao, engine_subtype, engine_uid, operator_name, operator_iata)¶
Bases:
objectEstimated engine properties from airline-aircraft look-up tables.
- aircraft_type_icao¶
ICAO aircraft type designator
- engine_subtype¶
Engine model
- engine_uid¶
Engine unique identification number from the ICAO Aircraft Emissions Databank
- operator_iata¶
Operator IATA code
- operator_name¶
Operator name
- class pycontrails.datalib.ch_aviation.ChAviation(params=None, **params_kwargs)¶
Bases:
ModelSupport for querying the ch-aviation fleet database.
This model requires access to private ch-aviation fleet data, which is not included in the pycontrails distribution.
Data file paths can be specified via
ChAviationParams:fleet_database_path: Path to the fleet database CSV file.airline_engine_lookup_path: Path to the airline-aircraft engine look-up table CSV file.
If paths are not provided, this interface looks for data files in a directory specified by the
CH_AVIATION_ROOT_PATHenvironment variable. If not set, the default root path isch-aviation/as a sibling directory to the pycontrails repository root.- aircraft_by_icao_address¶
Lookup dictionary of the form
{icao_address: AircraftChAviation}
- aircraft_by_tail_number¶
Lookup dictionary of the form
{tail_number: AircraftChAviation}
- airline_engines¶
Lookup dictionary of the form
{(airline_iata, aircraft_type_icao): AirlineAircraftLookUp}
- default_params¶
alias of
ChAviationParams
- downselect_met()¶
Downselect
metdomain to the max/min bounds ofsource.Override this method if special handling is needed in met down-selection.
sourcemust be defined before callingdownselect_met().This method copies and re-assigns
metusingmet.copy()to avoid side-effects.
- Raises:
ValueError – Raised if
sourceis not defined. Raised ifsourceis not aGeoVectorDataset.
- classmethod ecmwf_met_variables()¶
Return an ECMWF-specific list of required meteorology variables.
- Returns:
tuple[MetVariable]– List of ECMWF-specific variants of required variables
- eval(source=None, **params)¶
Extract specific aircraft properties for flight from ch-aviation database.
- The
sourceFlightmust contain one of the following variables: tail_number(mandatory),icao_address(optional), orairline_iataandaircraft_type(optional)
The following properties are added to the
sourceattributes if thetail_numberoricao_addressare available in the fleet database:msncountry_of_registrationatyp_icao_ch_aatyp_iata_ch_aatyp_name_ch_aatyp_manufacturerengine_nameengine_uidengine_manufacturern_engines_ch_aamass_mtowoperator_nameoperator_icaooperator_iataoperator_typeaircraft_roleaircraft_market_groupn_seatsstatusfirst_flight_datedelivery_dateaircraft_age_yrs(ifsourceis non-empty)cumulative_reported_hourscumulative_reported_hours_ttmcumulative_reported_cyclescumulative_reported_cycles_ttmcumulative_stats_as_of_dateaverage_annual_hoursaverage_daily_hoursaverage_daily_hours_ttmaverage_annual_cyclesaverage_stats_as_of_date
The following properties are added to the
sourceattributes if thetail_numberandicao_addressare not included in ch-aviation, butairline_iataandaircraft_typeare available:engine_nameengine_uidoperator_nameoperator_iata
- The
- classmethod generic_met_variables()¶
Return a model-agnostic list of required meteorology variables.
- Returns:
tuple[MetVariable]– List of model-agnostic variants of required variables
- get_data_param(other, key, default=<object object>, *, set_attr=True)¶
Get data from other source-compatible object with default set by model parameter key.
Retrieves data with the following hierarchy:
other.data[key]. Returnsnp.ndarray | xr.DataArray.other.attrs[key]params[key]default
In case 3., the value of
params[key]is attached toother.attrs[key]unlessset_attris set to False.- Parameters:
- Returns:
Any– Value(s) found for key inotherdata,otherattrs, or model params- Raises:
KeyError – Raises KeyError if key is not found in any location and
defaultis not provided.
- get_source_param(key, default=<object object>, *, set_attr=True)¶
Get source data with default set by parameter key.
Retrieves data with the following hierarchy:
source.data[key]. Returnsnp.ndarray | xr.DataArray.source.attrs[key]params[key]default
In case 3., the value of
params[key]is attached tosource.attrs[key]unlessset_attris set to False.- Parameters:
- Returns:
Any– Value(s) found for key in source data, source attrs, or model params- Raises:
KeyError – Raises KeyError if key is not found in any location and
defaultis not provided.
- classmethod gfs_met_variables()¶
Return a GFS-specific list of required meteorology variables.
- Returns:
tuple[MetVariable]– List of GFS-specific variants of required variables
- property hash¶
Generate a unique hash for model instance.
- Returns:
str– Unique hash for model instance (sha1)
- property interp_kwargs¶
Shortcut to create interpolation arguments from
params.The output of this is useful for passing to
interpolate_met().- Returns:
dict[str,Any]– Dictionary with keys”method”
”bounds_error”
”fill_value”
”localize”
”use_indices”
”q_method”
as determined by
params.
- long_name = 'ch-aviation fleet database'¶
- met¶
Meteorology data
- met_required = False¶
Require meteorology is not None on __init__()
- met_variables¶
Required meteorology pressure level variables. Each element in the list is a
MetVariableor atuple[MetVariable]. If element is atuple[MetVariable], the variable depends on the data source and the tuple must include entries for a model-agnostic variable, an ECMWF-specific variable, and a GFS-specific variable. Only one of the three variable in the tuple is required for model evaluation.
- name = 'ch-aviation'¶
- optional_met_variables¶
Optional meteorology variables
- params¶
Instantiated model parameters, in dictionary form
- processed_met_variables¶
Set of required parameters if processing already complete on
metinput.
- registered_aircraft_properties(tail_number, icao_address=None)¶
Get registered aircraft properties from ch-aviation fleet database.
- require_met()¶
Ensure that
metis a MetDataset.- Returns:
MetDataset– Returns reference tomet. This is helpful for type narrowingmetwhen meteorology is required.- Raises:
ValueError – Raises when
metis None.
- require_source_type(type_)¶
Ensure that
sourceistype_.- Returns:
_Source– Returns reference tosource. This is helpful for type narrowingsourceto specific type(s).- Raises:
ValueError – Raises when
sourceis not_type_.
- set_source(source=None)¶
Attach original or copy of input
sourcetosource.- Parameters:
source (
MetDataset | GeoVectorDataset | Flight | Iterable[Flight] | None) – Parametersourcepassed ineval(). If None, an empty MetDataset with coordinates likemetis set tosource.
See also
- set_source_met(optional=False, variable=None)¶
Ensure or interpolate each required
met_variablesonsource.For each variable in
met_variables, checksourcefor data variable with the same name.For
GeoVectorDatasetsources, try to interpolatemetif variable does not exist.For
MetDatasetsources, try to get data frommetif variable does not exist.- Parameters:
optional (
bool, optional) – Includeoptional_met_variablesvariable (
MetVariable | Sequence[MetVariable] | None, optional) – MetVariable to set, frommet_variables. If None, set all variables inmet_variablesandoptional_met_variablesifoptionalis True.
- Raises:
ValueError – Variable does not exist and
sourceis a MetDataset.
- source¶
Data evaluated in model
- class pycontrails.datalib.ch_aviation.ChAviationParams(copy_source=True, interpolation_method='linear', interpolation_bounds_error=False, interpolation_fill_value=nan, interpolation_localize=False, interpolation_use_indices=False, interpolation_q_method=None, verify_met=True, downselect_met=True, met_longitude_buffer=(0.0, 0.0), met_latitude_buffer=(0.0, 0.0), met_level_buffer=(0.0, 0.0), met_time_buffer=(np.timedelta64(0, 'h'), np.timedelta64(0, 'h')), fleet_database_path=None, airline_engine_lookup_path=None)¶
Bases:
ModelParamsParameters for
ChAviationmodel.- airline_engine_lookup_path = None¶
Path to airline-aircraft engine look-up table CSV file.
- as_dict()¶
Convert object to dictionary.
We use this method instead of dataclasses.asdict to use a shallow/unrecursive copy. This will return values as Any instead of dict.
- Returns:
dict[str,Any]– Dictionary version of self.
- copy_source = True¶
Copy input
sourcedata on eval
- downselect_met = True¶
Downselect input
MetDataset`to region aroundsource.
- fleet_database_path = None¶
Path to ch-aviation fleet database CSV file.
- interpolation_bounds_error = False¶
If True, points lying outside interpolation will raise an error
- interpolation_fill_value = nan¶
Used for outside interpolation value if
interpolation_bounds_erroris False
- interpolation_localize = False¶
Experimental. See
pycontrails.core.interpolation.
- interpolation_method = 'linear'¶
Interpolation method. Supported methods include “linear”, “nearest”, “slinear”, “cubic”, and “quintic”. See
scipy.interpolate.RegularGridInterpolatorfor the description of each method. Not all methods are supported by all met grids. For example, the “cubic” method requires at least 4 points per dimension.
- interpolation_q_method = None¶
Experimental. Alternative interpolation method to account for specific humidity lapse rate bias. Must be one of
None,"cubic-spline", or"log-q-log-p". IfNone, no special interpolation is used for specific humidity. The"cubic-spline"method applies a custom stretching of the met interpolation table to account for the specific humidity lapse rate bias. The"log-q-log-p"method interpolates in the log of specific humidity and pressure, then converts back to specific humidity. Only used by models calling tointerpolate_met().
- interpolation_use_indices = False¶
Experimental. See
pycontrails.core.interpolation.
- met_latitude_buffer = (0.0, 0.0)¶
Met latitude buffer for input to
Flight.downselect_met(), in WGS84 coordinates. Only applies whendownselect_metis True.
- met_level_buffer = (0.0, 0.0)¶
Met level buffer for input to
Flight.downselect_met(), in [\(hPa\)]. Only applies whendownselect_metis True.
- met_longitude_buffer = (0.0, 0.0)¶
Met longitude buffer for input to
Flight.downselect_met(), in WGS84 coordinates. Only applies whendownselect_metis True.
- met_time_buffer = (np.timedelta64(0,'h'), np.timedelta64(0,'h'))¶
Met time buffer for input to
Flight.downselect_met()Only applies whendownselect_metis True.
- verify_met = True¶
Call
_verify_met()on model instantiation.