polaris.runs.convergence.config.convergence_config.ConvergenceConfig

Contents

polaris.runs.convergence.config.convergence_config.ConvergenceConfig#

class polaris.runs.convergence.config.convergence_config.ConvergenceConfig(*args, uuid: str = '', data_dir: ~pathlib.Path = PosixPath('.'), backup_dir: ~pathlib.Path | None = None, archive_dir: ~pathlib.Path = PosixPath('archive'), results_dir: ~pathlib.Path | None = None, db_name: str = None, polaris_exe: ~pathlib.Path | None = None, scenario_skim_file: ~pathlib.Path = PosixPath('scenario_abm.json'), scenario_main_init: ~pathlib.Path = PosixPath('scenario_abm.json'), scenario_main: ~pathlib.Path = PosixPath('scenario_abm.json'), async_inline: bool = False, ignore_critical_errors: bool = False, num_threads: int = 48, num_abm_runs: int = 2, num_dta_runs: int = 0, num_outer_loops: int = 1, start_iteration_from: int | str | None = None, num_retries: int = 1, use_numa: bool = True, do_skim: bool = False, do_abm_init: bool = False, do_pop_synth: bool = False, workplace_stabilization: ~polaris.runs.convergence.config.workplace_stabilization_config.WorkplaceStabilizationConfig = WorkplaceStabilizationConfig(enabled=False, schedule=IterationSchedule(first_iteration=1, last_iteration=31, every_x_iter=5, pattern=None, on_abm_init=False)), calibration: ~polaris.runs.convergence.config.calibration_config.CalibrationConfig = CalibrationConfig(enabled=False, target_csv_dir=PosixPath('calibration_targets'), calibration_schedule=CalibrationSchedule(destination=IterationSchedule(first_iteration=1, last_iteration=21, every_x_iter=5, pattern=None, on_abm_init=False), mode=IterationSchedule(first_iteration=1, last_iteration=21, every_x_iter=5, pattern=None, on_abm_init=False), activity=IterationSchedule(first_iteration=1, last_iteration=21, every_x_iter=5, pattern=None, on_abm_init=False), timing=IterationSchedule(first_iteration=1, last_iteration=21, every_x_iter=5, pattern=None, on_abm_init=False)), destination_vot_max_adj=0.2, num_planned_activity_iterations=0, step_size=2.0), freight: ~polaris.runs.convergence.config.freight_config.FreightConfig = FreightConfig(enabled=False, b2b_demand_synthesis_schedule=IterationSchedule(first_iteration=1, last_iteration=0, every_x_iter=1, pattern=None, on_abm_init=True), simulate_deliveries_schedule=IterationSchedule(first_iteration=5, last_iteration=31, every_x_iter=5, pattern=None, on_abm_init=True)), incremental_loading: ~polaris.runs.convergence.config.incremental_loading_config.IncrementalLoadingConfig = IncrementalLoadingConfig(enabled=False, profile=[]), do_routing_MSA: bool = False, realtime_informed_vehicle_market_share: float | None = None, skim_averaging_factor: float | None = None, capacity_expressway: float | None = None, capacity_arterial: float | None = None, capacity_local: float | None = None, population_scale_factor: float = 1.0, trajectory_sampling: float = 0.01, add_rsus: bool = False, rsu_highway_pr: float = 0.0, rsu_major_pr: float = 0.0, rsu_minor_pr: float = 0.0, rsu_local_pr: float = 0.0, rsu_enabled_switching: bool = False, fixed_connectivity_penetration_rates_for_cv: float | None = None, highway_skim_file_name: str = 'highway_skim_file.omx', transit_skim_file_name: str = 'transit_skim_file.omx', skim_interval_endpoints: ~typing.List[int] = [240, 360, 420, 480, 540, 600, 720, 840, 900, 960, 1020, 1080, 1140, 1200, 1320, 1440], seed: int | None = None, skim_seed: int | None = None, user_data: ~typing.Any | None = None, scenario_mods: ~typing.Any | None = {}, kpis: ~polaris.runs.convergence.config.convergence_config.KpiFilterConfig = KpiFilterConfig(include_tags=(<KPITag.SYSTEM: 0>, <KPITag.POPULATION: 1>, <KPITag.ACTIVITIES: 2>, <KPITag.TRIPS: 4>, <KPITag.TNC: 5>, <KPITag.TRAFFIC: 6>, <KPITag.TRANSIT: 7>, <KPITag.VEHICLES: 8>, <KPITag.CALIBRATION: 10>, <KPITag.VALIDATION: 11>, <KPITag.CONVERGENCE: 12>, <KPITag.GLOBAL: 13>, <KPITag.PARKING: 14>, <KPITag.FREIGHT: 15>), exclude_tags=(<KPITag.HIGH_CPU: 60>, <KPITag.HIGH_MEMORY: 50>, <KPITag.BROKEN: 100>), verbose=False))#

