Example for partitioning the scope of the AeroMAPS scenario using AeroSCOPE data#
This notebook serves as an example for producing analyses on a reduced scope (e.g. regional) using AeroSCOPE data.
1. Generation of a corrected input file for the studied scope#
Base values for calibrating a scenario can be obtained using AeroSCOPE. The file is downloaded from the “AeroMAPS Export” tab, using the available filtering options.
Please refer to AeroSCOPE description to understand the limitaions of the tool.
Click on “Download File” to generate the input files for 2019, and place the .csv file in data_partitioning folder as below. This folder is used to store the calibration .csv, but also a custom input file.
Here, an example is provided considering domestic and international flights departing from France (overseas not included).
A dedicated function of AeroMAPS calibrates historical parameters by calibrating AeroMAPS values using AeroSCOPE partitionned file.
A set of transformations is necessary to match a similar coverage as AeroSCOPE does not cover dedicated cargo flights.
⚠ Historical values are calibrated based on the comparision of AeroSCOPE 2019 values with AeroMAPS 2019 reference. Historical trajectories (RPK, energy consumption, emissions, …) are scaled using this ratio and are NOT REPRESENTATIVE of actual historical values for the partition made, which can result in significant differences, in particular for climate models ⚠
from aeromaps.utils.functions import create_partitioning
create_partitioning(file="data_partitioning/aeroscope_france_data.csv", path="data_partitioning")
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
Cell In[2], line 1
----> 1 create_partitioning(file="data_partitioning/aeroscope_france_data.csv", path="data_partitioning")
File /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/aeromaps/utils/functions.py:56, in create_partitioning(file, path)
53 freight_energy_share_2019_partitioned = world_data_dict["freight_energy_share_2019"]
55 # AeroSCOPE data recovery
---> 56 partitioned_data_df = read_csv(file, delimiter=",")
57 partitioned_data = partitioned_data_df.values
58 total_ask_2019 = partitioned_data[0, 1]
File /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pandas/util/_decorators.py:211, in deprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper(*args, **kwargs)
209 else:
210 kwargs[new_arg_name] = new_arg_value
--> 211 return func(*args, **kwargs)
File /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pandas/util/_decorators.py:331, in deprecate_nonkeyword_arguments.<locals>.decorate.<locals>.wrapper(*args, **kwargs)
325 if len(args) > num_allow_args:
326 warnings.warn(
327 msg.format(arguments=_format_argument_list(allow_args)),
328 FutureWarning,
329 stacklevel=find_stack_level(),
330 )
--> 331 return func(*args, **kwargs)
File /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pandas/io/parsers/readers.py:950, in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)
935 kwds_defaults = _refine_defaults_read(
936 dialect,
937 delimiter,
(...)
946 defaults={"delimiter": ","},
947 )
948 kwds.update(kwds_defaults)
--> 950 return _read(filepath_or_buffer, kwds)
File /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pandas/io/parsers/readers.py:605, in _read(filepath_or_buffer, kwds)
602 _validate_names(kwds.get("names", None))
604 # Create the parser.
--> 605 parser = TextFileReader(filepath_or_buffer, **kwds)
607 if chunksize or iterator:
608 return parser
File /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pandas/io/parsers/readers.py:1442, in TextFileReader.__init__(self, f, engine, **kwds)
1439 self.options["has_index_names"] = kwds["has_index_names"]
1441 self.handles: IOHandles | None = None
-> 1442 self._engine = self._make_engine(f, self.engine)
File /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pandas/io/parsers/readers.py:1735, in TextFileReader._make_engine(self, f, engine)
1733 if "b" not in mode:
1734 mode += "b"
-> 1735 self.handles = get_handle(
1736 f,
1737 mode,
1738 encoding=self.options.get("encoding", None),
1739 compression=self.options.get("compression", None),
1740 memory_map=self.options.get("memory_map", False),
1741 is_text=is_text,
1742 errors=self.options.get("encoding_errors", "strict"),
1743 storage_options=self.options.get("storage_options", None),
1744 )
1745 assert self.handles is not None
1746 f = self.handles.handle
File /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pandas/io/common.py:856, in get_handle(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)
851 elif isinstance(handle, str):
852 # Check whether the filename is to be opened in binary mode.
853 # Binary mode does not support 'encoding' and 'newline'.
854 if ioargs.encoding and "b" not in ioargs.mode:
855 # Encoding
--> 856 handle = open(
857 handle,
858 ioargs.mode,
859 encoding=ioargs.encoding,
860 errors=errors,
861 newline="",
862 )
863 else:
864 # Binary mode
865 handle = open(handle, ioargs.mode)
FileNotFoundError: [Errno 2] No such file or directory: 'data_partitioning/aeroscope_france_data.csv'
2. Run AeroMAPS on this studied scope#
%matplotlib widget
from aeromaps import create_process
from aeromaps.core.models import (
models_traffic,
models_efficiency_top_down,
models_energy_without_fuel_effect,
models_offset,
models_climate_simple_gwpstar,
models_sustainability,
)
models = {
"models_traffic": models_traffic,
"models_efficiency_top_down": models_efficiency_top_down,
"models_energy_without_fuel_effect": models_energy_without_fuel_effect,
"models_offset": models_offset,
"models_climate_simple_gwpstar": models_climate_simple_gwpstar,
"models_sustainability": models_sustainability,
}
Create process as usual, the partitionning is recuperated as specified in the config file.
process = create_process(configuration_file="data_partitioning/config.json", models=models)
process.compute()
process.plot("air_transport_co2_emissions", save=False)
<aeromaps.plots.main.AirTransportCO2EmissionsPlot at 0x1e19020bf10>