ae_wrapper#

collections#

class AssignmentResultCollection(ids: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, passenger_flow: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, cargo_flow: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, congested_time: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, delay_factor: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, volume_to_capacity: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, passenger_car_unit: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None)#

Bases: object

cargo_flow: ndarray#
congested_time: ndarray#
delay_factor: ndarray#
ids: ndarray#
passenger_car_unit: ndarray#
passenger_flow: ndarray#
volume_to_capacity: ndarray#
class GraphPath(nodes: numpy.ndarray, links: numpy.ndarray, path_results: aequilibrae.paths.results.path_results.PathResults)#

Bases: object

nodes: ndarray#
path_results: PathResults#
class LinkCollection(ids: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, from_nodes: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, to_nodes: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, directions: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, max_speeds: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, capacities: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, geometries: movici_simulation_core.core.arrays.TrackedCSRArray | None = None)#

Bases: object

capacities: ndarray#
directions: ndarray#
from_nodes: ndarray#
geometries: TrackedCSRArray | None#
ids: ndarray#
max_speeds: ndarray#
to_nodes: ndarray#
class NodeCollection(ids: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, is_centroids: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, geometries: List[List[float]] | List[numpy.ndarray] | numpy.ndarray | NoneType = None)#

Bases: object

geometries: List[List[float]] | List[ndarray] | ndarray | None#
ids: ndarray#
is_centroids: ndarray#

id_generator#

class IdGenerator#

Bases: object

Since aequilibrae has a fixed structure for ids we have to be able to convert between our ids and aequilibrae ids

get_new_ids(original_ids: _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) ndarray#
query_new_ids(original_ids: _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) ndarray#
query_original_ids(new_ids: _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) ndarray#

patches#

class AequilibraeMatrix#

Bases: AequilibraeMatrix

get_matrix(core: str, copy=True)#

Same as upstream get_matrix, but with default copy=True

point_generator#

class PointGenerator(increment: float = 0.001)#

Bases: object

Since aequilibrae can’t work with overlapping points we have to be able to generate unique points

add_point(point: Tuple[float, float] | List[float] | ndarray) None#
add_points(points: List[Tuple[float, float] | List[float] | ndarray] | ndarray) None#
generate_and_add(reference_point: Tuple[float, float] | List[float] | ndarray) ndarray#
property point_count: int#

project#

class AssignmentParameters(volume_delay_function: str = 'BPR', vdf_alpha: float = 0.64, vdf_beta: float = 4.0, cargo_pcu: float = 1.9, algorithm: str = 'bfw', max_iter: int = 1000, rgap_target: float = 0.001)#

Bases: object

algorithm: str = 'bfw'#
cargo_pcu: float = 1.9#
max_iter: int = 1000#
rgap_target: float = 0.001#
vdf_alpha: float = 0.64#
vdf_beta: float = 4.0#
volume_delay_function: str = 'BPR'#
class ProjectWrapper(project_path: str | Path | None = None, project_name: str | None = None, delete_on_close: bool = True)#

Bases: object

This class wraps Aequilibrae methods with sensible methods and bugfixes

add_column(column_name: str, values: Sequence | None = None) None#
add_nodes(nodes: NodeCollection) None#
assign_traffic(od_matrix_passenger: ndarray, od_matrix_cargo: ndarray, parameters: AssignmentParameters | None = None) AssignmentResultCollection#
build_graph(cost_field: str, block_centroid_flows: bool = True) Graph#
calculate_free_flow_times() ndarray#

Aequilibrae calculates distances automatically but does not compute free flow time, so we have to calculate them manually

close() None#
convert_od_matrix(od_matrix: ndarray, matrix_name: str) AequilibraeMatrix#
exclude_segments(segment_ids: Sequence[int])#
get_nodes() NodeCollection#
get_shortest_path(from_node: int, to_node: int, path_results: PathResults | None = None) GraphPath | None#
get_shortest_paths(from_node: int, to_nodes: List[int]) List[GraphPath | None]#
transformer = <Unknown Transformer: unknown> Description: unavailable until proj_trans is called Area of Use: - undefined#
update_column(column_name: str, values: Sequence) None#
class TransportMode#

Bases: object

CAR = 'c'#