Bases: BaseModel

Configuration class for the POLARIS iterative convergence process

__init__(*args, **kwargs)#

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Methods

__init__(*args, **kwargs)

Create a new model by parsing and validating input data from keyword arguments.

check_exe()

construct([_fields_set])

copy(*[, include, exclude, update, deep])

Returns a copy of the model.

default_do_pop_synth(v, info)

default_do_skim(v, info)

default_polaris_exe(v, info)

default_scenario_main(v, info)

demand_file(**kwargs)

dict(*[, include, exclude, by_alias, ...])

filter_based_on_start_iter(iterations[, ...])

from_dir(dir[, config_filename])

from_file(file)

from_orm(obj)

iterations()

json(*[, include, exclude, by_alias, ...])

load_scenario_json()

model_construct([_fields_set])

Creates a new instance of the Model class with validated data.

model_copy(*[, update, deep])

!!! abstract "Usage Documentation"

model_dump(*[, mode, include, exclude, ...])

!!! abstract "Usage Documentation"

model_dump_json(*[, indent, ensure_ascii, ...])

!!! abstract "Usage Documentation"

model_json_schema(by_alias, ref_template, ...)

Generates a JSON schema for a model class.

model_parametrized_name(params)

Compute the class name for parametrizations of generic classes.

model_post_init(context, /)

Override this method to perform additional initialization after __init__ and model_construct.

model_rebuild(*[, force, raise_errors, ...])

Try to rebuild the pydantic-core schema for the model.

model_validate(obj, *[, strict, extra, ...])

Validate a pydantic model instance.

model_validate_json(json_data, *[, strict, ...])

!!! abstract "Usage Documentation"

model_validate_strings(obj, *[, strict, ...])

Validate the given object with string data against the Pydantic model.

normalise_paths(relative_to)

parse_file(path, *[, content_type, ...])

parse_obj(obj)

parse_raw(b, *[, content_type, encoding, ...])

pretty_print([indent])

result_file(**kwargs)

schema([by_alias, ref_template])

schema_json(*[, by_alias, ref_template])

set_from_dict(_dict)

Set underlying properties using an input dictionary of values.

supply_file(**kwargs)

update_forward_refs(**localns)

val_results_dir(v, info)

validate(value)

Attributes

model_computed_fields

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_extra

Get extra fields set during validation.

model_fields

model_fields_set

Returns the set of fields that have been explicitly set on this model instance.

uuid

Unique identifier of the model run.

data_dir

The root directory of the model, defaults to the directory in which the polaris.yaml is located

backup_dir

Deprecated: Folder where backup of the model data is created before running the model

archive_dir

Deprecated: Folder from where to retrive archived data

results_dir

Deprecated: Folder to where the results of the model are saved

db_name

The filename prefix used in each of the database filenames (i.e. Chicago => Chicago-Supply.sqlite, etc).

polaris_exe

Path to the POLARIS executable to use.

scenario_skim_file

Deprecated: File with scenario configuration for skimming

scenario_main_init

Deprecated: File with scenario configuration for model initialization

scenario_main

File containing the template scenario configuration which will be adapted based on the current iteration

async_inline