Module contents#

class AssignmentParameters(volume_delay_function: str = 'BPR', vdf_alpha: float = 0.64, vdf_beta: float = 4.0, cargo_pcu: float = 1.9, algorithm: str = 'bfw', max_iter: int = 1000, rgap_target: float = 0.001)#

Bases: object

algorithm: str = 'bfw'#
cargo_pcu: float = 1.9#
max_iter: int = 1000#
rgap_target: float = 0.001#
vdf_alpha: float = 0.64#
vdf_beta: float = 4.0#
volume_delay_function: str = 'BPR'#
class AssignmentResultCollection(ids: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, passenger_flow: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, cargo_flow: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, congested_time: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, delay_factor: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, volume_to_capacity: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, passenger_car_unit: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None)#

Bases: object

cargo_flow: ndarray#
congested_time: ndarray#
delay_factor: ndarray#
ids: ndarray#
passenger_car_unit: ndarray#
passenger_flow: ndarray#
volume_to_capacity: ndarray#
class GraphPath(nodes: numpy.ndarray, links: numpy.ndarray, path_results: aequilibrae.paths.results.path_results.PathResults)#

Bases: object

nodes: ndarray#
path_results: PathResults#
class IdGenerator#

Bases: object

Since aequilibrae has a fixed structure for ids we have to be able to convert between our ids and aequilibrae ids

get_new_ids(original_ids: _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) ndarray#
query_new_ids(original_ids: _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) ndarray#
query_original_ids(new_ids: _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) ndarray#
class LinkCollection(ids: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, from_nodes: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, to_nodes: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, directions: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, max_speeds: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, capacities: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, geometries: movici_simulation_core.core.arrays.TrackedCSRArray | None = None)#

Bases: object

capacities: ndarray#
directions: ndarray#
from_nodes: ndarray#
geometries: TrackedCSRArray | None#
ids: ndarray#
max_speeds: ndarray#
to_nodes: ndarray#
class NodeCollection(ids: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, is_centroids: numpy._typing._array_like._SupportsArray[numpy.dtype[Any]] | numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]] | bool | int | float | complex | str | bytes | numpy._typing._nested_sequence._NestedSequence[bool | int | float | complex | str | bytes] | NoneType = None, geometries: List[List[float]] | List[numpy.ndarray] | numpy.ndarray | NoneType = None)#

Bases: object

geometries: List[List[float]] | List[ndarray] | ndarray | None#
ids: ndarray#
is_centroids: ndarray#
class PointGenerator(increment: float = 0.001)#

Bases: object

Since aequilibrae can’t work with overlapping points we have to be able to generate unique points

add_point(point: Tuple[float, float] | List[float] | ndarray) None#
add_points(points: List[Tuple[float, float] | List[float] | ndarray] | ndarray) None#
generate_and_add(reference_point: Tuple[float, float] | List[float] | ndarray) ndarray#
property point_count: int#
class ProjectWrapper(project_path: str | Path | None = None, project_name: str | None = None, delete_on_close: bool = True)#

Bases: object

This class wraps Aequilibrae methods with sensible methods and bugfixes

add_column(column_name: str, values: Sequence | None = None) None#
add_nodes(nodes: NodeCollection) None#
assign_traffic(od_matrix_passenger: ndarray, od_matrix_cargo: ndarray, parameters: AssignmentParameters | None = None) AssignmentResultCollection#
build_graph(cost_field: str, block_centroid_flows: bool = True) Graph#
calculate_free_flow_times() ndarray#

Aequilibrae calculates distances automatically but does not compute free flow time, so we have to calculate them manually

close() None#
convert_od_matrix(od_matrix: ndarray, matrix_name: str) AequilibraeMatrix#
exclude_segments(segment_ids: Sequence[int])#
get_nodes() NodeCollection#
get_shortest_path(from_node: int, to_node: int, path_results: PathResults | None = None) GraphPath | None#
get_shortest_paths(from_node: int, to_nodes: List[int]) List[GraphPath | None]#
transformer = <Unknown Transformer: unknown> Description: unavailable until proj_trans is called Area of Use: - undefined#
update_column(column_name: str, values: Sequence) None#
class TransportMode#

Bases: object

CAR = 'c'#