Flag which controls if normally asynchronous post-processing steps (which aren't needed for subsequent iterations) should be processed "in-line" to minimize the memory footprint.

ignore_critical_errors

Flag which controls whether critical errors in the model are ignored when starting the convergence process.

num_threads

Number of CPU threads to use during simulation

num_abm_runs

Number of normal runs (ABM + DTA) to perform

num_dta_runs

Number of DTA-only runs to perform for a fixed demand from a previous normal iteration

num_outer_loops

Number of times a sequence of ABM+DTA and DTA-only runs will take place.

start_iteration_from

If a model run was interrupted, start_iteration_from can be set to restart a particular iteration (i.e. 5, iteration_5, 00_skim_iteration).

num_retries

Number of simulation crashes that are allowed before aborting the convergence process

use_numa

Flag that controls whether we apply numa options to the POLARIS executable when it is run

do_skim

Flag which controls whether a freeflow skimming iteration is undertaken at the beginning of the process.

do_abm_init

Flag which controls whether a model initialization iteration is run at the beginning of the process.

do_pop_synth

Flag which controls whether a separate population synthesis iteration is run at the beginning of the process

workplace_stabilization

Configuration related to the workplace stabilization process

calibration

Configuration related to the calibration process

freight

Configuration related to the freight modelling

incremental_loading

do_routing_MSA

Deprecated: Flag controlling the use of MSA averaging across routing iterations

realtime_informed_vehicle_market_share

Share of vehicles that have connectivity and receive realtime information about network (pass-through to scenario file)

skim_averaging_factor

The proportional weight given to skims observed in the current iteration as they are mixed with previous iteration skims to produce the output skims for this iteration.

capacity_expressway

Capacity of the expressway functional class to be used for the convergence run (pass-through to scenario file)

capacity_arterial

Capacity of the arterial functional class to be used for the convergence run (pass-through to scenario file)

capacity_local

Capacity of the local functional class to be used for the convergence run (pass-through to scenario file)

population_scale_factor

Population scaling factor

trajectory_sampling

Proportion of trajectories that are written to the database in each simulation iteration (pass-through to scenario file)

add_rsus

Deprecated

rsu_highway_pr

Deprecated

rsu_major_pr

Deprecated

rsu_minor_pr

Deprecated

rsu_local_pr

Deprecated

rsu_enabled_switching

Deprecated

fixed_connectivity_penetration_rates_for_cv

highway_skim_file_name

Name of the highway skim file

transit_skim_file_name

Name of the transit skim file

skim_interval_endpoints

An array of skimming intervals in minutes (since midnight) where each value denotes the end of the bin starting from the previous value or time 0

seed

Simulation seed for reproducible random number generator seeding.

skim_seed

Simulation skim seed for reproducible selection of skim locations and times.

user_data

user_data is a general purpose storage location that can used to carry study-specific parameters which need to be accessible inside callback methods across multiple iterations

scenario_mods

Scenario modifications that should be automatically applied on each iteration.

kpis

model_config = {'ignored_types': (<class 'function'>,), 'validate_assignment': True}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

data_dir: Path#

The root directory of the model, defaults to the directory in which the polaris.yaml is located

backup_dir: Path | None#

Deprecated: Folder where backup of the model data is created before running the model

archive_dir: Path#

Deprecated: Folder from where to retrive archived data

results_dir: Path | None#

Deprecated: Folder to where the results of the model are saved

db_name: str#

The filename prefix used in each of the database filenames (i.e. Chicago => Chicago-Supply.sqlite, etc)

polaris_exe: Path | None#

Path to the POLARIS executable to use. Three special values are supported for this: “model” - the binary that is located at ${data_dir}/bin/Integrated_Model, “polaris-studio” - the binary that ships with polaris-studio and “ci” - the latest CI executable (if available from your machine). If not specified will default to “model” if such exists, or to “polaris-studio” otherwise.

scenario_skim_file: Path#

Deprecated: File with scenario configuration for skimming

scenario_main_init: Path#

Deprecated: File with scenario configuration for model initialization

scenario_main: Path#

File containing the template scenario configuration which will be adapted based on the current iteration

async_inline: bool#

Flag which controls if normally asynchronous post-processing steps (which aren’t needed for subsequent iterations) should be processed “in-line” to minimize the memory footprint. Set to True if you are having “Out of Memory” issues

ignore_critical_errors: bool#

Flag which controls whether critical errors in the model are ignored when starting the convergence process. Please use extreme caution when using this flag, or contact the developers for more information on resolving critical errors.

num_threads: int#

Number of CPU threads to use during simulation

num_abm_runs: int#

Number of normal runs (ABM + DTA) to perform

num_dta_runs: int#

Number of DTA-only runs to perform for a fixed demand from a previous normal iteration

num_outer_loops: int#

Number of times a sequence of ABM+DTA and DTA-only runs will take place. For each num_outer_loop, num_abm_runs of ABM+DTA runs and num_dta_runs of DTA-only runs are simulated

start_iteration_from: int | str | None#

If a model run was interrupted, start_iteration_from can be set to restart a particular iteration (i.e. 5, iteration_5, 00_skim_iteration)

num_retries: int#

Number of simulation crashes that are allowed before aborting the convergence process

use_numa: bool#

Flag that controls whether we apply numa options to the POLARIS executable when it is run

do_skim: bool#

Flag which controls whether a freeflow skimming iteration is undertaken at the beginning of the process. Note that this is rarely a good idea (compared to starting from existing skims) as POLARIS can take a considerable number of iterations to converge from a freeflow state

do_abm_init: bool#

Flag which controls whether a model initialization iteration is run at the beginning of the process. This iteration will synthesize population, generates demand, and assigns demand to the network

do_pop_synth: bool#

Flag which controls whether a separate population synthesis iteration is run at the beginning of the process

workplace_stabilization: WorkplaceStabilizationConfig#

Configuration related to the workplace stabilization process

calibration: CalibrationConfig#

Configuration related to the calibration process

freight: FreightConfig#

Configuration related to the freight modelling

incremental_loading: IncrementalLoadingConfig#
do_routing_MSA: bool#

Deprecated: Flag controlling the use of MSA averaging across routing iterations

realtime_informed_vehicle_market_share: float | None#

Share of vehicles that have connectivity and receive realtime information about network (pass-through to scenario file)

skim_averaging_factor: float | None#

The proportional weight given to skims observed in the current iteration as they are mixed with previous iteration skims to produce the output skims for this iteration. Output = (1-w) * previous + w * current.

capacity_expressway: float | None#

Capacity of the expressway functional class to be used for the convergence run (pass-through to scenario file)

capacity_arterial: float | None#

Capacity of the arterial functional class to be used for the convergence run (pass-through to scenario file)

capacity_local: float | None#

Capacity of the local functional class to be used for the convergence run (pass-through to scenario file)

population_scale_factor: float#

Population scaling factor

trajectory_sampling: float#

Proportion of trajectories that are written to the database in each simulation iteration (pass-through to scenario file)

classmethod construct(_fields_set: set[str] | None = None, **values: Any) Self#
copy(*, include: AbstractSetIntStr | MappingIntStrAny | None = None, exclude: AbstractSetIntStr | MappingIntStrAny | None = None, update: Dict[str, Any] | None = None, deep: bool = False) Self#

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Args:

include: Optional set or mapping specifying which fields to include in the copied model. exclude: Optional set or mapping specifying which fields to exclude in the copied model. update: Optional dictionary of field-value pairs to override field values in the copied model. deep: If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include: set[int] | set[str] | Mapping[int, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | Mapping[str, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | None = None, exclude: set[int] | set[str] | Mapping[int, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | Mapping[str, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | None = None, by_alias: bool = False, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False) Dict[str, Any]#
classmethod from_orm(obj: Any) Self#
json(*, include: set[int] | set[str] | Mapping[int, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | Mapping[str, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | None = None, exclude: set[int] | set[str] | Mapping[int, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | Mapping[str, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | None = None, by_alias: bool = False, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Callable[[Any], Any] | None = PydanticUndefined, models_as_dict: bool = PydanticUndefined, **dumps_kwargs: Any) str#
model_computed_fields = {}#
classmethod model_construct(_fields_set: set[str] | None = None, **values: Any) Self#

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == ‘allow’, then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == ‘ignore’ (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == ‘forbid’ does not result in an error if extra values are passed, but they will be ignored.

Args:
_fields_set: A set of field names that were originally explicitly set during instantiation. If provided,

this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

values: Trusted or pre-validated data dictionary.

Returns:

A new instance of the Model class with validated data.

model_copy(*, update: Mapping[str, Any] | None = None, deep: bool = False) Self#
!!! abstract “Usage Documentation”

[model_copy](../concepts/models.md#model-copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Args:
update: Values to change/add in the new model. Note: the data is not validated

before creating the new model. You should trust this data.

deep: Set to True to make a deep copy of the model.

Returns:

New model instance.

model_dump(*, mode: Literal['json', 'python'] | str = 'python', include: set[int] | set[str] | Mapping[int, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | Mapping[str, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | None = None, exclude: set[int] | set[str] | Mapping[int, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | Mapping[str, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | None = None, context: Any | None = None, by_alias: bool | None = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, exclude_computed_fields: bool = False, round_trip: bool = False, warnings: bool | Literal['none', 'warn', 'error'] = True, fallback: Callable[[Any], Any] | None = None, serialize_as_any: bool = False) dict[str, Any]#
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#python-mode)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Args:
mode: The mode in which to_python should run.

If mode is ‘json’, the output will only contain JSON serializable types. If mode is ‘python’, the output may contain non-JSON-serializable Python objects.

include: A set of fields to include in the output. exclude: A set of fields to exclude from the output. context: Additional context to pass to the serializer. by_alias: Whether to use the field’s alias in the dictionary key if defined. exclude_unset: Whether to exclude fields that have not been explicitly set. exclude_defaults: Whether to exclude fields that are set to their default value. exclude_none: Whether to exclude fields that have a value of None. exclude_computed_fields: Whether to exclude computed fields.

While this can be useful for round-tripping, it is usually recommended to use the dedicated round_trip parameter instead.

round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T]. warnings: How to handle serialization errors. False/”none” ignores them, True/”warn” logs errors,

“error” raises a [PydanticSerializationError][pydantic_core.PydanticSerializationError].

fallback: A function to call when an unknown value is encountered. If not provided,

a [PydanticSerializationError][pydantic_core.PydanticSerializationError] error is raised.

serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.

Returns:

A dictionary representation of the model.

model_dump_json(*, indent: int | None = None, ensure_ascii: bool = False, include: set[int] | set[str] | Mapping[int, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | Mapping[str, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | None = None, exclude: set[int] | set[str] | Mapping[int, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | Mapping[str, set[int] | set[str] | Mapping[int, IncEx | bool] | Mapping[str, IncEx | bool] | bool] | None = None, context: Any | None = None, by_alias: bool | None = None, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, exclude_computed_fields: bool = False, round_trip: bool = False, warnings: bool | Literal['none', 'warn', 'error'] = True, fallback: Callable[[Any], Any] | None = None, serialize_as_any: bool = False) str#
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#json-mode)

Generates a JSON representation of the model using Pydantic’s to_json method.

Args:

indent: Indentation to use in the JSON output. If None is passed, the output will be compact. ensure_ascii: If True, the output is guaranteed to have all incoming non-ASCII characters escaped.

If False (the default), these characters will be output as-is.

include: Field(s) to include in the JSON output. exclude: Field(s) to exclude from the JSON output. context: Additional context to pass to the serializer. by_alias: Whether to serialize using field aliases. exclude_unset: Whether to exclude fields that have not been explicitly set. exclude_defaults: Whether to exclude fields that are set to their default value. exclude_none: Whether to exclude fields that have a value of None. exclude_computed_fields: Whether to exclude computed fields.

While this can be useful for round-tripping, it is usually recommended to use the dedicated round_trip parameter instead.

round_trip: If True, dumped values should be valid as input for non-idempotent types such as Json[T]. warnings: How to handle serialization errors. False/”none” ignores them, True/”warn” logs errors,

“error” raises a [PydanticSerializationError][pydantic_core.PydanticSerializationError].

fallback: A function to call when an unknown value is encountered. If not provided,

a [PydanticSerializationError][pydantic_core.PydanticSerializationError] error is raised.

serialize_as_any: Whether to serialize fields with duck-typing serialization behavior.

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None#

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to “allow”.

model_fields = {'add_rsus': FieldInfo(annotation=bool, required=False, default=False), 'archive_dir': FieldInfo(annotation=Path, required=False, default=PosixPath('archive')), 'async_inline': FieldInfo(annotation=bool, required=False, default=False), 'backup_dir': FieldInfo(annotation=Union[Path, NoneType], required=False, default=None), 'calibration': FieldInfo(annotation=CalibrationConfig, required=False, default=CalibrationConfig(enabled=False, target_csv_dir=PosixPath('calibration_targets'), calibration_schedule=CalibrationSchedule(destination=IterationSchedule(first_iteration=1, last_iteration=21, every_x_iter=5, pattern=None, on_abm_init=False), mode=IterationSchedule(first_iteration=1, last_iteration=21, every_x_iter=5, pattern=None, on_abm_init=False), activity=IterationSchedule(first_iteration=1, last_iteration=21, every_x_iter=5, pattern=None, on_abm_init=False), timing=IterationSchedule(first_iteration=1, last_iteration=21, every_x_iter=5, pattern=None, on_abm_init=False)), destination_vot_max_adj=0.2, num_planned_activity_iterations=0, step_size=2.0)), 'capacity_arterial': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'capacity_expressway': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'capacity_local': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'data_dir': FieldInfo(annotation=Path, required=False, default=PosixPath('.')), 'db_name': FieldInfo(annotation=str, required=False, default=None), 'do_abm_init': FieldInfo(annotation=bool, required=False, default=False), 'do_pop_synth': FieldInfo(annotation=bool, required=False, default=False, validate_default=True), 'do_routing_MSA': FieldInfo(annotation=bool, required=False, default=False), 'do_skim': FieldInfo(annotation=bool, required=False, default=False, validate_default=True), 'fixed_connectivity_penetration_rates_for_cv': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'freight': FieldInfo(annotation=FreightConfig, required=False, default=FreightConfig(enabled=False, b2b_demand_synthesis_schedule=IterationSchedule(first_iteration=1, last_iteration=0, every_x_iter=1, pattern=None, on_abm_init=True), simulate_deliveries_schedule=IterationSchedule(first_iteration=5, last_iteration=31, every_x_iter=5, pattern=None, on_abm_init=True))), 'highway_skim_file_name': FieldInfo(annotation=str, required=False, default='highway_skim_file.omx'), 'ignore_critical_errors': FieldInfo(annotation=bool, required=False, default=False), 'incremental_loading': FieldInfo(annotation=IncrementalLoadingConfig, required=False, default=IncrementalLoadingConfig(enabled=False, profile=[])), 'kpis': FieldInfo(annotation=KpiFilterConfig, required=False, default=KpiFilterConfig(include_tags=(<KPITag.SYSTEM: 0>, <KPITag.POPULATION: 1>, <KPITag.ACTIVITIES: 2>, <KPITag.TRIPS: 4>, <KPITag.TNC: 5>, <KPITag.TRAFFIC: 6>, <KPITag.TRANSIT: 7>, <KPITag.VEHICLES: 8>, <KPITag.CALIBRATION: 10>, <KPITag.VALIDATION: 11>, <KPITag.CONVERGENCE: 12>, <KPITag.GLOBAL: 13>, <KPITag.PARKING: 14>, <KPITag.FREIGHT: 15>), exclude_tags=(<KPITag.HIGH_CPU: 60>, <KPITag.HIGH_MEMORY: 50>, <KPITag.BROKEN: 100>), verbose=False)), 'num_abm_runs': FieldInfo(annotation=int, required=False, default=2), 'num_dta_runs': FieldInfo(annotation=int, required=False, default=0), 'num_outer_loops': FieldInfo(annotation=int, required=False, default=1), 'num_retries': FieldInfo(annotation=int, required=False, default=1), 'num_threads': FieldInfo(annotation=int, required=False, default=48), 'polaris_exe': FieldInfo(annotation=Union[Path, NoneType], required=False, default=None, validate_default=True), 'population_scale_factor': FieldInfo(annotation=float, required=False, default=1.0), 'realtime_informed_vehicle_market_share': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'results_dir': FieldInfo(annotation=Union[Path, NoneType], required=False, default=None, validate_default=True), 'rsu_enabled_switching': FieldInfo(annotation=bool, required=False, default=False), 'rsu_highway_pr': FieldInfo(annotation=float, required=False, default=0.0), 'rsu_local_pr': FieldInfo(annotation=float, required=False, default=0.0), 'rsu_major_pr': FieldInfo(annotation=float, required=False, default=0.0), 'rsu_minor_pr': FieldInfo(annotation=float, required=False, default=0.0), 'scenario_main': FieldInfo(annotation=Path, required=False, default=PosixPath('scenario_abm.json'), validate_default=True), 'scenario_main_init': FieldInfo(annotation=Path, required=False, default=PosixPath('scenario_abm.json')), 'scenario_mods': FieldInfo(annotation=Union[Any, NoneType], required=False, default={}), 'scenario_skim_file': FieldInfo(annotation=Path, required=False, default=PosixPath('scenario_abm.json')), 'seed': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'skim_averaging_factor': FieldInfo(annotation=Union[float, NoneType], required=False, default=None), 'skim_interval_endpoints': FieldInfo(annotation=List[int], required=False, default=[240, 360, 420, 480, 540, 600, 720, 840, 900, 960, 1020, 1080, 1140, 1200, 1320, 1440]), 'skim_seed': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'start_iteration_from': FieldInfo(annotation=Union[int, str, NoneType], required=False, default=None), 'trajectory_sampling': FieldInfo(annotation=float, required=False, default=0.01), 'transit_skim_file_name': FieldInfo(annotation=str, required=False, default='transit_skim_file.omx'), 'use_numa': FieldInfo(annotation=bool, required=False, default=True), 'user_data': FieldInfo(annotation=Union[Any, NoneType], required=False, default=None), 'uuid': FieldInfo(annotation=str, required=False, default=''), 'workplace_stabilization': FieldInfo(annotation=WorkplaceStabilizationConfig, required=False, default=WorkplaceStabilizationConfig(enabled=False, schedule=IterationSchedule(first_iteration=1, last_iteration=31, every_x_iter=5, pattern=None, on_abm_init=False)))}#
property model_fields_set: set[str]#

Returns the set of fields that have been explicitly set on this model instance.

Returns:
A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias: bool = True, ref_template: str = '#/$defs/{model}', schema_generator: type[GenerateJsonSchema] = <class 'pydantic.json_schema.GenerateJsonSchema'>, mode: Literal['validation', 'serialization']='validation', *, union_format: Literal['any_of', 'primitive_type_array']='any_of') dict[str, Any]#

Generates a JSON schema for a model class.

Args:

by_alias: Whether to use attribute aliases or not. ref_template: The reference template. union_format: The format to use when combining schemas from unions together. Can be one of:

keyword to combine schemas (the default). - ‘primitive_type_array’: Use the [type](https://json-schema.org/understanding-json-schema/reference/type) keyword as an array of strings, containing each type of the combination. If any of the schemas is not a primitive type (string, boolean, null, integer or number) or contains constraints/metadata, falls back to any_of.

schema_generator: To override the logic used to generate the JSON schema, as a subclass of

GenerateJsonSchema with your desired modifications

mode: The mode in which to generate the schema.

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params: tuple[type[Any], ...]) str#

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Args:
params: Tuple of types of the class. Given a generic class

Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError: Raised when trying to generate concrete names for non-generic models.

model_post_init(context: Any, /) None#

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

classmethod model_rebuild(*, force: bool = False, raise_errors: bool = True, _parent_namespace_depth: int = 2, _types_namespace: MappingNamespace | None = None) bool | None#

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Args:

force: Whether to force the rebuilding of the model schema, defaults to False. raise_errors: Whether to raise errors, defaults to True. _parent_namespace_depth: The depth level of the parent namespace, defaults to 2. _types_namespace: The types namespace, defaults to None.

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj: Any, *, strict: bool | None = None, extra: Literal['allow', 'ignore', 'forbid'] | None = None, from_attributes: bool | None = None, context: Any | None = None, by_alias: bool | None = None, by_name: bool | None = None) Self#

Validate a pydantic model instance.

Args:

obj: The object to validate. strict: Whether to enforce types strictly. extra: Whether to ignore, allow, or forbid extra data during model validation.

See the [extra configuration value][pydantic.ConfigDict.extra] for details.

from_attributes: Whether to extract data from object attributes. context: Additional context to pass to the validator. by_alias: Whether to use the field’s alias when validating against the provided input data. by_name: Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError: If the object could not be validated.

Returns:

The validated model instance.

classmethod model_validate_json(json_data: str | bytes | bytearray, *, strict: bool | None = None, extra: Literal['allow', 'ignore', 'forbid'] | None = None, context: Any | None = None, by_alias: bool | None = None, by_name: bool | None = None) Self#
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Args:

json_data: The JSON data to validate. strict: Whether to enforce types strictly. extra: Whether to ignore, allow, or forbid extra data during model validation.

See the [extra configuration value][pydantic.ConfigDict.extra] for details.

context: Extra variables to pass to the validator. by_alias: Whether to use the field’s alias when validating against the provided input data. by_name: Whether to use the field’s name when validating against the provided input data.

Returns:

The validated Pydantic model.

Raises:

ValidationError: If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj: Any, *, strict: bool | None = None, extra: Literal['allow', 'ignore', 'forbid'] | None = None, context: Any | None = None, by_alias: bool | None = None, by_name: bool | None = None) Self#

Validate the given object with string data against the Pydantic model.

Args:

obj: The object containing string data to validate. strict: Whether to enforce types strictly. extra: Whether to ignore, allow, or forbid extra data during model validation.

See the [extra configuration value][pydantic.ConfigDict.extra] for details.

context: Extra variables to pass to the validator. by_alias: Whether to use the field’s alias when validating against the provided input data. by_name: Whether to use the field’s name when validating against the provided input data.

Returns:

The validated Pydantic model.

classmethod parse_file(path: str | Path, *, content_type: str | None = None, encoding: str = 'utf8', proto: DeprecatedParseProtocol | None = None, allow_pickle: bool = False) Self#
classmethod parse_obj(obj: Any) Self#
classmethod parse_raw(b: str | bytes, *, content_type: str | None = None, encoding: str = 'utf8', proto: DeprecatedParseProtocol | None = None, allow_pickle: bool = False) Self#
classmethod schema(by_alias: bool = True, ref_template: str = '#/$defs/{model}') Dict[str, Any]#
classmethod schema_json(*, by_alias: bool = True, ref_template: str = '#/$defs/{model}', **dumps_kwargs: Any) str#
classmethod update_forward_refs(**localns: Any) None#
classmethod validate(value: Any) Self#
add_rsus: bool#

Deprecated

rsu_highway_pr: float#

Deprecated

rsu_major_pr: float#

Deprecated

rsu_minor_pr: float#

Deprecated

rsu_local_pr: float#

Deprecated

rsu_enabled_switching: bool#

Deprecated

fixed_connectivity_penetration_rates_for_cv: float | None#
highway_skim_file_name: str#

Name of the highway skim file

transit_skim_file_name: str#

Name of the transit skim file

skim_interval_endpoints: List[int]#

An array of skimming intervals in minutes (since midnight) where each value denotes the end of the bin starting from the previous value or time 0

seed: int | None#

Simulation seed for reproducible random number generator seeding. Note 0 evaluates to a random number.

skim_seed: int | None#

Simulation skim seed for reproducible selection of skim locations and times. Note 0 evaluates to a random number.

user_data: Any | None#

user_data is a general purpose storage location that can used to carry study-specific parameters which need to be accessible inside callback methods across multiple iterations

scenario_mods: Any | None#

Scenario modifications that should be automatically applied on each iteration.

kpis: KpiFilterConfig#
__init__(*args, **kwargs)#

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

uuid: str#

Unique identifier of the model run. Not normally specified and will be populated with a random UUID if not provided

classmethod from_file(file: str | Path)#
classmethod from_dir(dir: str | Path, config_filename=None)#
pretty_print(indent='')#
normalise_paths(relative_to)#
load_scenario_json()#
set_from_dict(_dict)#

Set underlying properties using an input dictionary of values. This is very useful when applying a batch of overrides programatically (i.e. via EQ/SQL). The given dictionary should have keys that correspond to named members (i.e. { “num_abm_runs”: 7 }) along with the desired state of that property. Nested members can be configured with nested dictionaries or using a.b syntax (i.e. {“workplace_stabilization.enabled”: False} or {“workplace_stabilization”: {“enabled”: True}} ).

supply_file(**kwargs)#
demand_file(**kwargs)#
result_file(**kwargs)#
iterations()#
filter_based_on_start_iter(iterations, start_from=None)#
check_exe()#
classmethod val_results_dir(v, info: ValidationInfo) Path#
classmethod default_polaris_exe(v, info: ValidationInfo)#
classmethod default_scenario_main(v, info: ValidationInfo)#
classmethod default_do_pop_synth(v, info: ValidationInfo)#
classmethod default_do_skim(v, info: ValidationInfo)#